Hallo zusammen, ich versuche derzeit (bisher vergeblich), den AD-Wandler PCF 8591 mit einem Atmega32 auszulesen. Verbindung zwischen µC und PC ist über USB vorhanden, so können die Werte direkt weitergesendet werden. i2c_init(); i2c_start(0x90); i2c_write(0x04); i2c_stop(); i2c_start(0x91); i=i2c_readNak; send(i); Das ist mein Code. Die Initialisisierung und Addressierung funktioniert, die Rückgabewerte der Funktionen bestätigen das (Ich benutze die I2C Master library von Peter Fleury). Was nicht funktioniert, ist das Lesen vom AD-Wandler. Folgende Beobachtung habe ich gemacht: Wenn ich den AD-Wandler (wie oben) mit der Funktion i2c_readNak (Einmaliges Auslesen, danach Stopbedingung) auslese, kommt immer 5F als Wert zurück. Benutze ich die Funktion ic2_readAck wird immer der Wert 71 gesendet. Und wenn ich als dritte Möglichkeit nicht den Rückgabewert der Funktion als gewandelten Wert auslese sondern direkt das TWDR-Register, bekomme ich 00 als Wert. Hat irgendjemand eine Idee, wo ich nach meinem Fehler suchen könnte? Bin leider ziemlich ratlos und weiß nicht, was ich noch abklopfen könnte. Die Beschaltung habe ich angehängt, ist ein wenig unübersichtlich aber ich denke, man kann das Wesentliche erkennen.
Ich habe es geschafft diesem Baustein einen Digitalen Wert abzuringen, also AD funktioniert. Nur Digital -> Analog will gar nicht. Was hat es mit AGND auf sich, muss ich das extra legen? oder offen hängen lassen, messe ich meine analog. spannung hiergegen? irgendwie auf GND muss ich die aber legen. MfG
der trick ist leicht, man mache alles in einem rutsch. keine einzelnen sendeoperationen sondern als block, array, wie auch immer in einer folge senden. sonst nimmt er das datenbyte wieder als befehlsbyte auf. mfg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.