Forum: Mikrocontroller und Digitale Elektronik Interrupt Springt nicht in die ISR (ATmega169)


von Gendo I. (gendoikari)


Lesenswert?

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...

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

wie ist a deklariert?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Das ist Märchen-Code, da brauch man nix zu deklarieren.

von Gendo I. (gendoikari)


Lesenswert?

Märchen-Code?

von Gendo I. (gendoikari)


Lesenswert?

PC neu gestartet und neu geflasht. Dann ging's plötzlich.
Keine Ahnung warum...

von Purzel H. (hacky)


Lesenswert?

Taster fragt man aber zyklisch ab. Speziell auch zur Entprellung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.