Forum: Mikrocontroller und Digitale Elektronik CTC-Mode ISR-Problem


von dr.prof.schlau (Gast)


Angehängte Dateien:

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

von dr.prof.schlau (Gast)


Lesenswert?

Zusatz:

die Variable GLOBAL_TIMER_DIVISOR = 40
OCRx...Ergibt bei 10Mhz ca. 244

von Stefan E. (sternst)


Lesenswert?

dr.prof.schlau schrieb:
> Der Init (neu_global.c/Timer0) hat die gleichen Voraussetzungen:
> Prescaler 1024, CTC, OCR=244

Nö. Weder hast du Prescaler 1024, noch den CTC-Mode eingestellt.

von dr.prof.schlau (Gast)


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

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.