Forum: Mikrocontroller und Digitale Elektronik Temperatursensor ADT7301 mit ATmgea32 auslesen


von Jens Frohberg (Gast)


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

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
Noch kein Account? Hier anmelden.