Hallo! Ich bin gerade dabei, einen PCF8591 an ein Raspberry Pi anzuschließen. Bis jetzt bin ich leider gescheitert... Ich habe das Datenblatt schon mehrmals studiert, doch leider ohne Erfolg. Das ganze programmiere ich in Python. Da ich als I2C-Modul das von Adafruit verwende, da ich andere Module damit anspreche, kann ich auch nicht das fertige Modul von quick2wire verwenden. Konkret will ich: Adresse: 0x4d Single Ended Mode Auto-Increment Output disabled und anschließend die Werte als Dezimalzahlen einlesen. Ich würde mich über eine genaue Erklärung bzw. über eine Lösung wirklich freuen!
Hallo Peter, die Frage von Spess kann ich nur wiederholen! Woher hast du diese Zahl? Ich habe es nicht so mit HEX-Zahlen; mit Binär kann ich besser leben. Hex 0x4d = 77 dez. Was bei I2C immer wieder gerne vergessen wird, die 7-Bit Adresse mit 2 zu multiplizieren, um die Adresse des Bausteins zu erreichen; Bit 0 sagt eben nur 'Lesen' oder 'Schreiben'. Ein 'ACK' müsstest du schon sofort erhalten bevor der ganze Palaver losgeht! Falls nicht -> Stress.... Deine Dez. 77 passen in kein Raster für einen PCF8591! Es gibt ja welche mit unterschiedlichen Adresssen. Deine ist sehr krumm. Da solltest du nochmal nachsehen. 73 Wilhelm PS: So Etwas habe ich vor mehr als 20 Jahren unter Turbo-Pascal3 an der parallelen Schnittstelle auf die Beine gebracht. Die Programmierung von I2C-ICs.. -> Kinderkram... Selbst bei AVR-Controllern unter BASCOM - mit frei zu definirieden Pins - kein Problem.
Hallo! Die Adresse kommt so zustande, dass ich einfach mit einem Codierschalter die Pins für die Adress-Einstellung gegen +3.3V oder GND schalte. Somit ist die Adresse eigentlich willkürlich gewählt und ich kann sie auch ändern. Da ich zwei PCF8591 habe, habe ich nur drauf geachtet, dass sie unterschiedliche Adressen haben. Aber was 0x4d betrifft: Fixe Adresse A2 A1 A0 1 0 0 1 1 0 1
Hi Und du bist sicher, das deine Software diese Adresse auch automatisch um ein Bit nach links shiftet? MfG Spess
Sollte kein Problem sein, da es bei meinem LCD-Display ja auch klappt. Ich hab mal die Python-Klasse, die ich verwende, in den Anhang gegeben.
Dann probier doch einfach mal die beiden korrekten Adressen aus: 1001 1010 = 0x9A WRITE 1001 1011 = 0x9B READ
Es funktioniert! Hab in der I2C-Klasse was übersehen. Deshalb hab ich auch immer die falsche Bitfolge geschickt. Trotzdem danke für eure Hilfe!
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.