Forum: Mikrocontroller und Digitale Elektronik TWIM (I²C) mit BMA020 und 32-Bit-Controller


von Hauke (Gast)


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

von Hauke (Gast)


Lesenswert?

Was ist denn los hier, ihr habt doch sonst immer so schlaue Ideen !?
Ich bin echt frustriert...

von PittyJ (Gast)


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.

von Hauke (Gast)


Lesenswert?

Es wird doch noch gar nichts gesendet, weil das "VALID"-Bit nicht 
gesetzt wird. Takt- und Datenleitung sind also die ganze Zeit auf 
"high".

von Hauke (Gast)


Lesenswert?

Push!

von Hauke (Gast)


Lesenswert?

...

von Hauke (Gast)


Lesenswert?

push

von Hauke (Gast)


Lesenswert?

push!

von Hauke (Gast)


Lesenswert?

man man man...

von Michael .. (bigneal)


Lesenswert?

Erratasheet schon kontrolliert?

von Hauke (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.