Das lernst du heute
- Batch statt Schleife
- Werte zwischenspeichern
- Unnötige Schreibzugriffe vermeiden
Gestern hast du gezählt, was ein Takt kostet. Heute geht es darum, weniger zu verbrauchen. Drei Muster bringen am meisten – und zwei davon machen den Code gleichzeitig kürzer.
Batch statt Schleife
Sollen zwölf Flurlampen dasselbe tun, brauchst du keine Schleife über zwölf Namen. Gib ihnen einen Namen, und ein sbn schaltet alle:
sbn LAMPE HASH("Flur") On dunkel # alle Lampen namens Flur
Ein Befehl statt zwölf Durchläufen mit je fünf Schritten. Eine Schleife lohnt sich nur, wenn jedes Gerät etwas anderes bekommen soll – wie die Tanklampen von vorgestern.
Werte zwischenspeichern
Gerätewerte ändern sich nur einmal pro Takt. Wer denselben Wert dreimal mit lbn liest, bekommt dreimal dieselbe Zahl und bezahlt drei Schritte. Lies ihn einmal in ein Register und arbeite dort weiter. Das spart Schritte und sorgt dafür, dass alle Rechnungen eines Takts mit demselben Wert arbeiten.
Unnötige Schreibzugriffe vermeiden
Viele Chips schreiben jeden Takt denselben Wert an dieselben Geräte. Das kostet Schritte – und bei manchen LogicTypes mehr: Befehls-Typen wie Harvest, Plant oder Activate lösen bei jedem Schreiben ihre Aktion aus. Besser: Den letzten Zustand im Register merken und nur bei einer Änderung schreiben.
beq dunkel zustand start # nichts geändert: nicht schreiben
move zustand dunkel
sbn LAMPE HASH("Flur") On dunkel
zustand startet mit −1, einem Wert, den dunkel nie annimmt. So wird beim ersten Durchlauf garantiert einmal geschrieben.
Wer nur bei Änderungen schreibt, verlässt sich darauf, dass das Gerät den Wert behält. Baut jemand eine Lampe neu oder schaltet sie von Hand um, erfährt der Chip davon nichts. Für Sicherheitsfunktionen schreibst du deshalb lieber jeden Takt.
Ein Zähler für die Schaltvorgänge ist eine gute Sonde: Steigt er ständig, flattert irgendwo eine Bedingung – etwa eine fehlende Hysterese.
Schaubild
Übung
Aufgabe
Steuere die Flurlampen „Flur“ nach dem Tageslichtsensor „Aussen“:
- dunkel, wenn
SolarIrradianceunter 100 liegt oder der Sensor fehlt - alle Lampen mit einem Batch-Befehl schalten
- nur schreiben, wenn sich
dunkeländert, und jeden Schreibvorgang auf der Anzeige „Schaltungen“ zählen
Hinweise
Hinweis 1
sge dunkel dunkel SCHWELLE, dann seqz – so wird NaN zu „dunkel“.
Hinweis 2
beq dunkel zustand start überspringt alles, wenn sich nichts geändert hat.
Hinweis 3
Bei einer Änderung: zustand merken, sbn, Zähler hoch, Anzeige.
Quiz
3 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