Bascom: Tastenentrpellung + long press Erkennung

Gast #95977
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
Gast #95978
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
Gast #95979
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

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