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?
> 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?
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
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
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.
Nachtrag zum Code Beim schönformatieren ist versehentl. folgendes rausgeflogen: #define F_CPU 1000000UL
Hi >Habe jetzt deinen Hinsweis berücksichtigt, aber leider sendet der Sensor >immer noch nicht. Vielleich solltest du mal den SS-Pin auf Ausgang schalten. MfG Spess
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.
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
Das gibts doch nicht. Ich hatte MOSI und MISO miteinander vertauscht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.