Forum: Mikrocontroller und Digitale Elektronik Problem mit PCF8591


von TheMason (Gast)


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

von Mathias (Gast)


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

von TheMason (Gast)


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

von Mathias (Gast)


Lesenswert?

naja dann geh ich von einem fehler in deiner ansteuerung aus ..
hardwareemulator hast du ja keinen oder? sonst könntest du das ganze
mal durchsteppen

von TheMason (Gast)


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

von Andreas Hesse (Gast)


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

von TheMason (Gast)


Lesenswert?

Hallo Andreas,

erstmal danke für den Tip, werd ich mal nachschauen. (Hab den Code
gerade nicht zur Hand)

Gruß
Rene

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.