Moin, ich versuche seit 3 Tagen an einem 32-Bit-µC von Atmel die I²C-Schnittstelle bzw. das TWIM (Two-wire Master-Interface) in Betrieb zu nehmen. Allerdings ohne Erfolg. Ich möchte zunächst einfach nur ein 8-Bit-Register des Sensors auslesen, dafür ist es notwendig auf den Sensor zunächst schreibend zuzugreifen und ihm die Adresse des Registers, welches ausgelesen werden soll, zu schicken und anschließen lesend auf ihn zuzugreifen, um das Register auszulesen. Laut Handbuch des µC ist dafür folgender Ablauf nötig: WRITE followed by READ 1.Write CMDR with START=1, STOP=0, SADR, NBYTES=1 and READ=0 2.Write NCMDR with START=1, STOP=1, SADR, NBYTES=1 and READ=1 3.Wait until SR.TXRDY==1, then write data byte to transfer to THR 4.Wait until SR.RXRDY==1, then read data byte received from RHR In meinem Programm enable ich zunächst das TWIM, mache dann ein paar Einstellungen im ClockWaveformRegister und führe dann die Schritte 1-4 aus. Im Status-Register gibt es das Bit "VALID", es wird gesetzt, wenn das CMDR bzw. das NCMDR einen gültigen Befehl enthält. Leider wird dieses Bit bei mir zu keinem Zeitpunkt gesetzt. (Überprüft indem ich nach jeder Zeile Code geschaut bzw. mir über eine LED anzeigen lassen hab, ob das Bit gesetzt wurde) Dementsprechend läuft bei mir GAR NICHTS, eben weil dieses Bit nicht gesetzt wird...Ich habe das TWIM Kapitel im Handbuch mittlerweile 10mal gelesen und weiß einfach nicht was ich falsch gemacht habe... Ich hoffe mir kann hier jemand helfen!? Ich stelle gerne auch meinen Programmcode zur Verfügung ;-) Vielen Dank & besten Gruß, Hauke
Was ist denn los hier, ihr habt doch sonst immer so schlaue Ideen !? Ich bin echt frustriert...
Ich schliesse dann immer ein Oszilloskop an die Leitung. Dann kann man sehen, ob der Prozessor überhaupt sendet, was er sendet und ob der Sensor darauf antwortet. So kann man ein bisschen mehr sehen, an welchen Stellen das Programm hängt.
Es wird doch noch gar nichts gesendet, weil das "VALID"-Bit nicht gesetzt wird. Takt- und Datenleitung sind also die ganze Zeit auf "high".
Finde dazu kein Errata Sheet. Aber die werden jawohl keine µC verkaufen, bei dem die I²C (TWI) - Einheit nicht funktioniert!?
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.