Hallo,

ich möchte aller 3 sekunden eine aufgabe (Beschleunigen) ausführen, doch es funktioniert nicht

der Code sind folgendermaßen aus (gekürzt):
Code:
#define Task_1 0

volatile unsigned int Timer1_ms;
volatile unsigned char TaskFlags;

int main(void)
{
	init();				// init ports && ext Interrupts
	
	ioinit();			// init COM	
	fdevopen(uart_putchar, NULL, 0);
	
	timer1_init(); 		     // init Timer1	
       TIMSK |= (1<<TOIE0); // timer0

	twi_init();	
		
	sei();       		// Interrupts aktivieren

...

        if ( TaskFlags & ( 1 << Task_1) )
       {
	     TaskFlags &= ~(1<< Task_1);
               ....
        }
        else
        { 
        ...
        }
}

void timer1_init(void)
{
	TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
  
	TCCR1B = (0<<CS12) | (0<<CS11) | (1<<CS10);
	
	TIMSK &= ~0x3c;			
	
	OCR1A = 0;
	OCR1B = 0;
}

SIGNAL (SIG_OVERFLOW0)
{
	Timer1_ms++;	
	if(Timer1_ms % 3 == 0) // % 3 == mod 3 for 3 seconds
	{
		TaskFlags |= ( 1<< Task_1 );
	}
}
Woran kann das liegen ?

danke