Hallo,
ich benutze an meinem ATmega169 alle 4 PWM Kanäle, daher
kann ich leider keinen weiteren timer nutzen. Ich möchte nun
aber zu einer festen Periode Aktionen durchführen, dazu wollte
ich die Periodendauer des PWM nutzen, die ja konstant sein sollte
und vom aktuellen Wert des PWM unabhängig ist. Leider ist es nun
so, dass meine dadurch gesteuerte LED immer in unterschiedlichen
Perioden blinkt, wenn ich den PWM-Wert verändere. Was mache ich
falsch???
Wie gesagt, ich möchte einen Interrupt zum Ende einer PWM Periode
und nicht dann, wenn die Flanke kommt.
Danke und GrußCode:SIGNAL (SIG_OUTPUT_COMPARE1A) { // count for 100ms routine ui_interruptCounter0++; if (ui_interruptCounter0 > TIME_100_MS) { timer100ms(); ui_interruptCounter0 = 0; } } static void initPWM(void) { // init pwm timer // 8bit timer/counter 0 TCCR0A = (1<<WGM00)|(1<<COM0A1)|(1<<CS01); // set initial pwm OCR0A = 200; // 16bit timer/counter 1 TCCR1A = (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1); TCCR1B = (1<<CS10); // set initial pwm OCR1A = 200; OCR1B = 200; // 8bit timer/counter 2 TCCR2A = (1<<WGM20)|(1<<COM2A1)|(1<<CS21); // set initial pwm OCR2A = 200; } static void initInterrupt(void) { // switch interrupt on TIMSK1 |= (1<<OCIE1A); // enable interrupts sei(); } timer100ms() { // control LED }
RICOLA







Zitieren

Lesezeichen