Gast
#566421
Hallo. Ich habe da ein Probelem und ich das mir vieleicht hier jemand helfen kann. Ich habe leider keine passenden Artikel im Internet oder in diesem Forum gefunden. Wenn dieses Thema schon einmal diskutiert wurde dann bitte ich um nachsicht und vieleicht einen Link zur alten dikusion. Ich habe folgendes Probelm: Ich möchte mit dem ATMEGA8 kurze und lange Tasterdrücke erkenne und darauf dementsprechend reagieren. Bei einem kurzen Druck soll eine andere Aktion ausgeführt werden als bei dem langen Druck. Ich hatte bisher die Idee das mit Hilfe eines Timers zu machen. Wenn ein Taster gedrückt wird, soll der Timer anfangen zu zählen. So lange der Taster gedrückt bleibt soll ein Register incrementiert werden. Nach dem eine bestimmte Zeit abgelaufen ist(etwa eine sekunde) soll das hochgezählte register ausgewertet werden und daran erkannt werden ob der Taster kurz oder lang gedrückt war. Ich habe da auch ein Programm geschrieben das aber leider nich so gut funktionierte. Mal ging die Led direkt nach dem Tastendruck an, mal mit langer verzögerung mal garnicht. Leider habe ich das Programm auch soweit vermurkst das garnichts mehr ging und alles nur durcheinander war. Darauf hin habe ich das Programm gelöscht. Deswegen kann ich leider auch mein Programm nicht online stellen. Ich glaube irgendwie das dies damit zu tun hatte das der Timer nicht bei jedem Tastendruck mit dem selben wert angefangen hat. Mein Problem ist nur wie bekomme ich das hin das der Timer erst genau dann anfängt zu zählen wenn ich eine Taste gedrückt habe und nach dem Tastendruck der Timer zurückgesetzt und deaktivert wird? Wenn ich die Interupts Global ausstelle dann hört doch der Timer nicht auf zu zählen oder? Oder gibt es da noch eine bessere möglichkeit das zu realisieren? Vieleicht hat ja jemand einen Assembler code für mich? Ich vielen dank für die Hilfe Gruß Thomes