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?
Ansteuerung PCF 8591
Moderator: Guido Körber
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
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
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
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
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
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
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact: