MSP430F5529 Messsequenz
Einleiten der Messsequenz
Nach dem Einschalten und einmaligem Durchlaufen der einzelnen Programmabschnitte (Initialisierung, Messung, Messwertaufbereitung) befindet sich der MSP430F5529 im Energiesparmodus und ist größtenteils deaktiviert. Er verbleibt in diesem Modus, bis entweder der Rpi einen Steuerbefehl sendet, oder – sollte dieser ein Mal ausfallen – 15,6 Sekunden vergangen sind und der Watchdog einen Systemreset auslöst. Eine Messsequenz wird eingeleitet, indem der Rpi über einen entsprechenden Befehl den Auftrag dazu gibt. Neben der Veranlassung einer Messung kann der Rpi einen Datensatzes vom MSP über I2C auslesen.

Der MSP430F5529 speichert dabei immer nur die aktuellen Messwerte, welche nach Übertragung zum RPi dort in Datenbanken abgelegt werden. Entsprechend werden zunächst die aktuelle gespeicherten Messwerte ausgelesen und anschließend wird eine Messung gestartet, die läuft während der Rpi sich um andere Aufgaben kümmert. Sobald die Messung vollständig durchgeführt wurde, geht der MSP in den Ruhezustand und wartet auf das nächste Auslesen der Messergebnisse.
Ablauf der Messsequenz
Innerhalb der Messsequenz werden verschiedene digitale sowie analoge Sensoren abgefragt. Die einfachste Form der Messdatenerfassung ist dabei das Einlesen der Analogen Spannungen von O2-Sensoren und UV-Dioden. Entsprechend der in der Initialisierung vorgenommenen Konfiguration wird eine Messung über 4 Kanäle des ADC durchgeführt, an denen die vier Sensoren angeschlossen sind. Für die Messwerte des O2-Sensors wird zudem der Sauerstoffgehalt in 0, 1% ermittelt (Ergebnis gilt bei Normaldruck).

Die DS1820 werden über das OneWire Protokoll angesprochen und über Befehle gesteuert. Im OneWire Protokoll wird vor jeder Kommunikation ein Reset durchgeführt, gefolgt von einem Adressbefehl und ggf. einer Adresse sowie einem Steuerbefehl.

Zur Initialisierung der Messung ist keine Kommunikation von Seiten der Sensoren notwendig, der Bus wird wird ausschließlich vom Master kontrolliert. Dadurch können die Adressen übersprungen und alle Sensoren auf ein Mal angesprochen werden. 0x44 weist alle Sensoren an, eine Temperaturmessung durchzuführen. Nach kurzer Wartezeit können die Sensoren einzeln adressiert* und ihr Messergebnis abgefragt werden. Überspringen der Adresse ist hier nicht mehr möglich, da sonst alle Sensoren zeitgleich Antworten schicken würden. Mithilfe der ausgelesenen Werte kann für jeden Temperatursensor die Temperatur in 0,5° C berechnet werden.
*Die Adressen der einzelnen Sensoren wurden vorher bestimmt, indem nur ein einzelner Sensor angeschlossen wurde. Über SKIP_ROM und READ_ROM wurden die 8 Byte der Adresse ausgelesen und fest im Programm hinterlegt. Es besteht die Möglichkeit, Adressen aller auf einem Bus befindlichen Teilnehmer automatisch auszulesen, allerdings ist dann die Zuordnung Adresse<>Sensor nicht ohne weiteres möglich.
Die restlichen Sensoren sind auf dem I2C-Bus anzutreffen. Sie werden über ihre Hardwareadresse angesprochen. Die Sequenzen zur Aufnahme von Messungen unterscheiden sich für jeden Sensortyp und sind in der nachfolgenden Grafik dargestellt.
