ich benutzt den atmega8 und mir ist folgendes problem unter die finger geraten. wenn ich im interrupt von timer0 einen for schleife ausführen will scheint der avr keinen mehr interrupt verrbeiten zukönnen. hier mein interrupt code:
1 | ISR(TIMER0_OVF_vect){ |
2 | cli(); |
3 | |
4 | for(j=0;j==7;j++){ |
5 | led[j]++; |
6 | //motor
|
7 | if(bit_is_set(OUTPORT,j)){ //puls |
8 | if(led[j] >= soll[j]){ |
9 | OUTPORT&= ~(1<<j); |
10 | led[j]=0; |
11 | }
|
12 | }else{ //pause |
13 | if(led[j]>=pause_soll[j]){ |
14 | led[j]=0; |
15 | OUTPORT|= (1<<j); |
16 | }
|
17 | }
|
18 | }
|
19 | |
20 | timer0_preload(preload); |
21 | sei(); |
22 | }
|
variablen erklährung: "led" ist der wert wieoft der timer durchgelaufen ist, also ein ist-wert "OUTPORT" ist keine variable sonder ein define von portb "soll" ist der wert wieoft der timer durchlaufen soll und wird von einen funtion gesetzt "pause_soll" ist das gegenstück zu "soll" nur für die den teil des pwms in dem der pegel low sein soll ich denke der rest ist selbst erklärend. danke im voraus