Gast
#4003796
Hallo, ich beschäftige mich aktuell mit Interrupts und habe ein Problem. Ich verwende einen ATMEGA8 mit internen 8MHz. Ich habe an Pin PD3 einen Taster gehängt (natürlich mit 10k gegen VCC) mit dem ich den Pin PD3 auf GND ziehe. Dieser Pin ist der Interrupteingang INT1 und dieser soll in der ISR eine Variable verändern. Es soll bei jedem Tastendruck die Variable s2 zwischen 1 und 2 wechseln. Diese Variable wird in meinem Hauptprogramm ausgwertet und eine LED an- bzw. ausgeschaltet. Damit das Prellen des Tasters keinen Einfluß hat, habe ich in der ISR- Schleife eine Wartezeit definiert (ich weiß man sollte in ISRs keine "dummen" Wartezeiten programmieren aber für meine Anwendung reicht es aus). Als Initialwert definiere ich in dem Hauptprogramm s2=2 und somit wird die LED eingeschaltet. Das funktioniert auch. Danach betätige ich den Taster und somit soll die Variable in der ISR von 2 auf 1 geändert werden und die LED soll ausgehen. Auch das funktioniert. ABER: Wenn ich jetzt den Taster wieder betätige passiert nichts mehr.... Anbei mein 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 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
Danke schon mal und Gruß Uwe