DS1621 I2C Temperatursensor

Gast #352005
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.