Problem mit PCF8591

Gast #254856
Lesenswert?

Hallo,

ich habe ein Problem mit meinem PCF8591. An und für sich funktioniert
der Chip super. Mein Problem ist nur das die Reihenfolge der Kanäle
durcheinander (genauer gesagt um einen versetzt ist).
Ich habe 4 Potis an die 4 AD Eingänge angeschlossen.
Bei Kanal 1 lese ich Poti 2, bei Kanal 2 Poti 3, Kanal 3 Poti 4 und bei
Kanal 4 Poti 1.
Ich hatte das Problem schon vor ein paar Jahren gehabt, aber da ist das
untergegangen.
Weiß jemand von diesem Problem ?
Die Kanäle lese ich  direkt aus, also nicht mit Autoincrement. Die
Konfiguration des A/D Wandlers (4 single-ended) ist auch richtig.
Liegt es vielleicht daran das ich den aktuell gewählten Kanal 2 mal
lesen muß ? Hat jemand vielleicht einen Tip bzw. ähnliche Probleme
gehabt ?

Gruß
Rene
Gast #254857
Lesenswert?

"Mein Problem ist nur das die Reihenfolge der Kanäle
durcheinander (genauer gesagt um einen versetzt ist)."

um eines versetzt? liegt aber nicht daran, dass die nummerierung bei 1
beginnt und du bei 0 oder umgekehrt?

mfg, mathias
Gast #254858
Lesenswert?

Hallo Mathias,

die Nummerierung fängt bei schon bei 0 an.
Demnach : Kanal 0 = Poti 1, Kanal 1 = Poti 2, Kanal 2 = Poti 3,
Kanal 3 = Poti 0. (wenn ich denn mein Poti 1 Poti 0 nenne)
Also eine 0 sende ich schon. (zumal ich 2 8591 an einem Bus hängen
habe, und über eine zentrale Routine somit 8 Potis abfragen kann)
Weiß da echt nicht mehr weiter. Wenn gar nichts hilft muß ich über eine
Tabelle die Reihenfolge umsortieren.
Das Verhalten ist auch immer reproduzierbar (also nicht mal so mal so,
sondern immer gleichbleibend)

Gruß
Rene
Gast #254860
Lesenswert?

Hallo Mathias,

also ich wüsste nicht wo ich einen Fehler gemacht haben könnte.
Zuerst das Config-Register im 8591 schreiben (Kanal, Autoincrement,
Konfiguration der AD Eingänge, DA-Wandler) und dann den 8591 auslesen.
Muß wohl nochmal weiterforschen. Wenn alle Stricke reissen, dann
umsortierung per Tabelle. (Ekelhaft, aber ich weiß nicht woran es
liegen könnte, und I2C ist ja nu wirklich nicht schwer, zumal ich die
I2C per Software realisiert habe :-(( )

Schönen dank
Rene
Gast #254861
Lesenswert?

Hi,

hast Du die richtige Auslesesequenz verwendet?

k1:=iic_rack(); ( Do not use first value )
k1:=iic_rack();
k2:=iic_rack();
k3:=iic_rack();
k4:=iic_rnak();
iic_stop;

Der erste Wert wird verworfen.
Dann auslesen, der letzte mit einem No Acknowledge.

Gruss
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren