Hallo! Ich möchte tastendrücke zählen. hierzu habe ich pin T0 mit 14k hoch gezogen und per taster auf gnd (wie im tutorial). timer/counter0 habe ich dann auf extern konfiguriert. doch bei jedem tastendruck wird der counter gleich mehrfach inkrementiert. nur wenn ich die taste drücke und bis zum auslesen von tcnt0 gedrückt halte, erhalte ich die richtige zahl (nämlich 1). habe daraufhin in assembler eine art counter geschrieben: count: sbic PIND,1 rjmp count pressed: inc anzahl wait: sbis PIND,1 ;wait as long as bit cleared rjmp wait rjmp count dieser code sollte eigentlich solange zählen, bis er unterbrochen wird (z.B. per timer1). aber auch dieser code inkrementiert <anzahl> mehrfach pro tastendruck. auch hier stimmt der wert, wenn ich den taster gedrückt halte und bis zum auswerten von anzahl nicht loslasse... muss ich den taster irgendwie anders anschließen? was ist da falsch. mein elektronikhändler hat mir den taster als "entprellt" verkauft...
Hi! der ist dann halt doch nicht entprellt. Häng deinen Taster an ein RS-Flip-Flop dann ist das Problem gelöst. Du kannst ihn natürlich sofwaremäßig auch entprellen. cu András
wenn ich statt mit nem taster den pin mit nem kabel auf gnd ziehe, tritt der fehler auch auf. so ein "Kabel-taster" is wohl auch nicht entprellt, oder?
Nein, der erst recht nicht. Du kannst den Taster einfach entprellen, wenn du nach jedem Tastendruck z.B. 100ms wartest. MfG Andreas
yo, hab ich gemacht. ging sogar mit weitaus weniger (ne 1/10 sekunde is ja ne halbe ewigkeit! :-) ): ;delays for about 0.3 ms @ 4mhz, wenn ich mich nicht verrechnet habe... :-) delay: ldi mpr,0xff loop: nop nop nop dec mpr brne loop ret diese funktion wird nach dem tasten druck und nach dem tasten loslassen aufgerufen. danke für die hilfe.
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.