Hi, angeregt durch Peter Daneggers Funktion "Taster: kurz/lang/Wiederholung" habe ich etwas ähnliches geschrieben: kurz/lang/Doppelklick. Ich habe es unter AVRStudio6 auf einem ATMega1284P getestet, es sollte aber ohne Änderung vom Mega8 bis zum 2560 funktionieren. Lediglich die Oszillatorfrequenz #define F_CPU 20000000UL in button.h bzw. der Tastereingang/LEDs muß vielleicht angepasst werden. Wer es ohne AVRStudio testen möchte zieht einfach die folgenden Dateien in sein Projekt: Mega1284P_main.c Mega1284P_main.h button.c button.h Viel Spaß damit.
Gast
#2743951
Frage, wo wid timer1 usw. definert?
Die Timer sind nur Speicherzellen die hochgezählt werden, der eigentliche Timer des ATMega ist der 16-bit Timer/Counter1. Ich habe den Code eigentlich nur als "Beifang" für einen erweiterten Resolver geschrieben, deswegen ist auch der ein oder andere Kommentar nicht sofort schlüssig... ;-) Sorry for that.
Tss... da hat sich doch tatsächlich ein Fehler eingeschlichen; gelegentlich (Tastenprellen?) wurde das Bit 'Taster kurz gedrückt' am Ende der Zeitermittlung für 'Taster lang gedrückt' mitgesetzt. Hier die nun fehlerfreie und aufgeräumte Version.