mega8 Tastenentprellung

OP #992848
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:
#992898
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.
OP #992939
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.