mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1621 I2C Temperatursensor


Autor: Sebastian B (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian B (Gast)
Datum:

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

Autor: Hartig (Gast)
Datum:

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

Autor: Sebastian B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den hilfreichen Kommentar.
Aber es funktioniert mittlerweile.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.