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