Forum: Mikrocontroller und Digitale Elektronik Peter Dannegger's Debounce Routine für Xmega


von Stefan F. (stefan1987)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei die debounce Routine von Peter Dannegger auf einen 
Xmega 256A3 zu portieren.
Im Prinzip funktioniert es auch schon. Also die Led's toggeln bei 
Tastendruck.
Problem ist nur das noch etwas mit den Zeiten nicht stimmt. Bei der 
get_key_press funktion dauerts ca 0,5 Sekunden und bei get_key_long
dauert es 5,5 Sekunden.
Ich denke mal es liegt an der Preload Zeit für den Timer.
Habe es auch mal ohne die Formel versucht allerdings ist das Ergebnis 
das gleiche. (TCC0.PER = 0x0138; statt TCC0.PER = 
(uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5))

Hat jemand eine Idee was ich falsch gemacht habe ?
Code hab ich mal angehängt.

Setup: AtXmega @ 32 Mhz ; 8 LED's an PORT D ; 8 Taster an PORT A

Vielen Dank schonmal

Gruß Stefan

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wie oft wird denn die ISR aufgerufen (Zykluszeit)?
Mit einem Oszi kann man das z.B. an einem Toggle-Pin kontrollieren. Oder 
mit einem Zähler und einer Stopuhr...

von Stefan F. (stefan1987)


Angehängte Dateien:

Lesenswert?

Danke für die Antwort. Hab den Fehler gefunden. War zu unvorsichtig bei 
der Autovervollständigung im Atmel Studio ...
War ein Fehler bei dem Clock Init, denke mal er ist mit 2 Mhz gelaufen 
statt mit den 32Mhz.
Der korrigierte Version ist im Anhang.


Gruß Stefan

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
Noch kein Account? Hier anmelden.