Das lernst du heute
- Vor dem Lesen prüfen
- Vor dem Schreiben prüfen
- IncorrectLogicType vermeiden
Gestern hast du gefragt, ob ein Gerät da ist. Heute fragst du, ob es etwas kann. Ein Gassensor hat keinen Schalter, eine Wandheizung kein Thermometer. Liest du Temperature von einer Heizung, meldet der Chip IncorrectLogicType und bleibt auf der Zeile stehen.
Wann das passiert
Solange du jedes Gerät kennst, kommt der Fehler kaum vor. Er taucht auf, wenn der Chip nicht weiß, was an einem Pin steckt:
- ein Universal-Chip, den du an verschiedene Geräte hängst
- eine Schleife über alle Pins mit
dr0 - eine ReferenceId, die jemand anders eingetragen hat
bdnvl: kann es das lesen?
bdnvl geraet Temperature kein_thermo # springt, wenn nicht lesbar
l temp geraet Temperature
bdnvl steht für branch if device not valid for load: Der Chip springt, wenn das Gerät diesen LogicType nicht lesen kann. Sonst geht es in der nächsten Zeile weiter, und das Lesen ist sicher.
bdnvs: kann es das schreiben?
bdnvs geraet On nicht_schaltbar # springt, wenn nicht schreibbar
s geraet On 1
bdnvs (not valid for store) prüft das Schreiben. Ein Gassensor kann On nicht schreiben, eine Wandheizung schon.
| Befehl | springt, wenn |
|---|---|
bdnvl gerät LogicType ziel | das Gerät den LogicType nicht lesen kann |
bdnvs gerät LogicType ziel | das Gerät den LogicType nicht schreiben kann |
Beide nehmen ein Gerät wie l und s: einen Pin, db oder ein Register mit ReferenceId. Für lbn gibt es kein Gegenstück. Dort prüft der Chip vor dem Lesen alle passenden Geräte und meldet IncorrectLogicType, sobald eines den Wert nicht hat.
bdnvl prüft die Fähigkeit, nicht die Anwesenheit. Fehlt das Gerät ganz, meldet auch bdnvl einen Fehler (DeviceNotFound). Prüf deshalb zuerst mit bdns, dann mit bdnvl.
Im Simulator des IC10-Coders gibt es den strengen Modus. Dann gelten nur die LogicTypes, die am Gerät eingetragen sind, und bdnvl springt wie im Spiel. Ohne strengen Modus erlaubt der Simulator jeden LogicType, und der Sprung kommt nie.
Schaubild
Übung
Aufgabe
Ein Universal-Chip: Was an den Pins hängt, steht nicht fest.
d0: ein Verbraucher. Ist er da und kann erOnschreiben, folgt er dem Hebel „Freigabe“ (Open).d1: ein Messgerät. Ist es da und kann esTemperaturelesen, zeigt die Anzeige and2die Temperatur in °C, sonst −999.- Fehlt ein Gerät an irgendeinem Pin, gibt es keinen Fehler.
Hinweise
Hinweis 1
Vor jedem Zugriff zuerst bdns, dann bdnvs bzw. bdnvl – beide springen zum nächsten Abschnitt.
Hinweis 2
Setz c auf KEINWERT, bevor du das Messgerät prüfst. Dann steht −999 da, wenn eine Prüfung springt.
Hinweis 3
Auch die Anzeige an d2 vor dem Schreiben mit bdns prüfen.
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