Programmierung: Ausgabe einer PWM (Pulsweitenmodulation) an einem beliebigen Pin des AVR-Mikrocontrollers
Teilen
In diesem Programm werden Interrupts verwendet, um jedes Mal einen Interrupt auszulösen, wenn der PWM-Zähler den oberen Wert im ICR1 (Input Capture Register 1) erreicht. Innerhalb der ISR (Interrupt Service Routine) werden alle Pins, die das PWM-Signal ausgeben, auf High gesetzt. Dies dient dazu, alle Pins als Puls zu starten. Wenn der Timer die gewünschte Breite erreicht, geht dieser einzelne Pin auf Low. Dabei wird das TCNT1-Register verwendet, um die Zählwerte zu bestimmen. Um den Interrupt für den Timer zu aktivieren, wird das Bit TIMSK1 (Timer Mask) OCIE1A (Output Compare Interrupt Enable 1A) gesetzt.