Forum: Mikrocontroller und Digitale Elektronik BASCOM Taster Betätigungslänge erkennen


von Max E. (Gast)


Lesenswert?

Hallo!

Ich hab einen Taster an einen ATmega8 angeschlossen. Jetzt sollte 
folgende Funktion realisiert werden:

Wenn der Taster kurz gedrückt wird, dann geht PortB.1 auf high.
Wenn der Taster länger als 2 Sek. gedrückt wird, dann geht PortB.1 auf 
low.

Ich habe es so versucht:
---
...
Config Timer1= Timer , Prescale = 256
On Timer1 timerirq
Enable Timer1
Timer1 = 22336
...
Dim sekunden as byte

Main:
Do
If Taster = 0 and PortB.1 = 0 Then
  waitms 25
  bitwait Taster , Set
  PortB.1 = 1
End If

If Taster = 0 and PortB.1 = 1 Then
  waitms 25
  sekunden = 0
  If Sekunden < 2 Then
    PortB.1 = 1
  Elseif Sekunden >=2 Then
    PortB.1 = 0
  End If
End If
...
loop

Timerirq:
  Timer1 = 22336
  incr Sekunden
Return
---

Leider funktioniert das so nicht. Der Pin wird zwar angeschalten aber 
das mit dem Ausschalten nach 2 Sek. funktioniert nicht.

Vielleicht hat jemand noch eine andere Idee.

Danke schonmal.
Max

von Teplotaxl X. (t3plot4x1)


Lesenswert?

Entprellung vergessen?

von Max E. (Gast)


Lesenswert?

Hallo!

Die ist ja drinnen mit de waitms 25 und Bitwait. Das Programm ansich 
funktioniert so, nur das Erkennen ob der Taster weniger 2 Sek. oder 
länger als 2 Sek. gedrückt wurde funktioniert nicht.

Max

von Uwe2 (Gast)


Lesenswert?

Fehler: Du setzt deinen Sekundenzähler vor jeder Abfrage auf 0

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.