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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.