Hallo an alle, ich habe das myavr mk2 board und einen lm75 temp-sensor. nach sehr vielem lesen, habe ich die schaltung soweit realisiert. jedoch wird auf dem display konstant -0.5 grad angezeigt. obwohl ich das lm75-beispiel von codevision kaum verändert habe, denke ich das der fehler im quellcode liegt. vielleicht könnt ihr mir weiter helfen. ich danke im voraus für eure antworten. viele grüße
Im Datenblatt steht, das -0.5 °C folgendermaßen codiert ist: 1 1111 1111 = 1FFh Also alles Einsen. Da haut mit der Kommunikation etwas nicht hin. Gruß Skriptkiddy
ja stimmt. kann es sein, dass die addressierung irgendwie falsch ist? a0,a1,a2 habe ich auf gnd gelegt. das sollte doch eigentlich funktionieren, solange ich nur einen lm75 verbaut habe? einen fehler in der lm75-lib von codevision, sollte man ja eigentlich ausschließen können?
Ich kenne Codivision nicht. Aber ich würde mal Folgendes testen: Start+Adresse+R und gucken ob der Slave ein ACK gibt. Und dann ein Stop. Wenn der Slave ACKt, dann hast die richtige Adresse. Man könnte auch in einer Schleife alle möglichen Adressen abklappern und schauen, ob ein ACK kommt. Ein Logikanalysator würde sicher auch helfen. Damit könnte man mal schauen, was auf dem Bus los ist. Gruß Skriptkiddy
Rene J. schrieb: > einen fehler in der lm75-lib von codevision, sollte man ja eigentlich > ausschließen können? Weiß man's? Ohne Code ist das schwer zu sagen. Hast du die Pull-up Widerstände am Bus dran?
die pull-up widerstände(10 kohm) habe ich parallel zu sda und scl gelegt. das sollte eigentlich stimmen. v+ liegt am board auf high, gnd auf low, sollte auch stimmen. a0, a1, a2 liegen liegen ebenfalls auf gnd. o.s. habe ich nicht benutzt. für eine einfache messung benötigt man den pin nicht, oder habe ich etwas falsch verstanden?
10K ist recht hoch, speziell wenn die Leitungen länger sind (wie lang sind die bei Deiner Anwendung?). Was hast Du an Messtechnik? Scope? Logic-Analyzer?
Ich habe mir die Schaltung auf einem Experimentierboard aufgebaut. Die Leitungen sind also nur wenige cm lang/kurz. Ich habe erst vor kurzem angefangen, mich mit Elektronik zu beschäftigen. Deshalb habe ich leider noch keine Messtechnik oder der gleichen. Ich habe mir diese temperatur-Addon von myAvr mal angeschaut. Dort werden auch 10K verwendet. Ich komme einfach nicht weiter. Vielleicht hat noch jemand eine Idee. Aber danke erstmal, für die bisherigen Antworten. Viele Grüße
@ Rene J. (rene_j) >angefangen, mich mit Elektronik zu beschäftigen. Deshalb habe ich leider >noch keine Messtechnik oder der gleichen. Aber ein Multimeter ist da notwendige Minimum! Ohne geht es nicht. >Ich habe mir diese temperatur-Addon von myAvr mal angeschaut. Dort >werden auch 10K verwendet. Passt schon. >Ich komme einfach nicht weiter. Vielleicht hat noch jemand eine Idee. Ja, jetzt musst du Fehlersuche lernen. Da du keine sonderliche Messtechnik hast, musst du improvisieren. Nimm zwei LEDs mit je 1kOhm Vorwiderstand und schalte sie jeweils parallel zu deinen beiden Pull-Ups an SDA und SCL. Damit siehtst du den Zustand der Leitung. LED aus -> HIGH LED ein -> LOW Dann machst du in dein Programm nach jedem elementaren Schritt eine große Pause rein, _delay_ms(1000) ist hier ausnahmsweise mal sehr sinnvoll. Damit kannst du das Signalspiel auf dem I2C Bus sehen. Dann musst du prüfen, was bei deinen Zugriffen rauskommt. Erster Punkt. Antwortet der LM75 auf den Lesezugriff? MFG Falk
hi, ich habe mir noch schnell ein multimeter besorgt. Das ganze arbeitet mit 4,5v. Die beiden LEDs habe ich auch parallel geschalten. Wenn ich die LED am SCL weg lasse, wird mir eine Temperatur von 0 Grad angezeigt. Die beiden LED blinken, also sendet der lm75 nur impuls-weise? ich weiß jetzt nicht, wie ich das zu deuten habe, bzw wie ich daraus eine lösung ableiten kann.
@ Rene J. (rene_j) >beiden LED blinken, also sendet der lm75 nur impuls-weise? Du musst dich wohl oder übel mit der Funktion des I2C-Buses vertraut machen. Ja, das dauert einige Tage. Anders geht es nicht. Oder du kaufst dir ein iPhone, das muss man nur einschalten. MFG Falk
Gut, das werde ich machen. Ich wollte ja nun auch keine fertige lösung präsentiert bekommen, deshalb darf es auch etwas länger dauern. Dabei lernt man am meisten. Das mit dem iPhone lasse ich mal, daher es nicht ganz zu meiner Problematik passt. Vielen Dank, für eure Antworen. mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.