CTC-Mode ISR-Problem

Gast #2659828
Lesenswert?

Hallo zusammen,

ich habe mir die S-65 LCD-Library vom mp3-player 
(http://www.my404.de/index.php?&main=Software&sub=ATmusic&style=grey1) 
für ein eigenes Projekt "ausgeliehen".
(An dieser Stelle großen Dank und Respekt an die Autoren!) Das ganz 
läuft auf einem ATMega644.
Nach dem Start des Programms wird etwas auf dem LCD angezeigt und auf 
eine Tastatureingabe gewartet. Dies passiert zyklisch in der ISR des 
Timers1 durch den Aufruf der Funktion: gui_elements_thread(); --> s. 
Anhang gui_elements...
Der Timer-Init für die ISR geschieht in der global.c.
Nehme ich die originale Version der Autoren (alt_global.c/Timer1) geht 
alles wunderbar und die Tastendrücke werden wie gewünscht ausgeführt.
Da ich aber den Timer1 später für eine andere Funktion benötige, wollte 
ich den Timer0 für diesen Zweck heran führen.
Der Init (neu_global.c/Timer0) hat die gleichen Voraussetzungen: 
Prescaler 1024, CTC, OCR=244
Zur besseren Übersicht habe ich die xy_global.c gekürzt. Bei meiner 
Version wird aber kein Tastendruck erkannt bzw. keine ISR ausgeführt.
Woran liegt das? Erkennt jemand von euch den Fehler?

Gruß
Michael
Angehängte Dateien:
Gast #2660124
Lesenswert?

Hallo Stefan,

vielen Dank.
--> WGM01 ist in TCCR0A, nicht in TCCR0B.
UND:
Ich habe die Umstellung zuerst mit Timer2 gemacht und die Clockselect 
übernommen. Bei Timer2 (auch ein 8-Bit Timer) ist der Prescaler 1024 mit 
111 angegeben. Auch wenn ich die CS richtig angeben hätte (101), hätte 
die WGM01 in TCCR0B einen "Extern Clock" eingestellt. Auweia.
Verdammt, manchmal steht man derart auf dem Schlauch, das glaubt man 
einfach nicht. Ich habe zwanzig mal ins Datenblatt geschaut und trotzdem 
diese zwei eklatanten Fehler eingebaut.
Gruß
Michael

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