Bug in IOW24DG Hard- oder software?

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
ullix
Posts: 14
Joined: Thu Mar 01, 2018 12:27 pm

Bug in IOW24DG Hard- oder software?

Post by ullix »

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
Attachments
bugiow24dg.png
bugiow24dg.png (36.96 KiB) Viewed 7382 times
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Bug in IOW24DG Hard- oder software?

Post by Guido Körber »

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.
ullix
Posts: 14
Joined: Thu Mar 01, 2018 12:27 pm

Re: Bug in IOW24DG Hard- oder software?

Post by ullix »

"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/
IOWBME280LM75w500.png
IOWBME280LM75w500.png (54.18 KiB) Viewed 7340 times
Post Reply