Das lernst du heute
- Prüfen, ob ein Pin belegt ist
- Fehler DeviceNotFound vermeiden
- Sicherer Zweig ohne Gerät
Ein Gerät an einem Pin ist schnell weg: abgebaut, umgesetzt, vom Meteoriten getroffen. Dann meldet l r0 d0 Temperature einen Fehler, und der Chip bleibt genau auf dieser Zeile stehen. Er versucht sie jeden Takt neu – alles, was danach kommt, passiert nicht mehr. Die Heizung bleibt im letzten Zustand, die Warnlampe geht nie an.
Besser: Der Chip fragt vorher nach.
Ist da jemand? sdse und sdns
sdse r0 d0 # 1, wenn an d0 ein Geraet haengt
sdns r1 d0 # 1, wenn d0 leer ist
sdse steht für set if device set, sdns für set if device not set. Beide liefern 0 oder 1 und lassen sich wie jeder Vergleich weiterverwenden – zum Beispiel direkt für eine Warnlampe:
sdns fehlt sensor
s warnung On fehlt
Gleich wegspringen: bdse und bdns
Oft willst du bei fehlendem Gerät einfach einen Teil überspringen:
bdns sensor start # kein Sensor: zurueck an den Anfang
l temp sensor Temperature
bdns springt, wenn das Gerät fehlt, bdse, wenn es da ist. Der Sprung landet hier auf start, und weil dort yield steht, wartet der Chip brav auf den nächsten Takt.
| Befehl | macht |
|---|---|
sdse r? d? | r = 1, wenn Gerät gesetzt |
sdns r? d? | r = 1, wenn Gerät fehlt |
bdse d? ziel | springt, wenn Gerät gesetzt |
bdns d? ziel | springt, wenn Gerät fehlt |
Als Gerät darf auch ein Register mit einer ReferenceId stehen – mehr dazu gestern bei der ReferenceId.
Und im Datennetz?
Für Geräte, die du über lbn ansprichst, brauchst du diese Prüfung nicht: Fehlt dort das Gerät, liefert Average NaN, und das fängst du mit snan ab. Die Pin-Prüfung ist für alles, was fest an d0 bis d5 hängt.
Die Reihenfolge zählt: erst prüfen, dann lesen. Eine Prüfung hinter dem l kommt zu spät – der Fehler ist dann schon passiert.
bdseal und bdnsal springen zusätzlich mit Rücksprungadresse in ein Unterprogramm. Die kommen in Woche 19.
Schaubild
Übung
Aufgabe
An d0 hängt ein Gas-Sensor, an d1 ein Warnlicht, an d2 eine LED-Anzeige.
- Ist der Sensor da: Warnlicht aus, Anzeige zeigt die Temperatur in °C
- Fehlt der Sensor: Warnlicht an, Anzeige behält den letzten Wert
- Der Chip darf dabei nie mit einem Fehler stehen bleiben
Benutze sdse oder sdns und bdse oder bdns.
Hinweise
Hinweis 1
Erst sdse da sensor, dann mit seqz umdrehen und aufs Warnlicht schreiben.
Hinweis 2
Vor dem l: bdns sensor start – fehlt der Sensor, geht es zurück an den Anfang.
Hinweis 3
Die Anzeige wird nur geschrieben, wenn der Sensor da ist – so behält sie den letzten Wert.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden