Hallo,
ich versuche gerade eine Soft-PWM mit dem Capture-Match und dem
Overflow-Interrupt von Timer1 zu entwerfen. Das Programm soll zur
Helligkeitssteuerung von LEDs verwendet werden. Die definierten Werte
sind frei gewählt (ohne PWM-Frequenzberechnung). Im späteren Programm
soll der Compare wert über Taster verstellbar sein.
In einem Beitrag habe ich gelesen, dass PWM mit den beiden Interrupts
anscheinend nicht funktionieren sollte, jedoch verstehe ich das nicht.
Ist an der Überlegung etwas falsch oder kommen sich da einfach die
beiden Interrupts in die Quere?
#define VORLADEWERT 20000UL
#define COMPARE 50000UL
void main(void)
{
DDRC=0xFF;
PORTC=0x00;
//Prescaler auf 1, Timer läuft nach Compare weiter
TCCR1B|=(1<<CS10);
//Interrupt für Compare Mode A frei, Timer Overflow frei
TIMSK|=((1<<OCIE1A)|(1<<TOIE1));
TCNT1= VORLADEWERT;
OCR1A=COMPARE;
sei();
while(1);
}
ISR (TIMER1_OVF_vect)
{
TCNT1=VORLADEWERT;
PORTC=0x00;
}
ISR (TIMER1_COMPA_vect)
{
PORTC=0xFF;
}
Gruß,
Tom