mega8 Tastenentprellung

#992848
Lesenswert?

Hallo,

ich bekomme die Tastenentprellung von Peter Dannegger in meinem 
Testprogramm nicht zum Laufen - das Programm reagiert gar nicht auf 
Tastendruck.
Mit einer simplen Tastenerkennung mit delay hatte alles funktioniert.

Eine weitere Frage wäre, ob es sinnvoll ist, die verschiedenen 
Programmeteile in der Interruptroutine auszuwählen. Es funktioniert 
zwar, aber Interruptroutinen sollen ja auch kurz sein.
Wie man sicher sieht, ist das Programm eines meiner ersten Versuche mit 
C, an dem ich schon eine Weile "rumstricke" ...

Bin hier im Moment etwas ratlos und dankbar für jede Hilfe.

Gruß
Thomas
Angehängte Dateien:
#992939
Lesenswert?

Super, danke Stefan!
Habe ganz übersehen, daß ich das bereits gesetzte Bit mit der zweiten 
Zuweisung wieder lösche.
Mit
    TIMSK  |= (1<<OCIE1A);
tut es wie es soll.

Wie sieht es denn mit meiner zweiten Frage aus, soviel Code in den 
Interrupthandler zu schreiben? Kann man das nicht eleganter lösen, oder 
ist das eine brauchbare Methode?
#993085
Lesenswert?

Thomas M. wrote:

> Wie sieht es denn mit meiner zweiten Frage aus, soviel Code in den
> Interrupthandler zu schreiben? Kann man das nicht eleganter lösen, oder
> ist das eine brauchbare Methode?

Das ist nicht wirklich viel code, schau dir einfach mal den erstellten 
ASM-Code an, und zähl die Taktzyklen zusammen.

Der sonst übliche Hinweis "möglichst wenig Code in ISRs" bezieht sich 
eher auf das "kleine" printf zum debuggen, die "kurzen" Float-Divisionen 
zwischendurch oder den _delay_ms Aufruf innerhalb der ISR...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren