Hallo, Ich bin neuling in der Programierer Welt. Wollte gerne mal was mit einen Interrupt auslösen. Das Program erzeugt ein lauflicht und sobald ich einen taster drücke gehen alle Lampen an und sollen auch an bleiben. Mein Problem ist nun das der Interrupt wohl ausgelöst wird, aber das Lauflicht danach weiter läuft. Bitte um euere Hilfe Hier ist der Code
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | #include <inttypes.h> |
4 | #include <avr/iom32.h> |
5 | #include <stdint.h> |
6 | #include <util/delay.h> |
7 | #include <stdlib.h> |
8 | #include <stdio.h> |
9 | int i; |
10 | i=0; |
11 | ISR(INT2_vect) |
12 | {
|
13 | PORTD=0xf0; |
14 | i=2; |
15 | }
|
16 | |
17 | main() |
18 | {
|
19 | DDRD = 0xF0; |
20 | PORTD= 0x00; // D Ports als Eingänge festlegen |
21 | DDRB = 0x00; // B Ports als Eingänge festlegen |
22 | PORTB= 0xFF; // Pullup für Port B festlegen |
23 | DDRA = 0x00; // C Port als Ausgänge festlegen |
24 | |
25 | DDRC = 0xFF; |
26 | GICR |= (1<<INT2); // INT2 aktivieren# |
27 | MCUCR |= ((1<<ISC01) | (1<<ISC00)); // bei steigender Flanke |
28 | |
29 | while(1) |
30 | {
|
31 | sei(); |
32 | |
33 | if(i==0) |
34 | {
|
35 | PORTD=0x10; |
36 | _delay_loop_2(65000); |
37 | _delay_loop_2(65000); |
38 | _delay_loop_2(65000); |
39 | _delay_loop_2(65000); |
40 | _delay_loop_2(65000); |
41 | PORTD=0x20; |
42 | _delay_loop_2(65000); |
43 | _delay_loop_2(65000); |
44 | _delay_loop_2(65000); |
45 | _delay_loop_2(65000); |
46 | _delay_loop_2(65000); |
47 | PORTD=0x40; |
48 | _delay_loop_2(65000); |
49 | _delay_loop_2(65000); |
50 | _delay_loop_2(65000); |
51 | _delay_loop_2(65000); |
52 | _delay_loop_2(65000); |
53 | PORTD=0x80; |
54 | _delay_loop_2(65000); |
55 | _delay_loop_2(65000); |
56 | _delay_loop_2(65000); |
57 | _delay_loop_2(65000); |
58 | _delay_loop_2(65000); |
59 | }
|
60 | }
|
61 | }
|