Hallo, ich versuche den ADS1115 anzusteuern. Im Prinzip spricht er auch mit mir über die 0x48 I2C-Adressse. Zur Initialisierung habe ich Config-Register 0x01 auf 0x8387 programmiert.Dies kommt auch richtig an. Leider liefert er mir im Conversion Register 0x00 nur genau ein Byte statt 2 Bytes ab. Das zweite Byte ist konstant FF (siehe Screenshot). Das 1. Byte ändert sich auch mit der Eingangsspannung auf dem 1. Kanal. Ich bin der Meinung ich machs genau wie im Datasheet beschriben, allein der Chip unterschlägt einfach Byte 2. Zur Sicherheit schaue ich auch direkt auf die echten I2C-Signale statt auf den C-Code des Controllers(siehe Screenshot). Vielleicht erkennt jemand meinen Fehler ?!?
Nach dem ersten Byte kommt beim Lesen ja auch ein NACK. Danach liest du Ruhepegel vom Bus... Ändere deine Lesefunktion! 2x lesen mit ACK, dann am Ende lesen mit NACK. Schöner I2C-Analysator. Was benutzt du da?
Bernhard S. schrieb: > Ändere deine Lesefunktion! 2x lesen mit ACK aber das ACK kommt doch vom Slave, das kann ich doch garnicht ändern...Wenn der Slave kein ACK sendet ?!?
Bernhard S. schrieb: > I2C-Analysator. Was benutzt du da? Intronix LogicPort
Gast
#4977716
Wolfram L. schrieb: > aber das ACK kommt doch vom Slave, das kann ich doch garnicht > ändern...Wenn der Slave kein ACK sendet ?!? Nein: beim Lesen nach dem ersten Byte muss es vom Master kommen, damit der Slave weiß, dass noch weiter gelesen werden soll.
Achim S. schrieb: > beim Lesen nach dem ersten Byte muss es vom Master kommen, damit > der Slave weiß, dass noch weiter gelesen werden soll. aarrrrg , klar - Du hattest völlig recht. Tut jetzt einwandfrei!! Vielen Dank Achim
Gast
#4977728
gern geschehen. Aber Bernhard hatte ja den Fehler entdeckt, nicht ich. Ich hab nur noch naträglich meinen Senf dazu gegeben :-)
Achim S. schrieb: > Bernhard hatte ja den Fehler entdeckt Oh sorry - hatte mich vertan DANKE Bernhard!!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.

