www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Temperatursensor I2C Assembler


Autor: pacer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich quäle mich jetzt schon ne ganze Weile mit den I2C Tempsensoren rum.
Im Moment hab ich den DS1631 dran.Soweit scheint alles zu funktionieren.

Ich sende das Startbit anschließend die SL_R-Adresse und bekomme ein 
Acknowledge zurück. Ich empfange das MSB-Tempbyte uns sende ein Ack. Ich 
bekomme das LSB und sende kein Ack anschließend ein Stop und das ganze 
fängt von vorn an.

Merkwürdigerweise ist das MSB immer 09 was zufällig oder auch nicht im 
Zusammenhang mit dem LSB die Slaveadresse (9F) ist. das LSB ist immer 
F0.
Die Null wäre ja schon richtig, da die ersten 4 Bits immer Null sind 
(12-Bit Auflösung) Für Raumtemperatur auf jeden Fall zu niedrig.
Zwischen 2 Zyklen vergehen mindestens 2 Sekunden.

Ich habe nun keine Ahnung wo ich noch suchen soll, vielleicht kann das 
Programm ja jemand mal für mich anschauen oder gar testen.

Gruß, Jürgen

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du ein Oszi / Logicanalyzer?

Der große Vorteil bei I2C ist, dass man ihn beliebig langsam machen 
kann.

Sogar so langsam, dass man an die beiden Leitungen LEDs anschließen kann 
zum "Mitlesen".
Das würde ich Dir empfehlen.
Den DS1631 anzusteuern haben schon tausende geschaft, und ich bin mir 
sicher, Du wirst der Nächste sein.
Beitrag "Re: Anfänge ins Programmieren!"
Er verhält sich exakt so wie im Datasheet beschrieben.

Außerdem gibt es genug Codebeispiele. Suche in
http://www.mikrocontroller.net/search
nach
+DS1631 +pic* (8 Treffer)
oder
+ds1631 +assembler
oder
+ds1631 +asm

Speziell der
Autor: Klaus Ra. (klara)
hat ja Erfahrung mit dem DS1631. Schick ihm doch mal ne PM.

Autor: pacer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, leider gibt es in Assembler nicht soviele Codebeispiele, zumal 
einige davon auch das I2C in Software realisieren.
Zumindest hab ich es jetzt hinbekommen, nachdem ich das Datenblatt mir 
zum 20. mal angeschaut habe.

Nächste Frage wäre die Umwandlung in eine Temperatur.
Jetzt mal unabahängig davon ob es Sinn macht oder nicht, der Sensor hat 
eine Auflösung von 12 Bits. Ein Digit macht 0,0625°C.

wäre es jetzt sinnvoll den Temperaturwert mit 625 zu multiplizieren und 
anschließend durch 10.0000 zu dividieren?
Oder wie würdet ihr die Umrechnung machen?
Fließkomma-Arithmetik würde ich vermeiden wollen.

Gruß, pacer

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Vielen Leuten hier im Forum ist die Mathematik so fremd, daß sie mit 
Gleipunktarithmetik um sich werfen, ohne zu wissen was sie tun.
Du bist glaub ich einer von denen, die spontan (aus einem Bauchgefühl?) 
den richtigen Ansatz finden. Das Normalisieren (Multiplikation mit einem 
Skalierungsfaktor - bei dir 625 ) und das anschließend korrekte Setzen 
des Dezimalpunkts (in Deutschland Komma) führt zum richtigen Ergebnis. 
Dies gilt für deine Temperatursensoren natürlich nur für die 
Nachkommastellen im LSB! Das MSB ist, abgesehen vom Zweierkomplement bei 
Minustemperaturen, bereits im richtigen Format.
Für ganz einfache Zwecke habe ich die 16 möglichen Nachkommawerte auch 
schon mal über eine einfache Tabelle zur Anzeige gebracht. Nicht 
elegant, geht aber schnell, braucht wenig Platz und von "Außen" sieht 
man es nicht.

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.