Gast
#1725864
Moin! Ich möchte den ADT7301 per SPI auslesen. Er gibt mir auch immer fein Werte zurück, jedoch immer 65°C zu hoch. Was mache ich falsch? Hier die main und die Funktion zum auslesen: int main (void) { //SCK = PB7 //MISO = PB6 //MOSI = PB5 //SS = PB4 //CS1 = PB0 Tempsensor ADT7301 //CS2 = PB1 Beschleunigungssensor ADXL345 DDRB|=(1<<PB4); // CS /SS PORTB&=~(1<<PB4); DDRB|=(1<<PB0)|(1<<PB1); // CS1=PA5 und CS2=PA4 PORTB|=(1<<PA0)|(1<<PA1); // MISO Eingang PB3 DDRB&=~(1<<PB6); // MOSI Ausgang PB2 DDRB|=(1<<PB5); PORTB&=~(1<<PB5); // SCK Ausgang PB1, Hi DDRB|=(1<<PB7); PORTB&=~(1<<PB7); // SPI initialisieren SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); SPDR=0; uart_init(); rprintfInit(putch); rprintf("Test\n"); float temp; int rtemp; while(1){ temp=readtemp(); rtemp=(int)temp; rprintf("Temperatur %d \n",rtemp); temp=0; rtemp=0; */ } } float readtemp(void){ unsigned char tl, th; int t; float temp; cs1lo(); th=spiRecv(); tl=spiRecv(); cs1hi(); t=((th<<8)+tl); temp=t/32; return temp; } Ich bekomme immer Werte zwischen 82 und 87°C zurück. Was nun? Hat jemand einen Tip? Ein Problem der SPI Einstellungen? alsdenn, Jens