Forum: Mikrocontroller und Digitale Elektronik Programm springt ständig in Interrupt ISR_INT0


von Markus (Gast)


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

von Markus (Gast)


Lesenswert?

Sorry, dass ich unnützer Weise noch einen Thread aufgemacht habe.
Bin gerade selbst drauf gekommen. Man sollte auch bei EICRA die richtige 
Einstellung vornehmen...

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.