Gast
#2471839
Frohe Weihnachten, ich wollte heute mal eine Interrupt Service Routine ausprobieren, doch das klappt nicht wie ich es mir vorstelle. Hier mal der Code:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
Zweck: Binärer Zähler, der durch Aufrufe der ISR hochzaehlt (f = 1Hz). Zwei Dinge wundern mich doch sehr: -während ich im Debugger und an meinen LEDs sehen kann, wie P1OUT schön inkrementiert wird, zählt i nur einmal auf 1, der Befehl i++ scheint (warum auch immer) danach nicht mehr ausgeführt zu werden. Eine lokale Definition von i in der ISR selbst ändert daran nichts. -wenn ich an der Stelle: //Pins als Output deklarieren P1DIR = 255; noch ein P1OUT = 0 anhänge, leuchtet die LED an P1OUT.0 viel schwächer, und der Zählerstand kommt auch nicht über die 1 hinaus. Ich verstehe echt nicht, was hier vor sich geht, vielleicht kann es mir ein anderer sagen. Achja, falls es was zur Sache tut: ich entwickle mit IAR Kickstart.