Hallo,
möchte mit meinem Taster, Anschluss an INT0, ein Interrupt Routine
auslösen. Der Taster zieht beim betätigen das Potenzial auf Masse,
unbetätigt 5V. Habe schon alles versucht jedoch kann ich den Modus des
folgenden Programms beim betätigen des Tasters nicht ändern.
1 | #include <avr/io.h>
|
2 |
|
3 | #include <avr/interrupt.h>
|
4 |
|
5 |
|
6 |
|
7 | #define F_CPU 8000000UL
|
8 |
|
9 |
|
10 |
|
11 | int modus=0;
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | int main(void)
|
24 |
|
25 | {
|
26 |
|
27 | DDRA=0xff;
|
28 |
|
29 | DDRB=0x00;
|
30 |
|
31 |
|
32 |
|
33 | PORTA=0xf0;
|
34 |
|
35 |
|
36 |
|
37 | MCUCR=0x02;
|
38 |
|
39 | GIMSK=0x40;
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | sei();
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 | while(1)
|
54 |
|
55 | {
|
56 |
|
57 | if (modus==0)
|
58 |
|
59 | {
|
60 |
|
61 | PORTA=0xf0;
|
62 |
|
63 | }
|
64 |
|
65 | else
|
66 |
|
67 | {
|
68 |
|
69 | PORTA=0x0f;
|
70 |
|
71 | }
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 | //TODO:: Please write your application code
|
78 |
|
79 | }
|
80 |
|
81 | return 0;
|
82 |
|
83 | }
|
84 |
|
85 |
|
86 |
|
87 | ISR(EXT_INT0_vect)
|
88 |
|
89 | {
|
90 |
|
91 | modus=1;
|
92 | }
|
Der Interrupt soll bei fallender Flanke ausgelöst werden. Welches
Register könnte falsch eingestellt sein? Ist der Interrupt vektor
richtig?