U23 2005/Firmware-Makros

From C4 Wiki
< U23 2005
Revision as of 13:31, 4 November 2005 by Pylon (talk | contribs) (MACRO_FADE_CHANNEL: Mglw. ist Delay noch falsch erklärt. Da ist ausprobieren angesagt...)
Jump to: navigation, search

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: Lässt die CPU idlen und spart dadurch Strom.

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.

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.

MACRO_FADE_CHANNELS

Argumente: BrightnessR BrightnessG BrightnessB

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

Funktion: Setzt alle Farbkanäle direkt auf die jeweils angegebenen Helligkeitswerte.

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.

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