Programm springt ständig in Interrupt ISR_INT0

Gast #2115564
Lesenswert?

Hallo,
ich habe ein Programm mit AVR Studio4 geschrieben. Mein uC ist ein 
ATMega2561.
Mein Problem ist folgendes:
Bei der Simulation springt mein Programm ständig in die ISR des INT0.
Jedoch sollte das Programm die Routine nur aufrufen, wenn auf wirklich 
ein externes Signal am INT0 anliegt. Also wenn ich manuell INT0 '1' und 
'0' setze.

Hier ein kurzer Auszug aus meinem Code:

/****************************TIMER1-Initialisierung*****************/
void Timer1Init(void) {

  TCCR1B=0x00;  //stop Timer
  TCCR1A= 0x00;  //normal Mode
  TIMSK1=0x07;  //compare

  EIMSK |= 0x01;    //enable INT0
  EICRA |= 0x0C;  //rising; 0x04 anyEdge

  TCNT1=44895;
  OCR1A= 20000;
  OCR1B= 20000;
  ICR1 = 0x4e20;    //20000

  TCCR1B= 0x02;  //Vorteiler 8  //start Timer
}

/******************************EXTERNER Interrupt*****************/
ISR (INT0_vect)
{
  TCNT1= ALFA;
  TCNT0= 0;
  warte++;
}

Also ich habe mit "EIMSK |= 0x01;" INT0 aktiviert. Mit "EICRA |= 0x0C;" 
habe ich festgelegt, wann er triggern soll.
Mit anderen Worten, er soll bei steigender Flanke des am INT0 Ports 
anliegendeden Signals in die INT0_vect Routine reinspringen.
Und nicht fast 5000 mal innerhalb 66ms.

Jemand ne Idee woran es liegen könnte?

Danke und Gruß
Markus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren