Hallo, ich bin noch relativ neu im uC programmieren und habe folgendes Problem. Ich möchte eine while Schleife mit dem Overflow Interrupt meines Timers1 stoppen. Der Overflow Interrupt funktioniert wenn ich die while Schleife auskommentiere(und ein delay einfüge). Wenn er jedoch in der while Schleife ist, springt er nicht in den Interrupt bzw. er ruft ihn nicht auf (habs mit Breakpoints versucht). Hier die Funktionen bzw. der Code:
1 | static volatile char checkForOF; |
2 | |
3 | void initTimer1(){ |
4 | TCCR1A &=~((1<<WGM10)|(1<<WGM11)); //normal Mode |
5 | TCCR1B &=~((1<<WGM12)|(1<<WGM13)); |
6 | TIMSK |= (1<<TOIE1); //activates the overflow interrupt |
7 | }
|
8 | |
9 | void startMeasuring(){ |
10 | unsigned int value; |
11 | unsigned int oldADC=readADC(); |
12 | unsigned int newADC; |
13 | checkForOF=1; |
14 | |
15 | TCCR1B |= ((1<<CS10)|(1<<CS11)); |
16 | TCCR1B &= ~(1<<CS12); //start Timer 1 |
17 | |
18 | while(checkForOF){ //as long as no interrupt |
19 | newADC=readADC(); |
20 | if(newADC>oldADC){ |
21 | value=TCNT1; |
22 | }
|
23 | }
|
24 | TCCR1B &=~ ((1<<CS12)|(1<<CS11)|(1<<CS10));//stop Timer 1 |
25 | TCNT1=0; |
26 | }
|
27 | |
28 | ISR(TIMER1_OVF_vect){ |
29 | checkForOF=0; |
30 | }
|
Ich hoffe ihr könnt mir weiterhelfen. Danke für eure Hilfe Lukas