Hi Leute, ich quäle mich jetzt schon ne ganze Weile mit den I2C Tempsensoren rum. Im Moment hab ich den DS1631 dran.Soweit scheint alles zu funktionieren. Ich sende das Startbit anschließend die SL_R-Adresse und bekomme ein Acknowledge zurück. Ich empfange das MSB-Tempbyte uns sende ein Ack. Ich bekomme das LSB und sende kein Ack anschließend ein Stop und das ganze fängt von vorn an. Merkwürdigerweise ist das MSB immer 09 was zufällig oder auch nicht im Zusammenhang mit dem LSB die Slaveadresse (9F) ist. das LSB ist immer F0. Die Null wäre ja schon richtig, da die ersten 4 Bits immer Null sind (12-Bit Auflösung) Für Raumtemperatur auf jeden Fall zu niedrig. Zwischen 2 Zyklen vergehen mindestens 2 Sekunden. Ich habe nun keine Ahnung wo ich noch suchen soll, vielleicht kann das Programm ja jemand mal für mich anschauen oder gar testen. Gruß, Jürgen
Hast Du ein Oszi / Logicanalyzer? Der große Vorteil bei I2C ist, dass man ihn beliebig langsam machen kann. Sogar so langsam, dass man an die beiden Leitungen LEDs anschließen kann zum "Mitlesen". Das würde ich Dir empfehlen. Den DS1631 anzusteuern haben schon tausende geschaft, und ich bin mir sicher, Du wirst der Nächste sein. Beitrag "Re: Anfänge ins Programmieren!" Er verhält sich exakt so wie im Datasheet beschrieben. Außerdem gibt es genug Codebeispiele. Suche in http://www.mikrocontroller.net/search nach +DS1631 +pic* (8 Treffer) oder +ds1631 +assembler oder +ds1631 +asm Speziell der Autor: Klaus Ra. (klara) hat ja Erfahrung mit dem DS1631. Schick ihm doch mal ne PM.
Naja, leider gibt es in Assembler nicht soviele Codebeispiele, zumal einige davon auch das I2C in Software realisieren. Zumindest hab ich es jetzt hinbekommen, nachdem ich das Datenblatt mir zum 20. mal angeschaut habe. Nächste Frage wäre die Umwandlung in eine Temperatur. Jetzt mal unabahängig davon ob es Sinn macht oder nicht, der Sensor hat eine Auflösung von 12 Bits. Ein Digit macht 0,0625°C. wäre es jetzt sinnvoll den Temperaturwert mit 625 zu multiplizieren und anschließend durch 10.0000 zu dividieren? Oder wie würdet ihr die Umrechnung machen? Fließkomma-Arithmetik würde ich vermeiden wollen. Gruß, pacer
Hallo! Vielen Leuten hier im Forum ist die Mathematik so fremd, daß sie mit Gleipunktarithmetik um sich werfen, ohne zu wissen was sie tun. Du bist glaub ich einer von denen, die spontan (aus einem Bauchgefühl?) den richtigen Ansatz finden. Das Normalisieren (Multiplikation mit einem Skalierungsfaktor - bei dir 625 ) und das anschließend korrekte Setzen des Dezimalpunkts (in Deutschland Komma) führt zum richtigen Ergebnis. Dies gilt für deine Temperatursensoren natürlich nur für die Nachkommastellen im LSB! Das MSB ist, abgesehen vom Zweierkomplement bei Minustemperaturen, bereits im richtigen Format. Für ganz einfache Zwecke habe ich die 16 möglichen Nachkommawerte auch schon mal über eine einfache Tabelle zur Anzeige gebracht. Nicht elegant, geht aber schnell, braucht wenig Platz und von "Außen" sieht man es nicht.
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.