Hallo liebe Forenmitglieder und Gäste, ein rätselhaftes Problem plagt mich und hindert mich auf dem letzten Meter einen einfachen Heizregler fertig zu stellen. Ich bin nach dieser Anleitung vorgegangen: http://chemdroid.net/en/raspberry-pi/29-ds1621-temperature-sensor Ich kann - die Temperaturmessung starten (Register 0xEE) - das Messergebnis ausgeben (0xAA), - das Konfigurationsregister lesen und schreiben (0xAC), alles funktioniert wie auf der verlinkten Seite. Was allerdings nicht funktioniert ist die Einstellung der Thermostatschwellen (Register 0xA1 und 0xA2), egal ob ich 1 oder 2 Byte schreibe. Am Anfang waren die Schwellen 0x0F und 0x0A. Das heißt, ich kann meine Temperaturschwellen scheinbar nicht ändern. Besser gesagt, nach einigen Versuchen sind beide zu 0 geworden. Wenn ich das Bit "POL" für die Polarität des Ausgangs (active high oder low) ändere, schaltet das am Ausgang angeschlossene Relais (ja, mit Transistor, Basisvorwiderstand und Freilaufdiode). Alles plausibel und aus der Shell bedienbar - warum kann ich die Temperaturschwellen-Register nicht beschreiben??? Ich habe auch einen zweiten DS1621 getestet, Verhalten ist exakt gleich. Hier meine Versuche: [code] Anfangszustand: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa1 0x0f pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 0x0a Konfigurationsregister: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xac 0x8c Temperaturregister ohne dass Messung gestartet wurde: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xaa 0xc4 Schreiben und Auslesen der Temperaturschwellen: pi@raspberrypi ~ $ sudo i2cset -y 1 0x4f 0xa1 0x1a pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa1 0x0f pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa1 0x0f pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa1 w 0x000f pi@raspberrypi ~ $ sudo i2cset -y 1 0x4f 0xa2 0x19 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 0x0a pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xA2 0x0a Start der Messung: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xEE 0x0f Temperatur ist 22,5 °C und steigt: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAA w 0x8016 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAA w 0x8017 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAA w 0x8019 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAA w 0x001a pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAA w 0x001b Lesen und schreiben des Konfigurationsregisters: pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAC 0x4c pi@raspberrypi ~ $ sudo i2cset -y 1 0x4F 0xAC 0x02 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4F 0xAC 0x42 Ändern des Bits "POL" im Konfigurationsregister - das Relais an Tout schaltet dabei: pi@raspberrypi ~ sudo i2cset -y 1 0x4F 0xAC 0x00 pi@raspberrypi ~ $ sudo i2cset -y 1 0x4F 0xAC 0x02 pi@raspberrypi ~ $ sudo i2cset -y 1 0x4F 0xAC 0x0 pi@raspberrypi ~ $ sudo i2cset -y 1 0x4F 0xAC 0x02 Zu guter Letzt noch Registerdumps: pi@raspberrypi ~ $ sudo i2cdump -y 1 0x4f No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 20: XX XX 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX.XXXXXXXXXXXXX 30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 40: 00 00 00 00 00 00 00 00 04 10 16 16 4e 04 04 04 ........????N??? 50: XX 00 XX XX XX XX XX XX XX XX XX XX XX XX XX XX X.XXXXXXXXXXXXXX 60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX a0: XX 00 00 XX XX XX XX XX 0c 10 c4 XX 8e XX XX XX X..XXXXX???X?XXX b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX 08 XX XXXXXXXXXXXXXX?X f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX pi@raspberrypi ~ $ sudo i2cdump -y 1 0x4f w 0,8 1,9 2,a 3,b 4,c 5,d 6,e 7,f 00: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 08: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 10: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 18: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 20: XXXX XXXX 0000 XXXX XXXX XXXX XXXX XXXX 28: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 30: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 38: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 40: 0000 0000 0000 0000 0000 0000 0000 0000 48: 0004 0010 8016 8016 004e e004 e004 e004 50: XXXX 0000 XXXX XXXX XXXX XXXX XXXX XXXX 58: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 60: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 68: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 70: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 78: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 80: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 88: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 90: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 98: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX a0: XXXX 0000 0000 XXXX XXXX XXXX XXXX XXXX a8: 000c 0010 00c4 XXXX 008e XXXX XXXX XXXX b0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX b8: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX c0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX c8: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX d0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX d8: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX e0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX e8: XXXX XXXX XXXX XXXX XXXX XXXX e008 XXXX f0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX f8: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX [\code] Ich vermute, dass es etwas mit "Repeated Start" zu tun hat - das kann der BCM2835 anscheinend nicht. Aber warum geht sonst alles? Grüße, Jonas
Hallo, ich freue mich sehr euch mitteilen zu können, dass ich mein Problem gerade gelöst habe! Durch diese Seite: http://kampis-elektroecke.de/?page_id=2035 kam ich darauf, den Befehl um ein i zu erweitern. Ich bin jetzt etwas zu müde um das auseinanderzunehmen, sorry. Ich verstehe auch nicht komplett was da passiert. So sehen meine Befehle aus: pi@raspberrypi ~ $ sudo i2cset -y 1 0x4f 0xa2 0x1b 0x00 i pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 0x1b pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 w 0x001b pi@raspberrypi ~ $ sudo i2cset -y 1 0x4f 0xa2 0x19 0x00 i pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 w 0x0019 pi@raspberrypi ~ $ sudo i2cget -y 1 0x4f 0xa2 0x19 Wer in der Lage ist das zu interpretieren, der möge es bitte hier herniederschreiben um diese verrückte Welt ein bisschen besser zu machen. Danke.
Danke vielmals für deinen Beitrag der mir extremst bei meinen ersten Gehversuchen mit dem I2C (und dem DS1621) geholfen hat! Wenn du die Werte für TH und TL verändern möchtest musst du 2 Bytes zurück schreiben - darum das "i" am Schluss. Zum Auslesen der beiden Bytes (also Grad als Ganzzahl und die "Kommastelle") hängst du abfragen das "w" an. Tust du das nicht bekommst du nur die Ganzzahl (ohne Kommastelle) zurück.
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.