Forum: Compiler & IDEs DS1621 per I2C ansteuern


von jochen (Gast)


Lesenswert?

Hi Zusammen,

habe mir i2cmaster zum programmieren einer I2C Verbindung
heruntergeladen. Mein Problem ist jetzt allerdings wie ich den DS1621
anspreche.

Anhand des Datenblattes hab ich mal folgenden Code generiert:

void main(void)
{
    outp(0xff, DDRC);  //Port C = Output
    outp(0xff, DDRD);  //Port D = Input

    for(;;)
    {
        for (t=0; t<1023; t++)   /* outer delay loop */
        {
          for(j=0; j<511;j++) /* inner delay loop */
          {
              k++;            /* just do something - could also be a NOP
*/
          }
      }

  i2c_init();
  ret = i2c_start(DS1621+I2C_WRITE);       // set device address and
write mode
  if ( !ret )
        {
            i2c_write(0xAA); //Daten senden damit Temperatur gelesen
werden kann
          ret = i2c_rep_start(DS1621+I2C_READ);
          if ( !ret )
          {
        temp1 = i2c_readAck();
        temp2 = i2c_readAck();
        outp(low_digit(temp1), PORTC);
        outp(high_digit(temp1), PORTD);
          }
        }
        i2c_stop();
    }
}

Leider bekomme ich damit nicht das gewünschte Ergebnis hin. Ich bekomme
immer eine 3 zurück, und nicht die Temperatur.

Kann mir einer sagen was ich falsch mache bzw. was ich vergessen habe.

Danke schon mal im Voraus, der Jochen

von jochen (Gast)


Lesenswert?

Achso,

hab ich ganz vergessen
#define DS1621 0x90
Adresse des DS1621 is 0

von jochen (Gast)


Lesenswert?

Also,

ich hab jetz vor der Messung mal noch ein 0xEE gesendet damit die
Messung überhaupt gestartet wird.

Nun hab ich noch das Problem das der werd nicht unter 24°C geht. Hab
aber am Anfang TL auf 0x0000 gesetzt.(Sollte also meiner Ansicht nach
auf 0°C runter gehen).

Vielleicht weis ja noch jemand Rat, sonst mussich halt das Datenblatt
noch mal komplett zerpflücken.

Der Jochen

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.