Hallo Zusammen,
irgendwie komme ich mit einem simplem Programmteil für einen Tiny25 nicht weiter.
Ich habe mal das Problem auf so wenig Code wie möglich reduziert.
Die LED soll einfach nur jede Minute kurz aufblinken. Leider blinkt sie viel zu schnell und mein Zähler i wird trotz volatile ignoriert.
Hier der Code:
Egal welchen vergleichswert ich für i nehme die LED blinkt immer genauso schnell.Code:#include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> // Flags f�r IRQs volatile uint8_t EveryMinuteFlag; // Z�hler f�r IRQs volatile uint8_t i=0; int main(void) { // Ausg�nge setzen DDRB |= ((1 << PB2) | (1 << PB3) | (1 << PB1)); //Action-Flags EveryMinuteFlag = 1; // Timer0 Prescaler 1024 TCCR0B |= ((1<<CS02) | (0<<CS01) | (1<<CS00)); OCR0A = 0x00; // OCR0B = 0x00; // Interrupts f�r Timer0 TIMSK |= (1<<OCIE0A); //Interrupt bei Compare TIMSK |= (1<<TOIE0); //Interrupt bei Overflow // Interrupts aktivieren sei(); while (1) { if (EveryMinuteFlag) { // LED bliken lassen PORTB |= ( 1 << PB2 ); _delay_ms(5); PORTB &= ~( 1 << PB2 ); EveryMinuteFlag = 0; } } } SIGNAL(SIG_OVERFLOW0) { i++; if (i==250) { EveryMinuteFlag=1; i=0; } }
Ich mach daran seit Tagen rum und es will einfach nicht. Hat jemand noch ne Idee?
Vielen Dank
daniel







Zitieren

Lesezeichen