Forum: Mikrocontroller und Digitale Elektronik [AVR] (ext) Interrupt aktivieren?


von Christian F. (christian_f)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

da mir die gefundenen Foreneinträge nicht weiter helfen, stelle ich 
meine Frage. Ich habe vorher das Kapitel "Programmieren mit Interrupts" 
im ACR-Tutorial gelesen und m.E. alles befolgt, was das Datenblatt und 
das Tutorial sagt.

Ziel:
Ich will mit Hilfe eines ATmega2560 und einem externen Taster, der 
PortD.0 auf Gnd zieht, einen Interrupt auslösen. Sichtbar soll dies 
sein, in dem eine LED o.ä. angeschaltet werden soll (PORTC). Zusätzlich 
habe ich eine while(1) in die ISR gesetzt, damit diese nicht mehr 
verlassen wird.

In der Hauptschleife des Programms zählt eine 8-Bit Variable hoch, die 
gleichzeitig an 8 LEDs ausgegeben wird. So kann ich überprüfen, ob der 
Controller noch Arbeitet. Sollte der Interrupt Int0 auslösen, müssten 
die LEDs stehen bleiben.

Mein Problem ist jedoch, dass der Interrupt nicht auslöst.

Neben bei enthält die Datei noch Code für den AD-Wandler, dessen 
Interrupt jedoch auch nicht auslöst.

Ich habe das Gefühl, dass ich eine Art globalen ON/OFF-Schalter für die 
Interrupts übersehen habe.

Wäre jemand so freundlich und nimmt mir die Tomaten von den Augen?

mfg

Christian

von Christian F. (christian_f)


Angehängte Dateien:

Lesenswert?

Sorry, die ISR in der Main.c haben noch gefehlt.

von Lehrmann M. (ubimbo)


Lesenswert?

Servus,

hast du vielleicht mal das Datenblatt betrachtet. Du sollst nicht beim 
Tutorial Code-Klau betreiben sonder das Datenblatt lesen und dann selbst 
das machen =)

Da steht's ziemlich ausführlich ...

von Christian F. (christian_f)


Lesenswert?

Wenn du den Code betrachtest, wird dir auffallen, dass ich mich ans 
Datenblatt gehalten habe...

von Christian F. (christian_f)


Lesenswert?

Ich habe mittlerweile das AVRStudio installiert und meine Code 
simuliert. Sobald ich im Simulator händisch das Interrupt-Flag im 
Register EIFR setzen (INTF0), wird meine ISR abgearbeitet.
Stellt sich also nun die Frage, warum das Interrupt-Flag nicht gesetzt 
wird.

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.