Hallo ihr,
hab da ein kleines Problem mit meinem Programm. Ich habe den Timer0 als Overflow interupt. bei einem Interrupt soll er den zähler i um eins erhöhen bis 50 und dann wieder zurücksetzten. Gleichzeitig vergleicht er i mit x und solange i<x setzt er den PORTC und sonst setzt er ihn zurück.
Nun mein Problem wenn ich x in meiner endlosschleife eine Wert gebe ist der PORT die ganze aus. Geb ich ihm einmal vor der Endlosschelfie einen Wert klappts.
Weiß jemand was ich falsch mache?
Danke schonmal
Hier noch der Code:
Code:#include <avr/io.h> #include <avr/interrupt.h> uint8_t x ; uint8_t i = 0; //_____________Interrupt routine start ISR (SIG_OVERFLOW0) { if (i>=50) i=0; if (i<x) PORTC = 0xff; else PORTC = 0x00; i++; } //______________Interrupt routine end int main(void) { DDRC = 0xff; PORTC = 0x00; TCCR0 |= (1<<CS02)| (1<<CS00) ; //Teiler setzten TIMSK |= (1<< TOIE0); //Timer0 Interrupt freigeben sei(); //Interupt Global aktivieren x=45; //hier gehts for(;;) { x=45; //hier nicht } }







Zitieren

Lesezeichen