mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C Beispielprogramme für AT89C5131


Autor: Werner Salcher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Habe mir eine Testplatine für den AT89C5131 gebaut! Funktioniert echt
super!
Ich habe auch mit dem I2C- Anschluss experimentiert (I2C Baustein PCF
8574 8 bit I/O- Baustein). Habe mir dazu ein Beispielprogramm von der
ATMEL- Seite besorgt. Funktioniert!!!!

Meine Frage:
Ich habe mir auch den LM75 (Temeratursensor auf I2C- Basis) gekauft.
Wie kann ich den Temperaturwert des LM75 abfragen.
Ich kann nach dem Senden der Slaveadresse einen Wert auslesen (z.B beim
PCF 8574). Beim LM75 muss ich aber nach dem Senden der Slaveadresse zwei
Werte zurück lesen. Wie geht das???
Gibt es dazu für den AT89C5131 irgendwo Beispielprogramme???
Das selbe Problem habe ich natürlich auch wenn ich einen I2C- Slave
habe, bei dem ich zwei oder drei Werte nach dem Senden der Slaveadresse
senden möchte.

Vielleicht hat jemand schon ein C-Programm für mein Anliegen
geschrieben.

Danke für Eure Hilfe!

Werner

Autor: Michael Jungnickl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Werner,

der LM75 Chip hat verschiedene Register. Achtung: Dabei wird die
Adresse des anzusprechenden Registers nicht direkt übergeben. D.h. du
musst sie zuerst einstellen. Anschließend kannst du jeweils entweder
auf die Temperatur (Faktor 2 falsch) oder einen der beiden Hysterese
Werte zugreifen, oder auf das Configurations Register. Dazu gibt es für
den LM75 auch eine Anleitung (von National Semiconductors?) mit genauer
Aufschlüsselung der Bitfelder. Am i2c Bus ist noch wichtig, dass du
kein Stopp-Bit zwischen zwei 8 Bit Werten schickst, wenn diese einen 16
Bit Wert (z.B. Temperatur) bilden! Deshalb brauchst du für 16 Bit eine
andere Funktion als für 8 Bit.

Tschüß

Michael Jungnickl

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh mal hier nach, ist zwar in Assembler,
aber sehr gut kommentiert.

http://sprut.de/electronic/pic/programm/thermo75/t...

Wenn ich das Datenblatt des LM75 und den Code von Sprut richtig
gelesen
habe, musst Du direkt nach dem Empfang des 1. Bytes ein ACK statt
des Stopp-Bits senden und erneut ein Byte vom LM75 abfragen, welches
dann den 0.5°C-Wert darstellt - dann kommt das Stopp-Bit

(Hoffentlich war das richtig)

Hinweis: Sprut benutzt zwei Functionen für die beiden Bytes,
aber das wirst Du schon sehen.

Tschö JoJo

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.