Interrupt und Sleep Mode

Gast #76736
Lesenswert?
• ▲
▼
Hi

Ich habe ein kleines Problem und zwar benötige ich 1 Taster, dieser hat
zwei Funktionen:

kurz drücken : variable raufzählen
lang drücken : in den Power down mode


Ich habe den Taster an den INT0 Pin angehängt.

Mein Problem:


Normalerweise ist der INT0 auf die pos. Flanke getriggert. Für das
Aufwachen aus dem Sleep Mode, muss ich ihn aber LOW Level Triggern.

Nun drücke ich den Taster lang, der sleep Mode (Power Down) wird
aufgerufen. Der Taster ist immer noch gedrückt und darum wird gerade
ein Low Level Interrupt ausgelöst und der uC erwacht wieder!


Weiss jemand, wie ich mein Problem lösen kann?
#76738
Lesenswert?
• ▲
▼
Taste im Timerinterrupt entprellen und dann in der Hauptschleife vor der
Interruptfreigabe und dem Sleep warten, bis entprellter Zustand ==
Taste losgelassen.

Tasten können auch beim Loslassen prellen und dann würdest Du ohne
Entprellung sofort wieder aufwachen.


Peter
Gast #76739
Lesenswert?
• ▲
▼
Ach so, vielen Dank...

Eigentlich wollte ich, dass man den Taster drücken kann so lange man
will und er nach 2sec in den Sleep Mode gesetzt wird...

Jetzt muss ich ihn halt loslassen und erst dann wird der uC
abgeschaltet...

Geht halt nicht anders...


Noch eine Frage:


Wie kann ich ein Taster einlesen und dann ein Flag setzen, wenn er 0
ist?: Die funktion bit_is_clear gibt ja den Wert der Stelle zurück!
(sehe ich das richtig?)


FLAG Definition:
struct
{
    unsigned char taster_flag:1;
} x;

Taster einlesen:

x.taster_flag = bit_is_clear(PIND,2);

Antwort schreiben

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.

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.