PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit I2c - bus und PCF8591



stefan1275
03.10.2005, 08:36
Habe ein Problem das bei meinem PCF 8591 der messwert schwankt egal ob ich den AI0 auf minus oder auf Plus lege der kleinste wert ist immer 128 und der höchste 255. Progrmmiert habe ich es mit dem CAVR - Compiler hier ein auszug des PRG´s


i2c_start();
i2c_write(i2c_adresse_chip4);
i2c_write(0);
i2c_stop();

i2c_start();
i2c_write(i2c_adresse_chip4 + 1);
i2c_olddata = i2c_read(0);
i2c_EB205_0 = i2c_read(0);
i2c_stop();


Referenzspannung ist über einem Spannungsteiler am PCF angelegt. der C hip wird auch im Bus gefunden.

Nun meine Frage was ist falsch ?

batti112
03.10.2005, 09:13
Hi Stefan!
Vll. hilft es wenn du das Problem ein wenig genauer beschreibst.
Was bezeichnest du als schwanken?
Der Unterschied zwischen i2c_olddata und I2cEB205_0 ?
(der erste Wert den du vom pcf ausliest ist ja nun konstant)

Ansonsten fallen mir leider nur 2 Dinge ein:
1. Ref Spannung wirklich konstant?
2. ist die zu Messende Spannung konstant?


Hoffe ich konnte ein wenig helfen
mfG
Batti

stefan1275
04.10.2005, 17:34
Vll. hilft es wenn du das Problem ein wenig genauer beschreibst.
Was bezeichnest du als schwanken?

-- Der Wert ist nicht konstant wenn Ich ihn z.B. auf + Referenz lege ist er nicht 255 sondern springt von 128 bis 255 auf und ab. lege ich ihn auf minus zeigt auch nicht weniger als 120.

Der Unterschied zwischen i2c_olddata und I2cEB205_0 ?
(der erste Wert den du vom pcf ausliest ist ja nun konstant)
gibt keinen da irgendwo ich gelesen hatte das man erst den alten wert und dann den neuen ausließt lasse mir aber beide auf dem LCD anzeigen einer steht immer auf 255 der andere springt wie beschrieben.

Ansonsten fallen mir leider nur 2 Dinge ein:
1. Ref Spannung wirklich konstant?
Habe jetzt die Ref Spannung über extra AKKU wo sonst nix dran läuft aber das Problem bleibt bestehen

2. ist die zu Messende Spannung konstant?
Übern Multimeter ja !

uwegw
04.10.2005, 18:16
großzügig blockkondensatoren und evtl ne drossel verteilen?

batti112
04.10.2005, 21:51
Würde mich da uwe anschließen.
Ein Multimeter ist viel zu träge um so etwas zu messen...
Denke deine Spannungsversorgung ist nicht die beste.
Probier mal die Spannung zu stabilisieren.
Oder nehm mal zum testen eine stabilisierte Spannungsquelle...

stefan1275
06.10.2005, 16:22
Habe jetzt Blockkondensatoren dran. Und habe die Spannung mit dem Ozi getestet kann keine Welligkeit erkennen aber es hatt bis lang noch keine verbesserung gegeben.

IngBo
07.10.2005, 05:58
Hi,

Ist der Auto_Inc_Flag gesetzt??
Welche Input-Mode verwendest du? Sind auch alle (4x) Eingänge angeschlossen?

Wenn der Auto_Inc_Flag gesetzt ist, dann wird die Register Adresse immer um eins inkrementiert (0-3, 0-2 oder 0-1 abhängig vom Input-Mode). d.h. du wirst immer abwechselnd andere Werte lesen.

Zum Testen kannst du den ControlByte mit 0x00 beschreiben. Damit ist der Auto_Inc_Flag Low, und 4 Single-ended inputs. Und an allen 4 Eingänge gleiche Spannung anlegen (nur zum Testen!!). Somit müsstest du immer den gleichen Wert lesen (wenn die Spannung sich nicht ändert)



IngBo

pebisoft
07.10.2005, 07:59
sag mal, der cavr kostet hier in deutschland ca 450 euro.
mit welcher version proggst du.
mfg pebisoft

stefan1275
07.10.2005, 14:48
Genau habe schon die Ganze zeit eine 0 im Controllregister dem nach schwankt es nur auf Kanal .

Ich programiere auf CAVR 1.2.4aLight hatt damal 99€ gekostet 4 Jahre her

stefan1275
11.10.2005, 16:10
So,

Noch mal Danke für die Mühe die Ich gemacht habe !

Der Fehler lag darin das Ich den Anschluß EXT des PCF8591 nicht auf Masse gelegt hatte. Daher das Problem jetzt steht der Wert wie´n Stein.

