anzugsverzögerung für taster in C

OP #2414975
Lesenswert?

hi,
wie kann ich hier:

 if(PINB.1 == 0) //Stop/Pause Taster
  {
   TCCR1B=0x00;     // Timer 1 stop
   TCCR0B=0x00;     // Timer 0 stop
   laeuft = 0;          // Programm läuft nicht
   manual_stop = 1;     // Stop Taster wurde gedrückt, Reset freigegeben
   PORTC.0 = 0;         // grüne LED aus
   PORTC.2 = 0;         // Motor Stop
   lcd_gotoxy(0,1);     // LCD Ausgabe
   lcd_putsf("Pause           ");
   pausiert = 1;        // Programm ist pausiert
   stoerung = 0;        // falls eine Störung vorlag wird sie bestätigt
  }

eine zeitverzögerung für den taster einbauen, dass ich ihn erst 2sec 
gedrückt halten muss, dass die if ausgeführt wird?
finde nur entwas zur zeitverzögerungen in laufenden programmen -.-"

Grüße :)
#2414982
Lesenswert?

Muss in der Zwischenzeit (in diesen 2 Sekunden) irgendwas anderes 
weiterlaufen?

Wenn nein

 if(PINB.1 == 0) //Stop/Pause Taster
 {

    warte 2 Sekunden

    Taster immer noch gedrückt?
    ja ->
      TCCR1B=0x00;     // Timer 1 stop
      TCCR0B=0x00;     // Timer 0 stop
      ....


Wenn da sonst noch irgendwas anderes weiterlaufen muss, so dass warten 
nicht erlaubt ist, dann könnte man einen Timer einsetzen, der nach 2 
Sekunden abläuft. Taste gedrückt -> Timer starten, Taste losgelassen -> 
Timer zurücksetzen. Schafft es der Timer abzulaufen, dann löst er den 
Resetvorgang aus.
OP #2414986
Lesenswert?

also so?:

 if(PINB.1 == 0) //Stop/Pause Taster

delay_ms(2000);
if(PINB.1 == 0)
{
   TCCR1B=0x00;     // Timer 1 stop
   TCCR0B=0x00;     // Timer 0 stop
   laeuft = 0;          // Programm läuft nicht
   manual_stop = 1;     // Stop Taster wurde gedrückt, Reset freigegeben
   PORTC.0 = 0;         // grüne LED aus
   PORTC.2 = 0;         // Motor Stop
   lcd_gotoxy(0,1);     // LCD Ausgabe
   lcd_putsf("Pause           ");
   pausiert = 1;        // Programm ist pausiert
   stoerung = 0;        // falls eine Störung vorlag wird sie bestätigt
  }

es muss sonst nichts anderes gleichzeitig ausgeführt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren