< Projekte PIC2WS2812 |
Steuerung von WS2812-LEDs mit 8-Bit PIC Microcontroller | |
GrundlagenPIC LösungSoftwareDefines |
Die Software![]() 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 |