Ich möchte mit nem Arduino Mega (ATMega1280) einen Impuls erfassen. Dazu
nutze ich nen Optokoppler um den Impuls auf einen Portpinzu "leiten".
Im Normalzustand ist der Portpin High (Pull-Up) und wenn der Impuls
kommt, wird er auf Low gezogen (Optokopler).
Per Polling kann ich den Impuls (im Moment noch simuliert durch ein
Netzteil, welches die Spannung erzeugt) auch erfassen, nur per Interrupt
(was das eigentliche Ziel ist) klappt es so gar nicht.
Ich habe den Impuls an PORTE4 und PORTB7. An PORTE4 wollte ich mir die
Falling Edge erfassen lassen und initialisere alles so:
1 | // PORT E - 4 -> impulse input
|
2 | DDRE = 0x00;
|
3 | // set INT4 to falling edge
|
4 | EICRB = (1 << ISC41) | (0 << ISC40);
|
5 | // clear pending interrupts
|
6 | EIFR = (1 << INTF4);
|
7 | // enable INT4
|
8 | EIMSK = (1 << INT4);
|
Wenn ich jetzt noch die globalen Interrupts per sei() anmache, sollte ja
eigentlich ein Interrupt (INT4_vect) geworfen werden. Passiert aber
nicht.
Ist mein Initialiserungscode falsch oder habt ihr noch Ideen was ich
falsch gemacht haben könnte. Mich wundert es einfach, dass ich den
Impuls per Polling erfassen kann, aber keinen Interrupt bekomme.