Ich möchte meine Taster nicht mehr zyklisch abrufen, sondern auf
Interrupts umstellen. Durch das Datenblatt für meinen ATmega169 habe ich
vor meiner main das geschrieben.
1 | //######################################################################
|
2 |
|
3 | EIMSK|= 0x81; // Pin Change Interrupt Enable 1 und INT0
|
4 | EICRA|=0x2; // The falling edge of INT0 generates an interrupt request.
|
5 | EIFR |= 0x81; // Pin Change Interrupt Flag 1 und INT0
|
6 | PCMSK1 |=0b11111; //PCINT8 -12 Frei geben PCI1 lößt aus
|
7 |
|
8 |
|
9 | sei();
|
10 |
|
11 | //######################################################################
|
Die beiden ISR stehen in einer anderen ".c" Datei und sieht wie folgt
aus
1 | //######################################################################
|
2 | /* External Interrupt Request 0 */
|
3 |
|
4 | ISR(INT0_vect)
|
5 | {
|
6 | a=1;
|
7 |
|
8 | }
|
9 |
|
10 |
|
11 | /* Pin Change Interrupt Request 1 */
|
12 | ISR(PCINT1_vect)
|
13 | {
|
14 | a=2;
|
15 |
|
16 | }
|
17 |
|
18 | /################################################################
|
Drücke ich die Taste an INT0 oder PCINT8-12 springet das Programm
dennoch nicht in die ISR. Dort habe ich brakpoints gesetzt.
Nach allem was ich durchgelesen habe sollte es so funktionieren...