TWIM (I²C) mit BMA020 und 32-Bit-Controller

Gast #2659703
Lesenswert?
• ▲
▼
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
Gast #2660864
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren