Bekomme MEMS Accelerometer nicht enabled

Gast #2784880
Lesenswert?
• ▲
▼
Hi,

bekomme meinen Sensor nicht zum laufen.
Um den Sensor zu starten muss man 2 Bytes per SPI übertragen.

Hier der link zur Beschreibung:
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00272379.pdf

Auf Seite 32 unter 9.1 2.Absatz steht, dass man lediglich den Wert 0x47 
in das CTRL_REG1 schreiben muss.
Wie man das macht, wird auf Seite 15 unter 4.2.3 im Timing Diagramm 
beschrieben.

Hier mein Code in gekürzter Form:


void SPI_MasterInit(void)
{
  DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);    //Set MOSI and SCK 
output, all others input
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);    /* Modus 0,Enable 
SPI, Master, set clock rate fck/128  */
}

void SPI_MasterTransmit(uint8_t adress, uint8_t data)
{
  DDR_SPI &= ~(1<<DD_SS);      //activate SS pin

  SPDR = adress ;          // Start transmission of adress
  while(!(SPSR & (1<<SPIF)))    // Wait for transmission complete
    ;
  SPDR = data ;            // Start transmission of data (register)
  while(!(SPSR & (1<<SPIF)))    // Wait for transmission complete
    ;

  DDR_SPI |= (1<<DD_SS);      //deactivate SS pin
}

int main(void)
{
  SPI_MasterInit();  //SPI initialization

  SPI_MasterTransmit(CTRL_REG1, 0x47);  //write protocol, CTR_REG


  return 0;
}


Wo liegt mein Fehler?
Gast #2784903
Lesenswert?
• ▲
▼
> Wo liegt mein Fehler?
1. Vollständiger Quellcode fehlt.
2. Falsches Datenblatt verlinkt.

> DDR_SPI &= ~(1<<DD_SS);      //activate SS pin

Was wolltest du hier machen?
SS von input auf output umschalten?
Gast #2784917
Lesenswert?
• ▲
▼
Hi

Wie viele Threads willst du eigentlich noch aufmachen?

Beitrag "SPI SS pin active und passiv verhindert transmission complete"

Der stammt doch auch von dir:

Beitrag "Re: 3 Achsen MEMS Beschleunigungs Sensorkit"

>Wo liegt mein Fehler?

Du hast das Datenblatt nicht gelesen. Wenn im Mastermode der SS-Pin ein 
Eingang ist reicht dort ein L um die SPI in den Slavemode zu versetzen. 
Und dann kannst du Senden bis du schwarz wirst.

MfG Spess
Gast #2785657
Lesenswert?
• ▲
▼
Tim schrieb:
>> Wo liegt mein Fehler?
> 1. Vollständiger Quellcode fehlt.
> 2. Falsches Datenblatt verlinkt.

Sorry wegen des falschen links.
Hier ist der vollständige code im Anhang.



>> DDR_SPI &= ~(1<<DD_SS);      //activate SS pin
>
> Was wolltest du hier machen?
> SS von input auf output umschalten?

Ich hatte das aus einem Codebeispiel übernommen, da ich dachte dass das 
so gehört.
http://www.ermicro.com/blog/?p=1050         File Name    : mcp23s17.c
Angehängte Dateien:
Gast #2785662
Lesenswert?
• ▲
▼
spess53 schrieb:
> Hi
>
> Wie viele Threads willst du eigentlich noch aufmachen?

Sorry wollte niemanden verärgern.
Ich wollte lediglich Teilprobleme auf andere Threads auslagern.
Das werde ich zukünftig unterlassen.


> Du hast das Datenblatt nicht gelesen. Wenn im Mastermode der SS-Pin ein
> Eingang ist reicht dort ein L um die SPI in den Slavemode zu versetzen.
> Und dann kannst du Senden bis du schwarz wirst.

Habe jetzt deinen Hinsweis berücksichtigt, aber leider sendet der Sensor 
immer noch nicht. Der aktuelle Code volständige Code liegt jetzt bei.
Gast #2785930
Lesenswert?
• ▲
▼
spess53 schrieb:

> Vielleich solltest du mal den SS-Pin auf Ausgang schalten.


Hatte SS vor deinem Hinweis:

>Du hast das Datenblatt nicht gelesen. Wenn im Mastermode der SS-Pin ein
>Eingang ist reicht dort ein L um die SPI in den Slavemode zu versetzen.
>Und dann kannst du Senden bis du schwarz wirst.

schon als Ausgang, funktioniert ja leider auch nicht.
Gast #2785957
Lesenswert?
• ▲
▼
Hi

>Hatte SS vor deinem Hinweis:

>>Du hast das Datenblatt nicht gelesen. Wenn im Mastermode der SS-Pin ein
>>Eingang ist reicht dort ein L um die SPI in den Slavemode zu versetzen.
>>Und dann kannst du Senden bis du schwarz wirst.

>schon als Ausgang, funktioniert ja leider auch nicht.

Das SS-Pin, vorausgesetzt es ist mit CS vom Slave verbunden, muss als 
Ausgang konfiguriert sein und vor einer Übertragung auf L gesetzt 
werden.

MfG Spess

Antwort schreiben

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.

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.