Forum: Mikrocontroller und Digitale Elektronik Umschaltung ext./int. Takt


von Axel Rühl (Gast)


Lesenswert?

Hi,

kann man -einfach so- vom externen Takt auf den internen umschalten?
Ich möchte in den Progammpausen in den Idle-Mode schalten und den Takt
herunternehmen, um Strom zu sparen. Die anderen Powerdown-Modi kann ich
leider im laufenden Betrieb nicht einsetzen, da ich verschiedene
Interrupts weiterhin benötige, diese aber nur im Idle-Mode erreichbar
sind. Beim Hitachi H8S2357(Bsp.) kann man die CPU-Clock 'runterteilen.
Geht hier wohl nur über einen Reset in den Bootloadersektor und von dort
über die Verstellung der fusebits? Liege ich da richtig, oder gibt es
eine andere Möglichkeit? Einen Bootloader verwende ich sowieso, dem
müsste ich dann (über ein Byte im EEProm) sagen, dass er die fusebits
auf int.1Mhz stellen soll.
Hat jemand so was krummes schon mal gemacht?

Danke und Gruß
AxelR.

von OldBug (Gast)


Lesenswert?

Ich vermute, Du sprichst von einem AVR.
Da gehts in der Tat nur über die Fusebits.
Bei den msp430 gehts "online" - zu jeder Zeit!

von Axel Rühl (Gast)


Lesenswert?

Achso- ja ich meinte einen AVR, sorry. Mega8 oder Mega16

von Ingo Henze (Gast)


Lesenswert?

Ich kann mal nur als Bsp. für den ATmega 162 sprechen.
Bei dem kann man im laufenden Betrieb den Taktvorteiler setzen.
Das nennt sich da "System Clock Prescaler", Teiler von 1 bis 256 sind
möglich (in 2^n Schritten) und wird über das Register CLKPR gemacht.
Zur Sicherheit ist auch hier, wie beim Watchdog-Timer, ein bestimmte
Befehlsfolge einzuhalten.

Ich habe das für Testzwecke auch schon probiert, mit 8 MHz internem
RC-Oszillator durch 256 runtergeteilt, das gibt dann in etwa einen Takt
wie mit einem 32 kHz Uhrenquarz (weil den hab ich im Monent nicht da)

In wieweit das die anderen AVRs können, kann ich nicht sagen.

Gruß
Ingo

von Ingo Henze (Gast)


Lesenswert?

Hab mal schnell die Datenblätter der Megas durchgeklickt, Mega8 und 16
können das nicht, aber der 169 und die neuen 48/68/168.
Bei den großen Mega64 und 128 gibt es sowas wohl auch, heißt dort aber
"XTAL Devide Control Register" XDIV und geht von 2 bis 129.

von Axel Rühl (Gast)


Lesenswert?

Danke, erstmal.-
ich verwende den MegaLoad von MICROSYL. Da werd' ich mal den Quelltext
entsprechend, wie oben gepostet, ändern.
Gruß
AxelR.

von Maddin (Gast)


Lesenswert?

Das Problem ist aber, das Du vom Bootloader aus die Fuses gar nicht
setzen kannst, das geht nur mit den Boot Lock Bits!

Gruß,
Maddin

von Axel Rühl (Gast)


Lesenswert?

SCH.. echt? wäre ja blöd. Bin leider gerade mit Arbeit zu bis obenhin,
sehe aber nachher oder heut abend mal im Datenblatt nach.
Danke, trotz der "schlechten" nachricht...
AxelR.

von Fritz Ganter (Gast)


Lesenswert?

Ich will dich ja nicht demotivieren, aber es bringt gar nix den Takt
runterzusetzen wenn du immer brav in den sleep gehst.

Grund:

Wenn du z.B. mit 8 statt 1 MHz taktest, verbraucht der Prozessor das
8-fache an Strom. Aber er ist auch 8 mal so schnell mit seinen
Rechnungen fertig und daher schneller wieder im Sleep mode, die
Stromaufnahme bleibt im Mittel also gleich.
Sobald die CPU im Idle ist, wird der Prozessortakt ja abgeschaltet,
also hat der CPU-Takt da auch keine Auswirkungen.