Bis zum nächsten Problem ! O:)

crowdy
14.11.2005, 14:44
HIho
Hab auch ein Problem mit dem PCF 8591. Nääämlich probiere ich diesen als ADC über die LPT Schnittstelle zu verwenden, da ich keinen Plan von Interrupts habe und man immer so ein Problem mit der Gleichzeitigkeit hat beim programmieren lass ich das SCL Signal von einem NE555 erzeugen.
Das SCL Signal liegt dann am PCF 8591 und am PC an.
Aber der PCF tut garnichts weder acknowledge oder irgendein anderes Signal. A0-A2 sind auf Masse das Addressbyte zum Lesen ist daher 145 und das Controlbyte 0. Empfangen tu ich aber nichts!


Die meisten Leute habe ja, so wie ich das bis jetzt gesehen habe den PCF über die serielle Schnitstelle angeschlossen. Heißt das vielleicht das es mit der LPT schnittstelle etwas umständlich ist. Also: Warum serielle Schitstelle?
Gibt es library's für I²C Verbindungen die man benutzen kann, denn ich hab das bis jetzt alles selber gemacht und dementsprechend ist das Programm ein wenig unzuerverlässig.
Hat hier jemand sonst noch irgendwelche Erfahrungen mit diesem IC gemacht die interessant sein könnten?


Ich bin für alle Antworten dankbar, denn wahrscheinlich muss ich nochmal von vorne anfangen ](*,)

uwegw
14.11.2005, 17:28
nen i2c-IC ohne benutzung des i2c-protokolls ansteuern??? die scl-leitung führt nicht immer ein gleichmäßiges taktsignal, es werden dort auch informationen (start/stop der übertragung) übertragen!

fütr deinen anwendungsfall gibts bessere lösungen:
zb den TLC549, ADC mit schieberegister-ausgang:
http://www.franksteinberg.de/e-tlc549.htm
http://www.franksteinberg.de/uni8ad.htm

crowdy
15.11.2005, 07:18
Hi, Wie meinst du das?
Also durch den NE555 krieg ich eigentlich ein gleichmäßiges Taktsignal und die Start Stop bedingungen habe ich auch programmiert.

SprinterSB
15.11.2005, 07:44
Und wie erkennst du nen Clock-Stretch?

crowdy
15.11.2005, 17:02
Hi
Ich weiß leider nicht genau was ein Stretch ist, aber das SCL Signal liegt an einem Eingang, nämlich an dem Pin "Error" am Port 2. Mit einer do while Schleife kann ich dann den Punkt finden an dem das Signal von high auf low fällt (oder auch umgekehrt) und an diesem orientiere ich mich dann.

Mein endziel ist es eigentlich eine GB CAM zum laufen zubringen und später an einem µC anzuschliessen. Zunächst wollte ich die CAM aber erstmal mit dem PC beherrschen und dafür brauche ich den ADC.

Vielen Dank für die antworten aber ich werde jetzt wohl erstmal alles umplanen und für dieses Interface dann wohl die COM Schnittstelle benutzen.

crowdy
22.11.2005, 17:40
Moin Moin
Also ersten kommt es anders zweitens als man denkt. Ich habe jetzt mit der LPT Schnittstelle weitergemacht und es funktioniert auch einigermaßen. "Einigermaßen" heißt das der PCF8591 auf mein Addressbyte reagiert, aber teilweise totalfalsche Werte zurückliefert.
Die Spannung am Eingang regel ich mit einem Poti zwischen 0V und 5V, ne Versuchsreihe hat ergeben, dass bis 2,5V der Wert den der PC ausgibt um den Faktor 1/2 falsch ist sobald die 2,5V Marke überschritten ist sind die Werte um den Faktor 2 falsch. Hier nochmal aufgeschrieben KA heißt keine Acknowledge beim senden des Addressbytes vom PCF.

U[mV](Voltmeter) --> U[mV](PC)
0 --> 20
200 --> 500
850 --> 1700
1200 --> 2420
1250 --> 2540
2000 --> 3900
2500 --> 4940
3000 --> 900 KA
3500 --> 1780 KA
4000 --> 2740 KA
4500 --> 3700 KA
5000 --> 5100 KA

Also hat jemand eine Idee wodran es liegen könnte? Das Programm, was ich geschrieben habe scheint an sich zu funktionieren. Es könnte auch irgendein elektrotechnisches Problem sein, also Pull-up's oder Pull-down's hab ich gar nicht eingebaut, da ich gar nicht genau weiss wozu diese Widerstände gebraucht werden. 8-[

Also ich bin für jede mich weiterhelfende Antwort sehr dankbar!