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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.