PCF 8591 ansteuern mit Delphi

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
Klute
Posts: 6
Joined: Sun Feb 19, 2006 3:28 pm

PCF 8591 ansteuern mit Delphi

Post by Klute »

Hallo,

ja ich weiß, dass es schon so ein ähnliches Thema gibt, aber ich verstehe einfach net, über was die da reden.

Also ich hab den Chip PCF 8591, und würde gerne die 4 A/D-Wandler und dein einen D/A-Wandler nutzen.
Ich hab die zwei Pins des Chips also I2C-SDA und I2C-SCL mit dem I/O-Warrior 40 verbunden.
Da wär schon meine erste Frage, ob ich da noch was an den I/O-Warrior anschließen muss.

Meine zweite Frage lautet, wie ich den Chip nun mit Delphi ansteuern kann. Also der I/O-Warrior funktioniert einwandfrei nur ich hab davor noch nie etwas mit Chips und Hardwareadressen und so Zeugs gemacht, also freu ich mich auf jede Hilfe.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Ich zieh mir mal naher das Datenblatt und versuche mal die Umsetzung zu erklaeren. Das ist meist das schwierigste Problem.

An +5V und Masse muss der Chip bestimmt auch angeschlossen werden.
Es steht zwar zu vermuten das das als selbverstaendlich nicht erwaehnt wurde, aber wir haben schon alles erlebt.
HappyAura
Posts: 68
Joined: Sun Feb 27, 2005 2:13 pm

Post by HappyAura »

Hallo,
ich hab mit dem baustein auch mla rumgespielt, hier ist eine kleine übersicht über die ansteuerung, steht sonst aber auch soweit im Datenblatt.
die Werte in meinen beispielen sind alles hexwerte, d.h, 82 = 1000 0010
die reports sind diesem format dargestellt: rep ID | werte

IIC "anschalten"
01 | 01 00 00 00 00 00 00 00

Kanäle auslesen:
02 | 82 Writeaddr ControlByte
03 | AnzByte Readaddr

wenn Du alle adresspins des PCF mit GND verbindest, hast Du die Writeaddr 90 und Readaddr 91
Controlbyte könnte z.B. 40 =0100 0000 sein (setze analog output on, alle kanäle einzelnd auslesen, nach dem auslesen eines kanals nicht automatisch den kanal erhöhen, wähle kanal 00)
Achtung: das aktuelle ergebnis am eingang kommt immer einen zyklus verzögert an, d.h. man sollte 2 mal hintereinander wandeln, damit man den aktuellenpegel am AD eingang bekommt.

spich auslesen des kanals 0 könnte wie folgt aussehen:
02 | 82 90 40
03 | 02 91


setzen des digitalausganges kannst Du mit
02 |c3 writeaddr controlbyte WERT
also z.B.:
02 |c3 90 40 WERT

Testen, ob Deine schaltung so funktioniert kann man mit dem HDI Tool ganz gut (..\sampels\General HID Tools\SimpleHIDWrite.exe)
schaltest einfach oben auf complex interface, klickst unten einmal auf read und gibst dann deine Zahlen ein und bestätigst diese mit write. zur implementierung in delphi kann ich Dir nicht viel sagen, aber schau Dir doch mal die beispiele an, die sollten das ein wenig vereinfachen.

ich glaub ich hab mich ziemlich verworren und unstrukturiert ausgedrückt, aber vielleicht hilft es ja weiter.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Wenn man es mit dem SimpleHIDWrite hinbekommen hat, dann kann man recht leicht das MAXIM127-Beispiel umarbeiten.
HappyAura
Posts: 68
Joined: Sun Feb 27, 2005 2:13 pm

Post by HappyAura »

by the way, eine frage hab ich auch noch.
wenn ich 7 byte vom IOW lesen will, kommen ja 2 reports zurück, der zweite enthält ja nur noch ein byte vom I2C slave.
Wenn ich das mit dem simple-HDI-write mache, kommen auch beide reporte zurück, jedoch verwundert ich der zweite ein wenig:
03| 01 "wert" "5 werte aus dem alten report"
wird das vom IOW so zurückgeliefert bzw nicht überschrieben oder liegt das an dem Programm, dass der Report nicht mit nullen aufgefüllt ist? (frage: soll so sein oder kleiner bug?)


Gruß Martin
Guido Körber
Site Admin
Posts: 2880
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Kleine Schlamperei in der Firmware des IOW...

Ich setze den Buffer nicht auf Null bevor der nächste Report gebaut wird.
Klute
Posts: 6
Joined: Sun Feb 19, 2006 3:28 pm

Post by Klute »

Hi,

also vielen Dank für eure Hilfe.
Ich fahr jetzt leider erst mal in Urlaub, ich denk aber, dass des soweit klar ist.
Wenn nicht meld mich mich einfach wieder.

Hab keine Ahnung, was ich ohne des Forum machen würde :D
Post Reply