PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Colck Prescale Register



mycroc
27.04.2008, 19:31
nabend
wie oder anders kann man das CLKPR Register mit Bascom ändern?

erst mal ne beschreibung worum es geht....
-------Programm-------------
$regfile = "attiny44.dat"
$crystal = 8000000
Config Porta.0 = Output
Config Portb.2 = Output
Clkpr = &B10000000
R1 Alias Porta.0
Portb.2 = 1
Do
R1 = 1
Wait 1
R1 = 0
Wait 1
Loop
End-----------------------

zu Hardware,
die beiden Ausgänge sind extern UND verknüpft und wenn beide "1" sind leuchtet eine led.

zum Problem,
nach meinem verständnis solte die led im sekunden takt leuchten, tut sie aber nicht. Die led leuchtet im 8 sekunden takt. Nach meiner vorstellung hatt die zeile "Clkpr = &B10000000" demnach nicht den erwünschten effekt den Clock Prescaler auf eins zu setzen. Aber warum nicht??

linux_80
27.04.2008, 19:48
Hi,

schau mal in den Fuses ob das CKDIV8 noch aktiv ist, denn das teilt den Takt nochmal durch 8 !

PS:
um den Wert per CLKPR zu ändern muss man das 2mal machen, erst mit CLKPCE gesetzt, beim 2. mal gelöscht, siehe DB !

uwegw
27.04.2008, 22:26
Die CKDIV8-Fuse führt zu keiner zweiten Taktteilung. Sie ändert nur den Startwert des Prescalers.

Die Sequenz zum ändern:
Clkpr = &B10000000 //änderung freischalten
Clkpr = &B0000xxxx //Prescaler setzen

Diese Befehle müssen unmittelbar hintereinander ausgeführt werden, daher sollten die Interrupts vorher abgeschaltet werden.

mycroc
29.04.2008, 19:53
Danke für die schnellen Antworten. Ich hatte leider erst heute zeit zum testen gehabt und
Clkpr = &B10000000 //änderung freischalten
Clkpr = &B0000xxxx //Prescaler setzen
Funktioniert!
Zum DB noch mal meine Meinung, ich glaube das das problem die Sprache ist und das nicht nur bei mir. Gäbe es Dattenblätter in Deutsch würden sicher sehr viele fragen gar nicht auftauchen.