Temperatursensor ADT7301 mit ATmgea32 auslesen

Gast #1725864
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren