www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LM75 und C-Control


Autor: Christoph H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alle,

ich habe hier ein seeehr ernstes Problem mit einer C-Control, mit der
ich einen LM75 über I2C auslesen will.

Das Problem ist, dass ich zwar Werte empfange, diese aber immer nur in
2°-Schritten an- und absteigen. Ich kann das einfach nicht
nachvollziehen, zumal der Quelltext OK zu sein scheint.

Here it goes:

scl = 1 'I2C im Ruhezustand
sda = 1
pause t


sda = 0 : pause t 'Start Condition

scl = 0 : pause t


sda = 1 : tog scl : tog scl 'Geräteadresse senden
sda = 0 : tog scl : tog scl
sda = 0 : tog scl : tog scl
sda = 1 : tog scl : tog scl
sda = 0 : tog scl : tog scl
sda = 0 : tog scl : tog scl
sda = 0 : tog scl : tog scl
sda = 1
scl = 1             'Lesemodus
pause t
scl = 0

DEACT sda

' MSB vom I2C Bus lesen

msb = 0

for i=0 to 7

    scl = 1 : pause t

    if sda  then msb = msb or &B00000001

    if sda = 0 then msb = msb and &B11111110

    msb = msb shl 1

    scl = 0 : pause t

next



sda = 0

scl = 1 :  pause t

scl = 0

DEACT sda

pause t

' LSB vom I2C Bus lesen

lsb = 0

for i=0 to 7

    scl = 1 : pause t

    if sda  then lsb = lsb or &B00000001

    if sda = 0 then lsb = lsb and &B11111110

    lsb = lsb shl 1

    scl = 0 : pause t

next



DEACT sda

tog scl : tog scl



sda = 0

scl = 1 : pause t

sda = 1

print msb;
return

"Print msb" gibt immer nur Werte in Zweierschritten aus, also 20, 22,
24 etc.

Hat jemand eine Ahnung, woher das kommt?

Gruß,

Christoph

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung. Hast Du schon mal ins Datenblatt geschaut? Findest eins
unter Download im http://www.roboternetz.de

Autor: Christoph H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar hab ich da schon geguckt, kannst ja selber nochmal nachssehen, hier
issen Link:
http://www.lysator.liu.se/~alla/files/lm78_stuff/LM75.pdf
mfg

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm-ich hab ne Idee:
Du liest ein Bit, AND oder OR-st es in "msb" rein und shiftest dann.
Das würde bedeuten, daß ein Bit, daß in Bit0 des "msb"
reingeAND/OR-ed wird, automatisch nach dem Shift an der Stelle von Bit1
steht. Bit0 von MSB ändert sich nie, da es immer wieder durch den
shift-Befehl gelöscht wird. Setze den shl - Befehl an den Anfang der
Schleife, dann sollte es funktionieren.

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.