< Projekte
PIC2WS2812
Steuerung von WS2812-LEDs mit 8-Bit PIC Microcontroller
Grundlagen
PIC Lösung
Software
Defines

Die Software

Download: Hier klicken zum Herunterladen des Sourcecodes

Das Programm ist in Assembler geschrieben und besteht aus verschiedenen Modulen. Der Code für Module, deren Funktion in der jeweiligen Applikation nicht benötigt wird, kann auch weggelassen werden (ggf. nicht einbinden lassen). D.h. Alles, außer dem Basis-Modul, ist optional und schon das Basis-Modul allein ermöglicht das Senden von Daten aus einem Anwender-Programm an die LEDs.

Basis-Modul: enthält die Initialisierung, sowie die Interrupt-Routine und den Code für das Senden von Daten an die LEDs unter Verwendung eines FIFO Speichers.

Patternprozessor-Modul: Routinen, um Leuchtmuster ("Patterns") aus dem Speicher (ROM oder RAM) an definierter Stelle der LED-Kette erscheinen zu lassen.

Patternmover-Modul: Erweiterung zum Pattern Prozessor. Bewegt die Patterns mit vorgegebener Geschwindigkeit über die LED-Kette.

Microstep-Modul: Erweiterung zum Pattern Prozessor/mover. Erlaubt die Positionierung der Patterns in Bruchteilen von LED-Schritten (aktuell implementiert: 1/8 Pixel-Schritt)
 
Timer-Modul: Hilfsroutinen zur Messung von Zeit, wird vom PatternMover benötigt. Kann evtl. auch für Anwender-Software nützlich sein (Delays etc.).

Demo-Modul: lässt zu Demo- und Testzwecken vordefinierte Leuchtmuster erscheinen und beinhaltet ein primitives Interface, um die Software über die serielle Schnittstelle (USART) zu steuern. Benötigt alle anderen Module.

Hinweise zur Assemblierung:
Um den Code zu assemblieren, wird dem Assembler nur die Quelldatei "PIC_2_WS281x.asm" angegeben, alle anderen Dateien werden dann ggf. über #includes automatisch eingebunden. Daher bitte im Projekt unter "Source Files" nicht die anderen Dateien mit eintragen!
Welche Module eingebunden werden sollen, wird durch entsprechende "#define"-Angaben oben in der Datei "PIC_2_WS281x.asm" spezifiziert, z.B. "#define USE_PATPROC" zum Einbinden des Pattern-Prozessors. Soll ein Modul weggelassen werden, empfiehlt es sich, die entsprechende Zeile auszukommentieren (";" einfügen), statt sie zu löschen.

Weitere Hinweise zu den #defines gibt es hier.

Weiter geht's mit der Beschreibung des Basis-Moduls.


Kontakt