Hallo Kani,
für eine Softwarelösung ist sowohl Dinos Assemblerbeispiel, wie auch Rangars C-Beispiel schön kurz gehalten und sauber programmiert.
Noch etwas kürzer wird der Code wahrscheinlich, wenn man die OutputCompare-Funktion der AVR-Timer-Module nutzt. Der Code beschränkt sich hierbei auf die einmalige Timer-Initialisierung und die Änderung des PWM-Verhältnisses im Programmablauf durch Schreiben in die entsprechenden Compare-Register. Man kann hier PWM mit sehr kleinen Periodendauern erzeugen, ohne daß der Programmablauf dadurch beeinträchtigt wird, keine Auslastung des AVRs, dein Programm kann andere Sachen abarbeiten, zum Beispiel Tasten auswerten o.ä.
Ich hatte mal mit einem ATtiny2313 drei PWM-Kanäle (zwei Timer wurden genutzt) für Ansteuerung eines LED-Ringlichts und zweier selektiver LED-Lampen zur einstellbaren Ausleuchtung eines Meßtisches mit Kamerasystem gebastelt. PWM mittels Timer-Modul unterstützen auch schon kleinere AVRs. Für ganz schnelle PWM mit hoher Auflösung gibts die AT90PWMx AVR-Mikrocontroller, für die Ansteuerung von LEDs reicht aber auch ein ganz einfacher AVR. Das Timer-Modul muß nur die OutputCompare-Funktion unterstützen.
Grüße,
Dirk
Das ist aber eine Menge Text. Geht das nicht noch einfacher?
für eine Softwarelösung ist sowohl Dinos Assemblerbeispiel, wie auch Rangars C-Beispiel schön kurz gehalten und sauber programmiert.
Noch etwas kürzer wird der Code wahrscheinlich, wenn man die OutputCompare-Funktion der AVR-Timer-Module nutzt. Der Code beschränkt sich hierbei auf die einmalige Timer-Initialisierung und die Änderung des PWM-Verhältnisses im Programmablauf durch Schreiben in die entsprechenden Compare-Register. Man kann hier PWM mit sehr kleinen Periodendauern erzeugen, ohne daß der Programmablauf dadurch beeinträchtigt wird, keine Auslastung des AVRs, dein Programm kann andere Sachen abarbeiten, zum Beispiel Tasten auswerten o.ä.
Ich hatte mal mit einem ATtiny2313 drei PWM-Kanäle (zwei Timer wurden genutzt) für Ansteuerung eines LED-Ringlichts und zweier selektiver LED-Lampen zur einstellbaren Ausleuchtung eines Meßtisches mit Kamerasystem gebastelt. PWM mittels Timer-Modul unterstützen auch schon kleinere AVRs. Für ganz schnelle PWM mit hoher Auflösung gibts die AT90PWMx AVR-Mikrocontroller, für die Ansteuerung von LEDs reicht aber auch ein ganz einfacher AVR. Das Timer-Modul muß nur die OutputCompare-Funktion unterstützen.
Grüße,
Dirk