!!!!!! LM75 mit AVR300 Hilfe !!!!!!!!

Gast #116027
Hallo

ich wollte mit dem 90s1200 über i2c einen LM75 auslesen.
ich habe das AVR300.asm genommen und diesen aufruf gemacht


  ldi  i2cadr,$90+i2cwr  ; Set device address and write
  rcall  i2c_start    ; Send start condition and address

  ldi  i2cdata,$00    ; Write word address
  rcall  i2c_do_transfer    ; Execute transfer

  ldi  i2cadr,$90+i2crd  ; Set device address and read
  rcall  i2c_rep_start    ; Send repeated start condition and address

  clc
  rcall  i2c_read    ; Execute transfer (read)
  mov  temp5,i2cdata

  sec
  rcall  i2c_read    ; Execute transfer (read)
  mov  zahl3,i2cdata

  rcall  i2c_stop    ; Send stop condition - releases bus


der 1. read befehl bringt mir wie gewünscht die temperatur
beim 2. read befehl solte das bit 7 0,5 grad anzeigen - ich bekomme
aber immer nur eine 0.

was mach ich beim 2. aufruf falsch? - wird der ack falsch gesendet ?
Gast #116030
Moin Condor,

bei mir gehts, aber verwende Bascom und ein eigenes Test-Board.

Wichtig ist das erste Config-Word, steht aber im Manual drin ..

mfg
Oliver
Gast #116033
Also wenn Du nur auslesen möchtest, reicht es, die
Adresse zu senden, und die 2! Datenpakete zu empfangen.
Das erste ist high, dass andere low (,0 oder ,5°C).
Hast Du deinem Compiler auch gesagt, dass 2 Pakete vom LM75
gesendet werden ? Bei Bascom sieht das so aus:
 I2cstart
 I2cwbyte Lm75read
 I2crbyte Lm75high , Ack
 I2crbyte Lm75low , Nack
 I2cstop

Das ack sagt dem compiler, dass noch ein Word zu lesen ist, bei
Nack kommt anschl. nix mehr. Wie man das nun in assembler sagt, weiß
ich leider nicht.
Gast #116034
Hallo

bei der AVR300.asm(org. Atmel) steht in der beschreibung das es über
das
cary flag geht (CLC oder  SEC) nur leder bekomme ich halt nur das
1.byte
richtig übertragen.

Hat den noch keiner die AVR300.asm mit dem LM75 getestet ?
#116036
"Wo sind jetzt die LM75 Profis ?"

Ich bin kein "LM75 Profi", darf ich also nicht antworten ?

Schon mal an Murphies Gesetze gedacht, z.B. "Der Fehler ist
grundsätzlich nie da, wo man ihn sucht".

Werden z.B. temp3 und zahl5 richtig ausgegeben ?
Trag da einfach mal feste Werte ein und teste, ob sie richtig angezeigt
werden.

Debuggen ist ganz einfach:

Man teilt den Code in Stücke und testet diese.
Den Code, den man gerade nicht testet, muß natürlich drin bleiben, er
könnte ja Seiteneffekte haben.

Bloß machen muß man es selber, da hilft kein Schreien nach Profis.


Ich nehme lieber den DS18B20, den kann man bequem einschrumpfen, für
den LM75 braucht man ja ne extra Platine.


Peter
Gast #116038
Hallo peter

es ist so das temp5 die Ganzzahlige temp. bringt z.b. 24 grad das
bekomme ich auch.
nur zahl3 bringt mir keinen wert.

die variable zahl3 habe ich extra aus testgründen gemacht - weil es die
im programm nicht gibt.

die zahl3 lase ich auch direckt auf LED´s ausgeben ohne damit irgend
was
zu rechnen oder so....


pull up habe ich extern 5,2K - ansonsten wenn ich CLC und  SEC tausche

bekomme ich immer FF auf zahl3 .......

ich bin echt verzweifelt
Gast #116039
Es gibt für das Low-Byte auch nur 127 und 255 als Wert,
oder war´s 0 und 127 ?
Dazwischen gibt es nix.

Daraus bastel ich mir dann die ,0°C oder ,5°C.

mfg
Oliver
Gast #116041
Ich bin mir recht sicher das der Fehler in der APPLICATION NOTE AVR300
liegt.
In der Funktion i2c_put_ack wird SDA nicht mehr frei gegeben!!!
Wird darauf i2c_do_transfer aufgerufen wird, dann das letzte ACK (müßte
ja 0 sein, da sonst ein STOP folgt) gelesen.

Abhilfe: den code umschreiben, oder i2c_rep_start verwenden.
i2c_rep_start

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.