Forum: Mikrocontroller und Digitale Elektronik Interrupt doppelt benutzen


von cerberus (Gast)


Lesenswert?

Hallo liebe Forennutzer.
Ich würde gerne einen externen Interrupteingang des mega128 benutzen,
um die Betriebsspannung zu überwachen.
Der Interrupt soll auf eine fallende Flanke programmiert werden, dann
wird der Prozessor runtergetaktet und alles Überflüssige abgeschaltet
um die Backup-Batterie zu schonen.
Frage:
Kann ich in der Interrupt-Routine den Eingang auf eine steigende Flanke
umprogrammieren, so dass ich auch bei Rückkehr der versorgungsspannung
einen Interrupt auslösen kann?
Die Aufbereitung, welche Flanke es nun war, muss dann natürlich in der
I-Routine erfolgen.

von D. W. (dave) Benutzerseite


Lesenswert?

Klar kannste in der ISR den IRQ wieder umstellen.
Wenn du aber eh nirgendes speicherst, obs grad falling oder rising edge
ist, kannste auch einfach auf "on any change" schalten, d.h. egal ob
hoch oder runter.

Dann prüfst du einfach, ob der PIN high oder low ist, und weist dann,
ob ein- oder ausschalten.

von Winfried Jaeckel (Gast)


Lesenswert?

Ich würde auf jede Flanke reagieren (fallend und steigend) und in der
ISR den Portpin auslesen (wenn das nicht gehen sollte was ich nicht
glaubekönnte mann eien anderen für diesen zweck nutzen)um die
Spannungszustand zu bestimmen. Das ist in jedem Falle fehlerfrei
programmmierbar. Das Eergebnis würde ich direkt in ein Flag übertragen
welches im Hauptprogramm genutzt wird, die Entscheidung zu treffen,
welche Hardware mit Strom versorgt wird und welche Prozesse folglich
ausgeführt werden und welche übersprungen werden.

PS. Das nichtversorgen von Sensoren(analog wie digitaleingänge
betreffend) kann fehlerhafte Interupts und Messungen bringen welche
folglich eleminiert werden.

MFG Winne

von Hannes L. (hannes)


Lesenswert?

Ich arbeite zwar nicht mit dem Mega128, aber bei vielen anderen AVRs
kann man im "Stromspar-"Sleepmode keine flankengetriggerten externen
Interrupt auslösen, da dazu der Takt gebraucht wird, den man ja im
Stromsparmode abschalten möchte.
Es geht vermutlich nur der Level-Interrupt.

Alternativ kann man den Watchdog benutzen (längste mögliche Zeit) und
in der Watchdog-ISR einfach den Portpin mit der Stromversorgung prüfen
und bei Nichtvorhandensein ein Flag setzen, worauf das Hauptprogramm
den Controller sofort wieder mit aktiviertem Watchdog "ins Koma"
schickt...

Wie gesagt, das sind Möglichkeiten auf anderen Megas, welche
Möglichkeiten speziell der Mega128 bietet (und wie der Stromspar-Mode
beim 128er heißt), müsst ihr schon selbst im Datenblatt recherchieren.

...

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.