alecs
27.03.2006, 18:10
Hallo,
ich möchte aller 3 sekunden eine aufgabe (Beschleunigen) ausführen, doch es funktioniert nicht :(
der Code sind folgendermaßen aus (gekürzt):
#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
ich möchte aller 3 sekunden eine aufgabe (Beschleunigen) ausführen, doch es funktioniert nicht :(
der Code sind folgendermaßen aus (gekürzt):
#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