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
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.