Hey Leute, also wir üben gerade in der schule auf einem atmega32-board (programmieren im AVR-Studio), und wenn ich zB. auf irgendeinem Taster an port a länger als 2 sekunden drücke, dann sollen die leds am PORTD leuchten, also dann PORTD=0x09, dann leuchten der erste und der vierte led.... doch wie prüfe ich das softwaremäßig, wie lange der taster gedrückt wird?
Erst mal den Taster als Ereignis mit Entprellroutine programmieren, dann kann man über einen,z.B. 1ms Timer ISR, die 2000ms der Taster erfassen.
Du nimmst erst mal einen timer und konfigurierst ihn so das er alle z.B. alle 100ms einen interupt auslößt und du initialisierst 2 Hilfsvariablen mit 0. Im interupthandler guckst du ob der Taster gedrückt ist und ob die 2. Variable eine 0 enthält wenn ja addierst du auf die Hilfsvbariable eine 1 hinzu und überprüfst ob die 1. Variable mitlerweile bei 20 angekommen ist wenn der Taster nicht gedrückt ist setzt du die variable wieder auf 0. Falls der Taster bei 20 angekommen ist etzt du zweite Hilfvariable auf 1. Im Mainloop guckst du nun ob die zweite Hilfsvariable auf 1 gesetzt worden ist falls ja machst du die LED an und setzt die Variable wieder zurück 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.