Die beste Methode in deinem Fall ist den Controller so schnell wie
möglich wieder in den sleep zu schicken, also wenn du periodisch was
machst, diese Teile zu optimieren.

von Axel Rühl (Gast)


Lesenswert?

Solche Überlegungen machen natürlich Sinn.
habe ich aber auch schon hinter mir. Der Controller ist die mesite Zeit
im Sleep (Idle). lt. Datenblatt Seie 32 ist aber genau in diesem Mode
die Mainclock aktiv,nur die IO-clock und die CPU_Clock ist aus, daher
mein Gedankengang.

von ...HanneS... (Gast)


Lesenswert?

Hi...

Läuft nicht im IDLE-Mode der Takt (und damit der Stromverbrauch)
weiter?
Wie sollten denn sonst Timer-Interrupts während IDLE möglich sein?
IDLE ist doch noch kein "Tiefschaf"...

Oder irre ich mich da?

Gruß...
...HanneS...

von Fritz Ganter (Gast)


Lesenswert?

Hallo Holzstück-Hannes!

Ja, es ist nur die Frage wieviel der Takt ausmacht. Wenn er am
Stromverbrauch einen grossen Anteil hat, dann macht es wieder Sinn.

Ich hab meine Messungen auch mit Power_Save gemacht da läuft nur mehr
der externe Quarz an Timer2. Und da war die interne Taktfrequenz egal.

von Ingo Henze (Gast)


Lesenswert?

Um nochmal auf meinen Mega162 zurückzukommen :-)

Denn will ich mit einem externen 32 kHz Uhrenquarz betreiben.
Wenn ich dann noch, bevor ich ihn in den Idle-Mode schicke, den
Systemtakt durch 256 teile, läuft er nur noch mit 128 Hz. Das sollte
noch einiges an Stromeinsparung bringem.
Im Gegensatz zum Power-Down/Save Modus kann ich ihn dann wieder mit
einem Timer aufwecken.

Gruß
Ingo

von Fritz Ganter (Gast)


Lesenswert?

"Im Gegensatz zum Power-Down/Save Modus kann ich ihn dann wieder mit
einem Timer aufwecken."

Das stimmt nicht. Auch aus Powersave kommst du über Timer Interrupt
raus.
Power_save macht man so:

CPU-Takt möglichst hoch (z.B. interner 8MHz Takt).

Uhrenquartz an TOSC1 und TOSC2 anschliessen.
AS2 in ASSR setzen.

Dann wird der Timer2 Interrupt durch den Uhrenquarz ausgelöst, und man
kann das Programm bis zum nächsten Sleep mit Full-Speed abarbeiten.

Der Rest der Zeit wird praktisch kein Strom verbraucht.

Allerdings funktionieren dann halt bis auf Level Int0 und Int1 keine
anderen Interrupts.

von Axel Rühl (Gast)


Lesenswert?

Ja Ingo, soo dacht' ich auch...
wie komme ich denn anders an die Fusebits heran?? Ich muss wohl doch
nochmal nachschlagen (eigentlich keine zeit)
AxelR.

von Ingo Henze (Gast)


Lesenswert?

Na gut, vielleicht sollte ich mich doch nochmal etwas genauer mit den
Takt- und Spromsparmöglichkeiten befassen.
Andererseits find ich das mit dem runtergeteilten Systemtakt eine
interessante Sache, und es wird im Datenblatt extra als Möglichkeit zum
Stromsparen genannt:
"The ATmega162 system clock can be divided by setting the Clock
Prescale Register – CLKPR. This feature can be used to decrease power
consumption when the requirement for processing power is low."

Dann wäre noch die Frage, wann es denn nun die Mega48/88/168 endlich zu
kaufen gibt...
Scheinen mir ganz nette Teile zu sein :-)

Gruß
Ingo

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.