RP6 I2C Temp Sensor DS1621 abfragen

Gast #3035039
Lesenswert?

Hallo ich bin am verzweifeln. Ich hab einen RP6 und will über I2C den 
DS1621 abfragen. Jedoch erscheinen nur unsinige Werte. Die Adress Pins 
sind alle auf Ground gelegt. Kann mir vielleicht jemand weiter helfen?
1
int main(void)
2
{
3
   initRP6Control();
4

5
   I2CTWI_initMaster(100);
6
  
7
   while(true)
8
   {
9
      uint8_t DS1621Temp[2];
10

11
      I2CTWI_transmit2Bytes(0x90,0x90,0xAA);
12
      mSleep(25);
13
      I2CTWI_transmitByte(0x91, 0x91);
14
      I2CTWI_readBytes(0x91, DS1621Temp, 2); 
15

16
      writeString_P("Temp:");
17
      writeInteger(DS1621Temp[0], DEC);
18
      writeInteger(DS1621Temp[1], DEC);
19
      writeChar('\n');
20

21
      mSleep(250);
22
      }
23
   return 0;
24
}
Gast #3035061
Lesenswert?

Ist Datenblatt-Lesen denn so schwer?
Zuerst musst Du die Temperatur messen (Start Convert T [EEh]), dann 
lange warten, dann das Ergebnis abholen.

      I2CTWI_transmitByte(0x91, 0x91);
Der Chip kennt keinen Befehl 91.
Gast #3035079
Lesenswert?

Sorry ja hast recht hätte ich selber lesen können, trotzdem Danke für 
deine Antwort. Mein Code sieht nun wie folgt aus, jedoch kommt trotzdem 
nur blödsinn raus. Jetzt spuckt er mit 255240 aus
1
  while(true)
2
  {
3
    uint8_t DS1621Temp[2];
4

5
    I2CTWI_transmitByte(0x90,0xEE);
6
    mSleep(100);
7
    I2CTWI_transmitByte(0x91,0xAA);
8
    I2CTWI_readBytes(0x91, DS1621Temp, 2); 
9

10
    writeString_P("Temp:");
11
    writeInteger(DS1621Temp[0], DEC);
12
    writeInteger(DS1621Temp[1], DEC);
13
    writeChar('\n');
14

15
    mSleep(250);
16
  }

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