ATmega48 runtertakten

Gast #1039511
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
#1039528
@ 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
#1039529
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
Gast #1039531
>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.
Gast #1039584
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.