1. Posts/

Debugging im Labor Z916

  • Arbeit im Laborbereich

  • Arbeitsschutzunterweisung und Einführung in die Geräte

  • Spannungsmessung mithilfe eines Multimeters an den Bus-Schnittstellen, beim Senden wurde eine Spannung festgestellt, allerdings nicht an allen Pins -> Vermutung: Nicht alle Pins wurden korrekt verlötet -> Erneutes Löten der Pins im Labor (Nutzung von bleifreiem Zinn)

  • Neuer Versuch, aber die Temperatur wird immer noch nicht gemessen -> Rausnehmen des Delays für die Messung ändert auch nicht viel

  • Daher analysieren wir die Signale des I2C Protokolls mithilfe eines digitalen Oszilloskop. Dabei greifen wir die Clock (SCL) und die Daten (SDA) ab.

  • Versuchsaufbau:

    Versuchsaufbau mit Oszilloskop

  • Wir schreiben nun ein minimales Programm, welches nur die Wire Bibliothek verwendet, da wir vermuten, dass die mitgelieferte SHT Bibiothek von Heltec fehlerhaft ist.

  • Messung mit Oszilloskop:

    Messung 1

  • Im unteren Bereich lässt sich die Serial Clock erkennen, wie sie fehlerfrei abwechselnd mit high und low Flanke den Takt angibt.

  • Im oberen Bereich ist die Messung des seriellen Datenbus zu erkennen. Das Programm des Oszilloskop dekodiert korrekt die Adresse 0x40 (Adresse des SHT21), welche vom Mikrocontroller auf den Bus gegeben wird. Allerdings bricht die Übertragung nach der Adresse ab.

  • Wir vereinfachen deshalb das Programm noch weiter, sodass nur eine Adresse und ein Schreibbefehl auf den Bus gegeben wird. Der Schreibbfehl ist nötig, um den SHT korrekt anzusprechen, sodass er die Temperatur- und Luftfeuchtedaten auf den Bus schreibt.

  • Messung:

    Messung 2

  • Hier lässt sich erkennen, dass der Mikrocontroller Adresse und das Read/Write Bit korrekt auf den Bus gibt, allerdings bricht danach wieder die Übertragung ab.

  • I2C Protokoll:

    I2C Protokoll

  • Laut I2C Protokoll wird nach dem Read/Write Bit ein NACK (invertiertes ACK) erwartet, gemessen wurde aber eine high Flanke, also ein ACK anstatt eines NACK.

  • Der Fehler liegt also an einer fehlerhaften Implementierung des I2C Protokolls => Es ist nicht sicher ob es sich um ein Fehler in der Hardware oder der Software handelt