Forum: Mikrocontroller und Digitale Elektronik Takt programmatisch ändern AtMega


von Tim (Gast)


Lesenswert?

Hi.

Gibt es eigentlich die Möglichkeit die Fuses für den Prozessortakt im 
laufenden Betrieb aus dem Programm heraus zu ändern?
Es geht um einen Atmel Mega 168.
Ich finde irgendwie keine Infos darüber.

Gruß, Tim

von Sebastian (Gast)


Lesenswert?

Nicht die Fuses, aber es gibt einen zur Laufzeit konfigurierbaren 
Taktteiler.

von Tim (Gast)


Lesenswert?

Meintest Du den CLKDIV8?
Würde halt gerne mit 128kHz rum Idlen und wenn was passiert, dann die 
Frequenz hoch setzen.

Tim

von Falk B. (falk)


Lesenswert?

@  Tim (Gast)

>Meintest Du den CLKDIV8?

Nöö, den System Clock Prescaler, gesteuert durch das Register CLKPR. 
Haben aber nur die neueren AVRs.

MfG
Falk

von Michael S. (Firma: electro-tester) (michael0307)


Lesenswert?

Tim schrieb:
>...
> Es geht um einen Atmel Mega 168.
> Ich finde irgendwie keine Infos darüber.
> ...

Hallo, steht doch im Datenblatt?

sieh mal auf Seite 37-38!


Grüße...

von Weingut P. (weinbauer)


Lesenswert?

sleepmodes :)

von Falk B. (falk)


Lesenswert?

Wenn schon, dann Sleep Mode.

von Purzel H. (hacky)


Lesenswert?

Dann koennt man auch den RC als Takt benutzen und an dessen 
Geschwindigkeit per Code aendern.

von stru_aus (Gast)


Lesenswert?

Es gibt bei atmegas mit internem RC ja noch das Oscillator Calibration 
register, OSCCAL. theoretisch könnte man den takt damit von ca 4mhz bis 
ca 16mhz rumdrehen..

hab ich noch nie probiert, aber da könnte man eben gut dran drehen, mit 
vielen nachteilen (eeprom, adc, uart)
da hab ich bisher kaum/wenig infos drüber gefunden, nur "wie kalibrier 
ich den internen RC mit uhrenquarz". hat da wer mehr infos/erfahrungen?

ansonsten könnte man wohl nen schnellen quarzoszillator nehmen und nen 
einstellbaren frequenzteiler/zähler nehmen, den man mit dem atmega 
steuert.

..und dann könnte man nen weiteren atmega daneben setzen, der auf 
kommando die fuses neu programmiert :D

aber aus dem betrieb heraus die fuses ändern kann man meines wissens 
nicht.

von Michael H. (michael_h45)


Lesenswert?

was du suchst, ist ein msp430.
da kannst du verschiedene prozessorteile mit verschiedenen takten 
versorgen, diese takte in ihrer geschwindigkeit verstellen, zusätzlich 
teilen und zur laufzeit umschalten.
auf die schnelle gefunden: 
http://micahwaldstein.com/2011/03/msp430-clocks-part1.html

von spess53 (Gast)


Lesenswert?

Hi

>Es gibt bei atmegas mit internem RC ja noch das Oscillator Calibration
>register, OSCCAL. theoretisch könnte man den takt damit von ca 4mhz bis
>ca 16mhz rumdrehen.

Ja, theoretisch. Bei den ATMega48/88/168 wird z.B. nur ein 
Einstellbereich von 7,3..8,1MHz garantiert. Der einzig sinnvolle Weg ist 
der System Clock Prescaler.

MfG Spess

von Ralph (Gast)


Lesenswert?

Versuch nicht durch die Hintertür irgendwelche Tricks.
Garantiert wird das in bestimmten Situationen nicht funktionieren und zu 
den nicht vorhersagbarem Verhalten führen.

Such dir einen µC der sowas per Hardware kann, wie zb der vorher 
genannte MSP430.

von Purzel H. (hacky)


Lesenswert?

Veegiss den MSP430, dessen Compiler Angebot ist etwas limitiert. Der AVR 
hat auch noch beliebig viele Sleepmodi, die man anschauen sollte.

von Mike J. (emjey)


Lesenswert?

Hallo Tim,

im ATmega644P gibt es ein Register "CLKPR – Clock Prescale Register" 
wenn am AVR ein 12MHz Quarz hängt kannst du diese Frequenz durch 1, 2, 
4, 8, 16, 32, 64, 128, 256 teilen,

12MHz / 256 = 46875 Hz

Die Peripherie (UART, ADC, usw.) werden dadurch aber auch beeinflusst.

von Michael H. (michael_h45)


Lesenswert?

Hex Oschi schrieb:
> Veegiss den MSP430, dessen Compiler Angebot ist etwas limitiert. Der AVR
> hat auch noch beliebig viele Sleepmodi, die man anschauen sollte.
okay, der msp-gcc mag ein haufen patches sein, trotzdem gibt es ihn.
der support dafür ist übrigens hervorragend. findet man wirklich einen 
compilerfehler und lässt hirnschmalz in seine anfrage fließen, kommt 
nicht - wie sonst - ein überforderter ahnungsloser "appication 
engineer", der einem mist erzählt, sondern wirklich die schreiberlinge 
des msp-gcc.

das ccs mag auch nicht grad die erleuchtung zu den IDEs bringen, aber 
schlecht ist es auch nicht. die compiler, die mitkommen, haben 
allermeistens eine codegrößenbeschrankung - aber man muss für den 
allermeisten kleinkram wirklich viel schlechten code schreiben, um mal 
16kB ins flash zu bekommen.

er mag seine schwachstellen wie jede architektur haben, aber ganz so 
einfach kann man den msp430 wirklich nicht abtun.

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.