Arduino Mega1280 - externer Interrupt

OP #2753974
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.
OP #2754218
Mini Float schrieb:
> Tobias Schlegl schrieb:
>> (Pull-Up)
> Und wo schaltest du den ein?
Ne, ich habe nicht den internen Pull-Up genutzt sondern habe extern 
einen angelötet (10kOhm gegen 5V).

Thomas Eckmann schrieb:
> Gesamter Code als Anhang. 0 Errors, 0 Warnings.
> Sonst kann man nur raten.
Nicht wundern, im Code benutze ich auch Port B.7 Impuls (Port Change 
Interrupt), aber auch das hat nicht funktioniert.

Meine main() sieht ungefähr so aus:
1
impulseCounterInit();
2
sei();
3

4
while(true) {
5
    if(g_ImpulseReceived > 0) {
6
        impulseCounterDistanceRealFire();
7
        g_ImpulseReceived--;
8
    }
9
}
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.