Gast
#2784880
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?