mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik !!!!!! LM75 mit AVR300 Hilfe !!!!!!!!


Autor: Condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat den keiner eine idee ?

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin ich wirklich er einzige bei dem es nicht geht ?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Was heißt das erste config-word ?
ich will nur die term auslesen (adr00) nichts anderes will ich.

Autor: Keyboard-Error (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tausch mal Deine Tastatur aus, Deine !-Taste prellt...

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo sind jetzt die LM75 Profis ?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S.:

Es gibt Leute die warten für jedes Ausrufezeichen im Betreff einen Tag
länger, ehe sie antworten.


Peter

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: condor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo oliver

beim erwärmen bekomme ich aber kein 0 - 128
sonern nur 0 oder wenn ich CLC und  SEC tausche nur 255 (also alles 1).

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.