LM75 Mega8, lässt sich nur einmal auslesen

Gast #745315
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.
@ 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
Gast
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...
Gast
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.