Werbung
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...
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
Meinst du damit, dass alle Timer schon benutzt sind und keiner von denen könnte nebenbei noch eine Variable setzen?Zitat von Blue72
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
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 ...
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...
Afaik indem du im Interruptregister den Überlaufinterrupt aktivierst. Schau doch einfach mal ins Datenblatt unter Timer0. Da sind die ganzen modes beschrieben.
Lesezeichen