Forum: Projekte & Code unerklärliches Verhalten beim Ändern des System-Prescalers


von Roger K. (birder)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

Langsam drehe ich hier durch. Folgende Situation:
Ich versuche gerade, einen Software-UART zu bauen. Bei 9600 Baud brauche 
ich einen Timer-Interrupt von ziemlich genau 0,1ms um ein Bit zu takten. 
Nun ist es so, daß bei jeder Einstellung des System-Prescalers, der 
sonstige Code wurde nicht verändert, der Timerinterrupt immer die selbe 
Taktfrequenz bringt, während der Kontrolltakt auf PA4 immer stimmt. Nur 
beim ersten Flashen des Programms stimmte der Timer-Takt mit der 
Berechnung überein.

Meine Hardware:
Tiny44 mit Bootlader von Peter drauf,der auf PA6 und 7 arbeitet. Darüber 
will ich mir im weiteren Verlauf dann Werte auf dem Terminal ausgeben 
lassen. Die Taktpins sind PA4 mit einem Kontrolltakt aus einer Schleife 
und PA5,auf dem der Timertakt ausgegeben wird, kommen sich also nicht in 
die Quere. Nun frage ich mich, wieso sich der geänderte Prescaler nicht 
auf den Timer auswirkt. Zuletzt hatte ich, wie im Code zu sehen, den 
Prescaler nicht benutzt und trotzdem lief der Timer mit 2ms, hat sich 
also nicht geändert. Nun bin ich ziemlich ratlos. Vielleicht hat ja 
jemand einen Hinweis, was da abgeht. Ich habe mal den Code beigelegt.

mfg birder

von Roger K. (birder)


Lesenswert?

Hat sich erledigt. Ich muß natürlich das CLKPCE-Bit zuerst schreiben, 
danach erst den Teilfaktor. Diese Zeile ist mir beim Umkopieren wohl 
unter die Räder gekommen und ich Dussel habs nicht mal mitbekommen. 
Jetzt funktioniert es wie gewünscht und damit ist dieser Beitrag auch 
erledigt und kann gelöscht werden.

mfg birder

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.