Guten Abend, eins vorweg: ich habe das Forum ausgiebig nach dem Problem durchsucht. Hierbei konnte ich nützliche Tipps zum Abfragen von Interrupts über Taster gewinnen. An diesen habe ich auch meinen Code (s.u) orientiert. Ich benutze das myAVRBoardMK3 mit einem Joystick an PortK (bei Betätigung auf Masse) und Port L als Ausgang mit angeschlossenen LEDS. Der Controller ist der At2560. Mit Interrupts versuche ich auf Reaktionen des Joysticks zu reagierten und dann eine LED einzuschalten. Leider ist die Reaktion gleich 0. Was ist falsch? Vielen Dank! Schöne Grüße, jo
1 | #include <avr/io.h> |
2 | #include <avr/interrupt.h> |
3 | |
4 | int main (void) |
5 | {
|
6 | DDRL |= (1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0); //Port L Ausgang |
7 | DDRK |= (0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0); //Port K Eingang |
8 | PORTK= 0xFF; // alle Pull-Up Widerstände aktivieren |
9 | //Int0 wird bei fallender Flanke ausgelöst
|
10 | MCUCR |= (1 << ISC01); |
11 | MCUCR &= ~((1 <<ISC00)); |
12 | |
13 | |
14 | sei(); |
15 | while(1) |
16 | {
|
17 | |
18 | }
|
19 | |
20 | |
21 | |
22 | }
|
23 | ISR(INT0_vect) |
24 | {
|
25 | |
26 | PORTL |= (1<<0); //PortC.0=1 setzten |
27 | }
|