www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt doppelt benutzen


Autor: cerberus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Winfried Jaeckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.