Forum: Mikrocontroller und Digitale Elektronik Bascom: Tastenentrpellung + long press Erkennung


von Dirk (Gast)


Lesenswert?

Hi,


Ich hab in Bascom eine Tastenentprellung ueber den Timer1 realisiert
(Tim0 und Tim2 meines ATmega 8 werden schon benutzt).


Es funktioniert auch soweit. Den Debounce Befehl konnte ich nicht
nutzen da ich auch erkennen wollte wie lange die Taste gedrueckt wird
um verschiedene Funktionen aufzurufen.

Nun haenge ich fest wie ich erkennen soll ob die Taste >3 Sek gedrueckt
wurde .... Kann mir jemand vielleicht eine Hilfestellung geben?

Hier ein Auszug zur Entprellung der Taste:


Main:
  Do
  If Keypressshort_flag = 1 Then
  If Pinc.5 = 0 Then
  Toggle Portd.3
  End If
  end if

  Keypressshort_flag = 0


  loop
  End

'
********************************************************************
' * Timer 1 ISR


  Tim1_isr:

  Keypressshort_flag = 0
  Incr Nticks
  If Nticks = 500 Then
  Nticks = 0
  End If

  Temp = Nticks Mod 5
  If Temp = 0 Then
  Keypressshort_flag = 1
  End If


  Return


'
********************************************************************


Mfg

Dirk

von Tobi (Gast)


Lesenswert?

ich kann zwar kein basic aber wenn du einen timer mit einer definierten
taktung hast kannst du einfach einen zähler einbauen der ab erkennen
einer gedrückten taste bei jedem aufruf des timers hochzählt. wenn die
taste losgelassen wird brauchst du nur noch aus der timerfrequenz und
dem counterwert die sekunden ausrechnen

von Dirk (Gast)


Lesenswert?

Hi,

also sollte ich es anders herum machen . Im moment hab ich in der Timer
ISR ein Flag gesetzt wann die Taste abgefragt werden soll in der
Hauptschleife ...

Jetzt soll ich die Inputpins in der Timer ISR abfragen und bei druecken
eine Variable erhoehen .....


oder wie soll ich das verstehen ?

Mfg

Dirk

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.