Forum: Compiler & IDEs mega8 Tastenentprellung


von Thomas M. (tmo)


Angehängte Dateien:

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

von Stefan E. (sternst)


Lesenswert?

1
  TIMSK = 1<<TOIE0;        // enable timer interrupt
2
3
...
4
5
    // enable Output Compare 1 overflow interrupt
6
    TIMSK  = (1<<OCIE1A);

Der Timer0-Interrupt ist nicht aktiviert, weil du in der zweiten 
TIMSK-Zeile das Bit wieder auf 0 setzt.

von Thomas M. (tmo)


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?

von Εrnst B. (ernst)


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...

von Thomas M. (tmo)


Lesenswert?

Wo kann ich mir in AVR Studio den ASM-Code anzeigen lassen ?

von Stefan E. (sternst)


Lesenswert?

Thomas M. wrote:
> Wo kann ich mir in AVR Studio den ASM-Code anzeigen lassen ?

Unter "Other Files" findest du eine Datei mit der Endung lss.

von Thomas M. (tmo)


Lesenswert?

Besten Dank!

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.