PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Doppelklick" ohne Timer möglich ?



Blue72
25.11.2008, 11:18
Hi,

ich möchte gern eine Art "doppelklick" benutzen um eine Aktion durchzuführen. Mein Problem ist: Ich hab keinen Timer frei :(
Wie bekomme ich das ohne Timer hin ? Geht das überhaupt ohne ?

Wenn innerhalb 1 Sekunde ein Taster 2mal gedrückt wurde soll aktion x durchgeführt werden.

Gruß
Jens

s.o.
25.11.2008, 12:58
das geht schon, ist halt die frage ob du
1. multitasken willst, (d.h. du brauchst einen taskhandler, der nicht ganz einfach zu realisieren ist)
2. lange warten willst (d.h. du wartest 1 sec und testest währenddessen ob der taster gedrückt wurde.
3. du bastelst das ganz mit externer Peripherie zusammen, spontan dachte ich jetzt an den 74HC123... (Die Schaltung dürfte aber auch einige Denkarbeit verlagen.) Alternativ könntest du dir mal den uralten NE555 anschauen, ob der noch den noch irgendwie hingebogen bekommst...

Blue72
25.11.2008, 13:03
Ich seh schon, ohne Timer wird das nix ... hmm dann muss ich mir mal was anderes überlegen :(

Danke Dir.

jeffrey
25.11.2008, 13:14
hoi,
klar geht das auch ohne timer, zumindest wenn du nebenher nix anderes machen willst. du machst einfach 100 schleifendurchläufe, mit jeweils 10ms verzögerung(kann man nach belieben anpassen). währenddessen fragst du den taster ab, wird er ein 2. mal gedrückt, setzt du ein bit und beendest die schleife, wird er in der zeit nicht gedrückt, fährst du ganz normal mit dem program fort. hab ich schon öfters am anfang eines programms eingebaut, wo es egal ist, wenn 3s nichts passiert und einfach auf den tastendrück gewarttet wird um dann in irgendein konfigurationsmenü, oder so zu springen.
mfg jeffrey

for_ro
25.11.2008, 13:30
Ich hab keinen Timer frei :(

Meinst du damit, dass alle Timer schon benutzt sind und keiner von denen könnte nebenbei noch eine Variable setzen?
Ein Timer ist ja nicht exklusiv für eine Aufgabe abgestellt.
Erklär doch mal, was die im Einzelnen tun, also ob es ein Timer, Counter oder PWM ist und mit welchem Prescaler er läuft.

Gruß

Rolf

Blue72
25.11.2008, 13:32
Also ich habe nur einen Timer (ATTiny12) und der arbeitet als PWM, Prescaler ist 256 (ist nur ein 8-bit Timer). Ich dachte es ginge nur eine Funktion / Timer ...

s.o.
25.11.2008, 14:30
Trotzdem kannste den Timer nutzen.
1. Beim ersten klick zählvariable=0 setzen + überlaufinterrupt vom tiny setzen
2. Bei jedem Timerdurchlauf zählvariable++ (bei überlauf von zählvariable überlaufinterrupt von tiny deaktivieren und zählvariable=0)
3. Bei erneutem klicken schauen ob zählvariable im bereich von x bis y ist: Wenn ja: doppelkick.
EDIT: für zählvariable würde ich mind 16 bit verwenden...

Blue72
26.11.2008, 11:22
Hmm der Timer0 läuft aber doch als PWM, wie stell ich das denn dann an ?
Edit: Ist übrigens ein ATiny13, kein 12er, hatte mich verschrieben ;)

s.o.
26.11.2008, 12:47
Afaik indem du im Interruptregister den Überlaufinterrupt aktivierst. Schau doch einfach mal ins Datenblatt unter Timer0. Da sind die ganzen modes beschrieben.