MMA7745 SPI Probleme AVR

Gast #1985898
Lesenswert?

Hallo Zusammen,

folgendes Problem: Ich versuche einen MMA7745 (Beschleunigungssensor von 
Freescale) per SPI@4MHz am ATMega32@16MHz zu betreiben.

Hier meine Schreibroutine / Initialisierungsroutine:
1
PORTB &= ~(1 << PB4);  // SS auf LOW w�hrend der �bertragung
2

3
SPDR  = 0b10101100;              // send address 0x16 Mode Control Register (Read/Write)
4
while (!(SPSR & (1<<SPIF)))      // wait until address is sent
5
    ;
6
x = SPDR;                // dummyread
7
SPDR  = 0b01001000;              // send data: 2g measurement range, measurement mode, no selftest
8
                                      //            SPI 4 wire mode, data ready output on INT1
9
while (!(SPSR & (1<<SPIF)))      // wait until data is sent
10
    ;
11
x = SPDR;                // get 8bit value of x axis
12
PORTB |= (1 << PB4);  // SS auf HIGH zum Beenden der �bertragung

.. und die Leseroutine:
1
acc_x = 0;
2
PORTB &= ~(1 << PB4);  // SS auf LOW w�hrend der �bertragung  
3

4
SPDR  = 0b00001100;              // send address 0x06 8 bits output value X (Read)
5
while (!(SPSR & (1<<SPIF)))      // wait until address is sent and reception complete
6
  ;  
7
x = SPDR; //dummy read
8

9
SPDR = 0x00;//Daten werden mit dem N�chsten Transfer gesendet
10
while (!(SPSR & (1<<SPIF)))//Warten bis Transfer abgeschlossen ist
11
  ;
12
PORTB |= (1 << PB4);
13

14
acc_x = SPDR; //Empfangene Daten Auslesen

Das Schreiben sieht auf dem Scope ganz gut aus.
Nur beim auslesen der Beschleunigungswerte sieht man seltsames.
Manchmal sind Daten vorhanden die schnell wechseln und über alle 16 SCK 
Takte verteilt sind, dann wieder gibts es über Sekunden hinweg ein 
festes Datum und zu guter letzt sieht man gar keine Aktivität mehr.

Ich habe hierzu einige ScopeScreenshots angehängt.
Weiß jemand was da falsch läuft?
Angehängte Dateien:

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