if(taster getoggelt)

Gast #3218996
Lesenswert?
• ▲
▼
Unsauber ohne Entprellung:
1
// Beispiel für einen Taster an PA0
2
#define TASTER_PIN PINA
3
#define TASTER_PNO PA0
4

5
uint8_t taster_pin_old = PINA;
6

7
while(1)
8
{
9
  if((taster_pin_old & (1 << TASTER_PNO)) != (TASTER_PIN & (1 << TASTER_PNO))
10
  {
11
    tue_dies();
12
    tue_das();
13
    tue_jenes();
14
  }
15
}
Gast #3219004
Lesenswert?
• ▲
▼
... am Ende der mainloop oder sonstwie muss natürlich der Zustand 
umgespeichert werden, oder man macht das im else-Zweig, oder in einem 
Timerinterrupt. Hauptsache regelmäßig und nach(!) der Abfrage, ob sich 
was geändert hat.
1
taster_pin_old = PINA;
Gast #3219039
Lesenswert?
• ▲
▼
des geht auch kürzer und für meine Begriffe übersichtlicher mit einem 
exor
1
// Beispiel für einen Taster an PA0
2
#define TASTER_PIN PINA
3
#define TASTER_PNO PA0
4

5
uint8_t taster_pin_old = TASTER_PIN;
6

7
while(1)
8
{
9
  if( (taster_pin_old ^ TASTER_PIN) & (1 << TASTER_PNO) )
10
  {
11
    taster_pin_old = TASTER_PIN;
12
    tue_dies();
13
    tue_das();
14
    tue_jenes();
15
  }
16
}
Gast #3219045
Lesenswert?
• ▲
▼
Für eine Flankenerkennung muss immer der alte Wert als Vergleichswert 
vorliegen. Deswegen auch eine Variable und das umspeichern:
1
Was ich wollte:
2
          _____
3
         |  -1 |    _____
4
in o--+--| Z   |---|     |
5
      |  |_____|   | !=  |----o out
6
      +------------|_____|

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.