Difference between revisions of "U23 2005/Firmware-Makros"

From C4 Wiki
Jump to: navigation, search
(MACRO_SLEEP: Zeitgefühl)
(MACRO_NOP)
Line 5: Line 5:
 
'''Argumente:''' (keine)  
 
'''Argumente:''' (keine)  
  
'''Funktion:''' Lässt die CPU idlen und spart dadurch Strom.
+
'''Funktion:''' Bricht die Ausführung des Scripts im aktuellen Zyklus ab.
  
 
== MACRO_FADE_CHANNEL ==
 
== MACRO_FADE_CHANNEL ==

Revision as of 20:48, 10 November 2005

Die Datei script_macros.inc enthält einige Makros mit denen sehr schnell statische Skripts für die Firmware erstellt werden können.

MACRO_NOP

Argumente: (keine)

Funktion: Bricht die Ausführung des Scripts im aktuellen Zyklus ab.

MACRO_FADE_CHANNEL

Argumente: Channel TargetBrightness Delay AddBrightness

Channel: Gibt den Farbkanal an. Mögliche Werte sind ChannelR (Rot), ChannelG (Grün) und ChannelB (Blau).
TargetBrightness: Gibt die Helligkeit des Kanals an. Wertebereich 0 (aus) bis 255 (volle Helligkeit).
Delay: Füge pro Timertakt diesen Wert (1 bis 255) zu einem Verzögerungszähler hinzu. Sollte 255 überschritten werden, wird der Wert in AddBrightness zur aktuellen Helligkeit des Kanals addiert. 0 schaltet das Delay aus.
AddBrightness: Füge pro Timertakt diesen Wert (0 bis 255) zur aktuellen Helligkeit hinzu.

Funktion: Fadet einen gegebenen Farbkanal mit einer gegebenen Geschwindigkeit auf eine gegebene Helligkeit. Die Werte sind immer positiv, es wird aber automatisch erkannt, ob addiert oder subtrahiert werden muss, um die TargetBrightness zu erreichen.

Beispiel:

MACRO_FADE_CHANNEL ChannelR, 120, 0, 1

Die roten LEDs werden pro 1/120 Sekunde (Timertakt) um eine Helligkeitsstufe erhöht. Bei Helligkeitsstufe 120 ist das Makro beendet. Dieses ist nach genau einer Sekunde der Fall.

MACRO_FADE_CHANNEL ChannelG, 160, 0, 4

Die grünen LEDs werden pro Timertakt um vier Helligkeitsstufen erhöht. Bei Helligkeitsstufe 160 ist das Makro beendet. Das ist der Fall nach 160÷4=40 Takten, also 40×1/120=1/3 Sekunde der Fall.

MACRO_FADE_CHANNEL ChannelB, 16, 8, 4

Die blauen LEDs werden pro überlaufendem Delay um vier Helligkeitsstufen erhöht. Bei Helligkeitsstufe 16 ist das Makro beendet. Das ist der Fall nach 16÷4=4 Schritten, jedoch mit einer Verzögerung von 255÷8=32 Takten pro Schritt, also 4×32=128 Takten. Das wären 128×1/120=1.066 Sekunden.

Tipp: Linksschieben von AddBrightness lässt die TargetBrightness doppelt so schnell erreichen ­– Rechtsschieben verlangsamt die Geschwindigkeit um die Hälfte.

MACRO_FADE_CHANNELS

Argumente: BrightnessR BrightnessG BrightnessB

Brightness{R,G,B}: Die Helligkeit des {roten, grünen, blauen} Channels (0-255).

Funktion: Fadet alle Farbkanäle auf die jeweils angegebenen Helligkeitswerte. Die Geschwindigkeit wird dabei von einer vorherigen MACRO_FADE_CHANNEL-Routine übernommen.

MACRO_JUMP

Argumente: RelativeInstructionCount

RelativeInstructionCount: Anzahl der Instruktionen.

Funktion: Springt um eine gewisse Anzahl an Instruktionen zurück. Zu beachten: Die JUMP-Instruktion muss auch übersprungen werden! Beispiel:

1: MACRO_NOP
2: MACRO_JUMP -2  ; springt zu Zeile 1

MACRO_SET_CHANNEL

Argumente: Channel TargetBrightness

Channel: Gibt den Farbkanal an. Mögliche Werte sind ChannelR (Rot), ChannelG (Grün) und ChannelB (Blau).
TargetBrightness: Die Helligkeit (0-255).

Funktion: Setzt den angegebenen Channel auf die angegebene Helligkeit.

MACRO_SLEEP

Argumente: Delay

Delay: Verzögerung in 1/120 sec als 16bit-Zahl (also max. 65535).

Funktion: Wartet die angegebene Zeit.

Kleines Rechenbeispiel zum Zeitgefühl: Die maximal mögliche Verzögerung beträgt 65535 (Takt) × 1/120 (Sekunde/Takt) = 546.125 (Sekunden) == 9 Minuten und 6 Sekunden.

MACRO_WAIT

Argumente: Bitmask

Bitmask: Bitmaske des Kanals.
Rot: (1<<ChannelR)
Grün: (1<<ChannelG)
Blau: (1<<ChannelB)

Funktion: Wartet, bis ein Kanal die gewünschte Helligkeit erreicht hat.

1: MACRO_FADE_CHANNEL ChannelR, 255, 35, 0
2: MACRO_WAIT (1<<ChannelR)

MACRO_CLEAR

Argumente: (keine)

Funktion: Setzt alle Kanäle auf Helligkeit 0 zurück.


-- manuke & Diozaka