Ansteuerung PCF 8591

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
dawi
Posts: 2
Joined: Thu Dec 22, 2005 10:49 pm

Ansteuerung PCF 8591

Post by dawi »

Habe mit einem IO-Warrior 40 und Delphi eine kleine Steuerung gebaut.

Wollte die Steuerung um I2C-Bausteine erweitern. PCF8574 und TDA 8444 sind
implementiert und funktionieren. Habe jedoch Probleme mit der Implementierung
des PCF 8591. Ich will den A/D-Wandler-Teil des Bausteins nutzen. Schaffe es
aber nicht Daten einzulesen.
Den D/A-Teil bekomme ich angesprochen. Dies funktioniert.

Nehme an ich mach etwas falsch beim Ansprechen des PCF 8591. Will jeden
anlogen Eingang einzeln Auslesen.

Folgende Daten zur Ansteuerung des PCF 8591 benutze ich.
1. Adress-Byte 1 0 0 1 a2 a1 a0 r/w
2. Control-Byte 0 1 0 0 0 0 x y (x, y steht für einen der 4 Eingänge)

Habe versucht wie folgt Daten einzulesen:

1. Versuch mit zwei Reports:

ReportID: $03
1: Count = $00
2: Adresse + 1 = 145

ReportID: $03
1: Count = $01
2: Control = 64

Zweiter Report bricht ab mit Fehler.

2.Versuch mit einem Report
ReportID: $03
1: Count = $01
2: Adresse +1 = 145
3: Control = 64

Hier bekomme ich zwar Daten zurück geliefert aber Irgendwelche und
nicht bezogen auf die Spannungsspegel die an den Eingängen eingestellt sind.

Noch viele weitere Versuche ….. immer unsinniger.

Was mach ich falsch bzw. wie macht man es richtig?
Danke, Gruß Michael
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Funktion und IIC völlig falsch verstanden.

Das Control Byte kriegt man in den Chip nur rein indem man einen Schreibbefehl benutzt. Bei IIC geht das erste Byte, also Adresse plus R/W Bit, immer vom Master zum Slave, danach bestimmt das R/W Bit die Richtung. Man kann also niemals als Bestandteil eines Read ein zweites Byte an den Slave übertragen.

Also erst mal Write Command:
$02 - Report ID
$C2 - 2 Bytes und Start/Stop generieren
$xx - Adresse plus R/W
$cc - Command

Dann den Read:
$03 - Report ID
$02 - 2 Bytes lesen
$xx - Adresse plus R/W
dawi
Posts: 2
Joined: Thu Dec 22, 2005 10:49 pm

Post by dawi »

Hallo,

danke. Funktioniert jetzt, wenn ich so vorgehe wie beschrieben.

Die Doku zum Warrior hat mir, da halt eben nicht geholfen.
Danke, Gruß Michael
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Der Beispielcode würde da aber helfen, EEPROMs am IIC funktionieren nach dem gleichen Prinzip und für den 24C02 haben wir ein Beispiel dabei.
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

hi dawi,

ich hab hier auch den pcf 8591 und habe im datenblatt hinten bei den beispielen für den anschluss der ad-wandler gesehen, daß die beiden iic-datenleitungen mit zwei pull-up-r's nach Vcc abgeschlossen sind.

Ist das richtig so? Ist das nötig? Wie hast Du das gemacht?
ich hoffe jemand von euch kann mir noch dieses wochenende helfen.
ich wünsche allen ein schönes osterwochen-ende
spyro
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Das ist nicht nötig, der IO-Warrior hat interne Pull-Ups.
spyro
Posts: 23
Joined: Fri Apr 14, 2006 8:13 pm

Post by spyro »

alles klar, danke.
dann werd ich mal loslegen mit dem layout....
Post Reply