www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMA7745 SPI Probleme AVR


Autor: Alex (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

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

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

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

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

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

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

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?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du den richtigen SPI-Modus eingestellt?
Zeig doch auch mal ein Bild von der SDI-Leitung...

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat keiner eine Idee?
Ich häng schon seit Tagen fest..

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.