mikrocontroller.net

Forum: Compiler & IDEs LM75 Mega8, lässt sich nur einmal auslesen


Autor: Tin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag
Kennt einer das verhalten eines Temp.-fühler LM75, dass dieser nur nach 
einem reset auszulesen ist und danach nicht mehr, obwohl sie in einer 
while schleife sitzt?
Bei dem ersten LM75 Funktioniert er mit der Schleife, nach 2 weiten 
Typen Funktioniert es nur nach einem Reset, bzw. bei Spannung ein.

Schleife und auslesen sollte Funktionieren, da es mit dem ersten LM75 
Funktioniert.
Ich konnte keine besonderheit des Beschalten gefunden, Adresse 
eingestellt, SCL und SDA ist richtig verdrahtet mit PullUP.

Pin 3 hab ich unbeachtet gelassen, da es nur ein Ausgang ist, wie es mir 
erscheint.

Hoffe einer weiß ein Rat.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tin (Gast)

>Kennt einer das verhalten eines Temp.-fühler LM75, dass dieser nur nach
>einem reset auszulesen ist und danach nicht mehr, obwohl sie in einer
>while schleife sitzt?

Hast du dir mal SDA und SCL angeschaut? Dazu reicht ein Multimeter. Ich 
wette, SDA hängt auf LOW. Du liest wahrschinlich nur 8 Bit aus und der 
IC will aber moch das LSB ausgeben. Wenn das zufällig LOW ist, knallts. 
Steht auch im Datenblatt.

MFG
Falk

Autor: Tin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab es mir per Ozsi angeschaut und es stehen Daten an, sowohl Clock 
als Data.
Ich kann es mir nicht erklären warum es nur beim Reset Funktioniert und 
mit dem 1. geht es wunderbar...

Autor: Tin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ein unterschied zwischen den LM75 gefunden, der erste 
funktionierene ist ein LM75A und die anderen sind alle LM75...
Ich muss also meine Routine ändern, ich hab allerdings keine Idee mehr 
an welchen Punkt es liegen könnte.
Ich sende das 0 Byte auf die Adresse mit 0 am ende, ende danach die 
Adresse mit 1 am ende und dann Frag ich beide Bytes ab und setz die um.
Das Funktioniert aber scheinbar nur mit dem LM75A.

Ich benutz die Routine von Peter Fleury.

Ausschnitt:

  i2c_start(0b10011110);           // Adresse
  i2c_write(0);                    // 0 Byte zur Init.
  i2c_rep_start(0b10011111);       // Adresse ++


  higher_byte = i2c_readAck();     //Auslesen High
  lower_byte   = i2c_readNak();    //Auslesen Low
  i2c_stop();                      // stoppen

Vielleicht hat wer einer eine Idee.

Autor: Tin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es nun zum Teil gelöst.
Ich lasse die Temperatur über eine extra if abfrage laufen, da 
Funktioniert es.
Allerdings weiß ich nicht wo der Unterschied sein soll...

Danke für die Hilfe.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es liegt dran, dass der LM75 33ms brauch, um überhaupt einen Messwert zu 
haben, und wenn man die ihm nicht lässt gehts nicht.

PS: der LM75A braucht sogar 100ms ist aber genauer.

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.