Gast
#1932408
Hallo, ich verwende den ATmega32 und würde gerne über einen Timer einen Interrupt auslösen. Da es dabei Probleme gibt, habe ich das Programm zunächst reduziert - die Interrupt-Funktion ist zunächst leer. Der folgende Code sollte den Timer und den Interrupt entsprechend einstellen und anschließend Port B zunächst auf 0x0F und anschließend auf 0xF0 stellen und dann verharren. An Port B sind zu Testzwecken LEDs angeschlossen.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Starte ich den ATmega32, so flackern die LED 0-3 und 4-7 abwechselnt. Daraus schließe ich, dass der Mikrocontroller ständig neugestartet wird, ansonsten würde die LEDs nicht flackern, sondern einige leuchten und einige aus sein. Kommentiere ich "TIMSK |= (1 << OCIE0);" oder "sei();" aus, so funktioniert dies korrekt. Deshalb denke ich, dass der Interrupt schuld sein muss. Kann mir jemand sagen, was ich falsch mache? (Im AVR Studio Simulator scheint er auch immer wieder zu resetten.) Gruß Ben P.S.: STK 500 + AVRISP mkII (3.6864MHz Quarz)