Forum: Mikrocontroller und Digitale Elektronik DS1621 I2C Temperatursensor


von Sebastian B (Gast)


Lesenswert?

Hallo,
Ich habe da ein Problem mit dem o.g. Sensor in Verbindung mit einem
80C552.
Eigentlich sollte bis morgen ein kleines Programm laufen, das mir auf
nem 2x16 Zeichen Display die Temperatur ausgibt. Da ich aber erst heute
angefangen habe, hoffe ich, dass mir hier jemand helfen kann.



So wie ich das im Datenblatt verstanden habe muss ich wiefolgt
vorgehen:

Start
Adresse
Kommando eeh
Stop

Start
Adresse
Kommando aah
wiederholter Start
Adresse (mit LSB=1)
nun müssten im S1DAT zumindest schonmal die oberen 8 bit der Temp.
stehen.



Das letzte was ich bekomme ist eine 40h im Status, d.h. der Slave
scheint wohl zu reagieren. Daten schickt er jedoch nicht.


Hier ist mal das grobe Programm. Anstatt einen gewissen Statuswert
abzuwarten gehe ich einfach davon aus, dass nach der jeweils
eingebauten Zeitschleife ein ACK vom Slave kommt, da ich nach jedem
gesendeten Byte mir den Status habe ausgeben lassen.





mov S1CON, #E2h    ;I2C Bus starten
call zeit
;*********************************************************************
mov S1DAT, #10011110b  ;Slave Adresse (wenn alle 3 Kontakte offen sind)
clr STO
clr SI
call zeit


;********************************************************************
mov S1DAT, #eeh    ;Temperaturkonvertierung starten
clr STA
clr STO
clr SI
call zeit
setb STO        ;I2C Bus stoppen

;*******************************************************************
;*******************************************************************
mov S1CON, #E2h    ;I2C Bus starten
call zeit

mov S1DAT, #10011110b  ;Slave Adresse (wenn alle 3 Kontakte offen sind)
clr STO
clr SI
call zeit

;*******************************************************************
mov S1DAT, #aah    ;Kommandobyte Temperatur auslesen
clr STA
clr STO
clr SI
call zeit

mov S1CON, #E2h    ;wiederholte Startbedingung senden
call zeit

;*******************************************************************
mov S1DAT, #10011111b  ;Slave Adresse (wenn alle 3 Kontakte offen sind)
clr STO
clr SI
call zeit


mov p1, S1STA    ;in S1STA steht 40h, d.h. der Slave ist da



M f G
Sebastian

von Sebastian B (Gast)


Lesenswert?

Sorry für das Doppelposting, ist mir schonmal hier passiert. Ich klicke
aber garantiert nicht 2 mal.

von Hartig (Gast)


Lesenswert?

Als erstes einen Lenz schieben, und dann doch mal arbeiten müssen.
Schicksal

von Sebastian B (Gast)


Lesenswert?

Danke für den hilfreichen Kommentar.
Aber es funktioniert mittlerweile.

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.