Ich hab versucht den 12Bit ADC 'ADS7823' mit I²C Interface auszulesen... Die Schreib-Adresse, das Command-Byte und die Lese-Adresse werden korrekt Acknowledged... beim Auslesen der ersten 8 Bit bekomm ich allerdings ein negatives Acknowledge zurück und der gelieferte Wert ändert sich auch nur im Bereich von 0 bis 0,7V... von 0,7V bis 5V tut sich bei den 4 Bits nichtsmehr... Und alle weiteren Datenpakete die ich auslese sind voller Nullen... war nach dem Not-Acknowledged zwar zu erwarten... aber ich hab keine Ahnung warum das so ist... Ich denke nicht, dass ich den Chip zu schnell ansteuere... immerhin hat mein Board nur einen 11MHz Quarz und ich hab auch zusätzliche Warteschleifen eingebaut... außerdem funkioniert mein I²C LCD mittlerweile einwandfrei... Kann mir jemand helfen? Danke, Thomas...
Hi Thomas, wenn ich das beim Überfliegen richtig gesehen habe, liest Du nur ein mal vom ADC und damit nur 8Bit?! Gruß Andreas
Hab jetzt noch mal ins Datenblatt gesehen. Laut diesem, muss der Master dem Slave (ADC) nach den ersten 8Bit ein ACK geben und nicht umgekehrt. Dann können die nächsten 8 Bit ausgelesen werden. Gruß Andreas
Hi Andreas, Hab das im Datenblatt natürlich auch gelesen... komisch, ich dachte am Anfang schon, das sei ein Schreibfehler ^^" Das heißt ich muss ein mir noch ein Unterprogramm zum Acknowledge senden schreiben?! Sehr komisch... aber ich werds mal versuchen Ciao Thomas
Hmmm... das Datenblatt verwirrt mich... Der Master sendet doch erst nach dem 4. Datenwort (bzw. 8. Paket) ein Not-Acknowledge... zwischen den Paketen isses doch ein ganz normaler Standart-Acknowledge vom Slave...
Also die I²C-Schittstelle ist an und für sich byteorientiert, da werden keine Wörter ausgetauscht. Laut Datenblatt (SBAS180B von TI) muss der Master beim Lesen der 16Bit nach 8Bit ein Ack + senden und nach dem 16. ein noAck gefolgt von einem Stop. Das ist eigentlich auch bei I2C-EEPROMs so üblich. Gruß Andreas
Hmmm... funktioniert aber irgendwie trotzdem nicht... Wenn ich eine '1' als neuntes Bit rübersende ändert sich nichts, und wenn ich eine '0' schicke, verweigert der Chip das Commandbyte komischerweise nach dem ersten Programmdurchlauf =\ Entweder ist mein Protokoll falsch... das wäre bitter... oder irgendwas anderes passt nicht... Ich kann dir ja mal meinen aktuellen Code anhängen...
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.