Forum: Mikrocontroller und Digitale Elektronik if(taster getoggelt)


von woms (Gast)


Lesenswert?

Hallo zusammen.

Wie schreibe ich es richtig in C.?

if(taster getoggelt){
  mache was.?!?!
}

danke :)

von 32bitter (Gast)


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
}

von 32bitter (Gast)


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;

von woms (Gast)


Lesenswert?

sozusagen so: (ohne den defines)

if((PINA & (1<<PA0)) != (PINA & (1<<PA0))

leider geht es immer noch nicht.?!

von Michael .. (bigneal)


Lesenswert?

woms schrieb:
> if((PINA & (1<<PA0)) != (PINA & (1<<PA0))

oder anderst geschrieben
if(1 != 1)

respektive

if(0 != 0)
?

von Drago (Gast)


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
}

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

woms schrieb:
> leider geht es immer noch nicht.?!
Du musst dir merken, was vorher war. Dann vergleichst du das mit dem, 
was jetzt ist, und wenn da ein Unterschied ist, dann wurde was 
getoggelt...

von 32bitter (Gast)


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
      +------------|_____|

von woms (Gast)


Lesenswert?

ist klar :) ich habe es verstanden.
vielen dank

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.