N' Abend, ich hab' da mal 'ne Frage zum Runtertakten des µC. Werkseitig ist 1 MHz eingestellt - nun versuche ich mit dem Prescaler-Register noch weiter runterzutakten, aber das funktioniert nicht wie ich es mache. Ich habe das so geschrieben : Vorbereiten: cli ldi R16, 0x80 sts CLKPR, R16 ; Enable setzen Fertig: lds R16, CLKPR ; Prüfen ob Bit noch gesetzt ist sbrc R16, 7 rjmp Ready Teilen: ldi R16, 0x08 ; Takten sts CLKPR, R16 sei Ich war eigentlich der Meinung, dass ich das so richtig verstanden habe im Datenblatt. Also als erstes, den "Prescale Enable" setzen, dann warten bis er soweit ist (vier Takte soll das dauern) und dann kann ich die Frequenz runtertakten. Aber so funktioniert es eben nicht. Haben die FuseBits da auch noch was mitzureden? Vielen Dank im voraus lg Torsten
@ Torsten Ohne (tome28) >weiter runterzutakten, aber das funktioniert nicht wie ich es mache. Weil es falsch ist. >warten bis er soweit ist (vier Takte soll das dauern) und dann kann ich FALSCH! Innerhalb der vier Takte muss der zweite Schreibzugriff erfolgen, sonst ist es Essig mit der Umstellung! >die Frequenz runtertakten. Aber so funktioniert es eben nicht. Haben die >FuseBits da auch noch was mitzureden? Nein. Eher so
1 | ldi r16, 0x80 ; Prescaler write enable |
2 | ldi r17, 0x08 ; Presacler Wert |
3 | sts CLKPR, r16 |
4 | sts CLKPR, r17 |
MfG Falk
Falk Brunner wrote: > Nein. Eher so > >
1 | > ldi r16, 0x80 ; Prescaler write enable |
2 | > ldi r17, 0x08 ; Presacler Wert |
3 | > sts CLKPR, r16 |
4 | > sts CLKPR, r17 |
5 | > |
Fast. Sicherheitshalber würde ich vor dem ersten Schreibzugriff noch die Interrupts deaktivieren, falls die Umstellung passieren soll, während dieselben eingeschaltet sind. Also
1 | cli |
2 | sts CLKPR, r16 |
3 | sei |
4 | sts CLKPR, r17 |
>Also als erstes, den "Prescale Enable" setzen, dann >warten bis er soweit ist (vier Takte soll das dauern) Nein, Du sollst die vier Takte nicht abwarten, sondern Dein Geschäft erledigen, solange die noch nicht rum sind.
War da nicht was mit der nächste befehl nach sei wird noch ausgeführt bevor der erste (mögliche) interrupt angesprungen wird?
Heruntertakten kannst Du ihn nur per Fuse oder durch eine entsprechende externe Taktquelle.
wie weit kann man einen AVR eigentlich runtertakten. Ich habe schon Behauptungen gehört, das man ihn extern mit 10 Hz oder so takten kann. Wäre zum debuggen mit altem/einfachen Gerät doch irgendwie praktisch.
im datenblatt eines avrs ist als minimaler takt meistens DC zu lesen. also taster dran fleißig morsen =)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.