Forum: Compiler & IDEs Atmega 16 -> ext. Interrupts - Anfängerfrage


von Jericho_one (Gast)


Lesenswert?

Hallo!

Ich versuche momentan einen ext. Interrupereignis über einen Taster zu 
Programmieren.(INT0, PD2)
Aber ich bekomme es einfach nicht zum laufen, daher ein paar Fragen:

- interrupt.h ist eingebunden.
- GICR |= (1<<INT0); //Interrupt INT0 aktivieren
- MCUCR |= (1<<ISC01); //Interrupt INT0 auf steigende Flanke setzen
  MCUCR |= (1<<ISC00);

- Taster ist als Eingang konfiguriert

- ISR(INT0_vect) {} ist gesetzt.
  Dazu eine Frage: Muss ich hier alle Tasten/Display neu Initialisieren 
oder übernimmt er das vom Hauptprogramm?


Eigentlich sollte es doch schon laufen oder?

Danke

von johnny.m (Gast)


Lesenswert?

1.: Für Taster nimmt man keine externen Interrupts.
2.: Wie sieht es mit Entprellung aus?
3.: Stimmt die Flankeneinstellung überhaupt? Taster sind i.d.R. nach 
Masse angeschlossen, um die internen Pull-Ups nutzen zu können. Das gibt 
beim Drücken eine fallende Flanke.
4.: Schau Dir bitte das Tutorial an!

von Karl H. (kbuchegg)


Lesenswert?

5. sind die Interrupts mittels sei überhaupt zugelassen?
6. Du sitzt vor deinem Code und kannst das Problem nicht sehen.
   Wir haben keinen Code und trotzdem denkst du wir wüssten
   was du programmiert hast. Das ist doch nicht dein Ernst?

von Sebastian S. (goerk)


Lesenswert?

int main(){

  //initialilze

  GICR |= (1<<INT1);      // enable INT1

  MCUCR |= (1<<ISC11);    // INT1 on falling edge

  sei();                              // general Interrupt enable

  while(1){

         }
}

ISR(INT1_vect) {

}

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.