MMA7745 SPI Probleme AVR

Gast #1985898
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:
Gast
Ja der SPI Modus ist auf 0 eingestellt, das passt.
/CS kommt auch richtig, darauf trigger ich extern, daher sieht man es in 
den Screenshots nicht.
Das erste Bild zeigt die SDI Leitung.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.