Hallo zusammen. Wie schreibe ich es richtig in C.? if(taster getoggelt){ mache was.?!?! } danke :)
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 | }
|
... 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; |
sozusagen so: (ohne den defines) if((PINA & (1<<PA0)) != (PINA & (1<<PA0)) leider geht es immer noch nicht.?!
woms schrieb: > if((PINA & (1<<PA0)) != (PINA & (1<<PA0)) oder anderst geschrieben if(1 != 1) respektive if(0 != 0) ?
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 | }
|
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...
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 | +------------|_____| |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.