Hallo,
bin Neuling in sachen µc programmierung in C.
Habe zum Test folgendes vor.
LED 1 ist ständig an
Bei Steigender Flanke an INt0 soll meine 2. LED leuchten.
ZUm Einsatz kommt ein Atmega16 auf einen Pollin Experimentiertboard.
Die Port Einstellungen für die LEDS sind korrekt, auch bekomm ich einen
Highpegel an PD2 wenn ich meinen Taser drücke.
Hier mein Code:
1 |
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <avr/interrupt.h>
|
5 |
|
6 |
|
7 |
|
8 | ISR(INT0_vect) // Folgende Code wird bei Interrupt VON int0 AUSGEFÜHRT
|
9 | {
|
10 |
|
11 | PORTD = 0b01000000;// LED 2 ist an
|
12 |
|
13 | }
|
14 |
|
15 | int main (void) {
|
16 | DDRD = 0b01100000;//POrtD.6 und portD.7 auf Ausgang, rest von PortD auf Eingang
|
17 |
|
18 |
|
19 | //KOnfig INT0
|
20 | MCUCR |= (1<< ISC01); //Interrupt bei Steigener Flanke
|
21 | MCUCR |= (1<< ISC00); //Interrupt bei Steigener Flanke
|
22 |
|
23 | GCICR |= (1<<INT0); // INT0 Interrupt einschalten
|
24 |
|
25 |
|
26 | //Hauptschleife
|
27 | while(1)
|
28 | {
|
29 | sei(); // schaltet global Interrupts ein
|
30 |
|
31 |
|
32 |
|
33 | PORTD = 0b00100000;// LED 1 ist an
|
34 |
|
35 | }
|
36 | return 0;
|
37 | }
|
Hoffe jemand kann mir meinen Fehler zeigen.
MFG