Gast
#2659703
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