Der I2C Sensor BME280 ist wohlbekannt. Die einfachste Interaktion mit dem Chip ist das Auslesen der Chip-ID (0x60), welches keiner Vorbereitungen bedarf. Nach Datasheet: "This number can be read as soon as the device finished the power-on-reset."
Ich adressiere also an meinem IOW24-DG die Sensor Read-only Adresse 0xD0 und lese ein Byte. Genau das aber funktioniert nicht. Erst wenn ich zusätzlich noch ein Byte an die Adresse schreibe (macht nix, ist ja Read-only) kann ich dann das richtige Byte lesen.
Anbei mein Protokoll als Bild:
Das ACK ist ein jeweils korrekt empfangener Acknowledge Report mit ID=2 und Error bit NICHT gesetzt.
Man sieht, dass beim Addressieren des Registers D0 die Antwort 00 ist. Erst wenn ich D0 00 schreibe, erhalte ich die korrekte Antwort 60. Dabei ist egal ob ich die 'Generate Stop" flag setze (obere 2 Interaktionen) oder nicht (untere 2).
Auch bei den Calibration Data bekomme ich erst dann korrekte Werte geliefert, wenn ich an die Adressen ein (beliebiges) Byte schreibe.
Das soll aber nicht so sein, und führt bei denjenigen Adressen zum Chaos, an die auch geschrieben werden kann. Werte für Pressure, Temp, und Humidiy bekomme ich gar nicht ausgelesen.
Die Gestaltung der Reports ist im Bild zu sehen. Ich denke, ich habe da keinen Fehler gemacht, oder? Gibt es noch weitere Tricks für das Auslesen von Werten? An einem anderen System kann ich mit der gleichen Logik stets korrekte Werte auslesen.
download/file.php?mode=view&id=237& ... 2e010501ff
Bug in IOW24DG Hard- oder software?
Moderator: Guido Körber
Bug in IOW24DG Hard- oder software?
- Attachments
-
- bugiow24dg.png (36.96 KiB) Viewed 8408 times
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: Bug in IOW24DG Hard- oder software?
Die Zahl der zu übertragenden Bytes ist falsch angegeben. Der IO-Warrior interessiert sich nicht für die Bedeutung der einzelnen Bytes, darum kann man auch die Start/Stop-Conditions auswählen ob die erzeugt werden. Das Adressbyte zählt darum mit zu den übertragenen Bytes, andernfalls wären keine Schreib-Transaktionen möglich die mehr als einen Report brauchen.
Re: Bug in IOW24DG Hard- oder software?
"Adressen sind auch Daten!" - das sollte man noch ins Handbuch aufnehmen - dick und unterstrichen! Durch die Besonderheiten des LM75 Sensors spielte der Fehler keine Rolle; beim BME280 aber schon. Nach Korrektur läuft es problemlos, das Bild zeigt eine Testmessung mit 4 Variablen von 2 Sensoren. Im Vergleich zu anderen Messgeräten ist alles passend im Rahmen der Spezifikationen. Der BME280 liefert deutlich stabilere Signale als der LM75.
Soweit alles bestens, danke für die Hinweise.
Das Program läuft auf Python3, demnächst (muss noch etwas bügeln) hier zu finden: https://sourceforge.net/projects/i2cpytools/
Soweit alles bestens, danke für die Hinweise.
Das Program läuft auf Python3, demnächst (muss noch etwas bügeln) hier zu finden: https://sourceforge.net/projects/i2cpytools/