Forum: Mikrocontroller und Digitale Elektronik AVR mit dynamischen Takt


von Michael Melzer (Gast)


Lesenswert?

Hallo!

Ist es eigentlich möglich einen AVR z.B.
wenn er von der Batterie versorgt wird 2MHz
und wenn er vom Netz versorgt wird 8MHz
ohne das er einen Reset macht??

Wenn ja, wie macht man denn sowas?
Wäre es möglich mit einem Relay an einem Port, das zwischen einem 8MHz
und einem 2MHz Quarz schaltet?

Danke im Voraus
Melzer

von ...HanneS... (Gast)


Lesenswert?

Wenn der Quarz mit der Kapazität der Relaiskontakte noch schwingt? Kommt
auf Relais und Quarz an, also ausprobieren...

von Wolle (Gast)


Lesenswert?

spannungsgesteuerter Oszillator statt Quarz ?

von Tobi (Gast)


Lesenswert?

wäre ein/zwei quarzoszillator/en mit analogschalter da nicht besser?

wie genau ist ein vco?

von Rufus T. Firefly (Gast)


Lesenswert?

Der Quarzoszillator im AVR wird über ein Umschalten des angeschlossenen
Quarzes wenig erfreut sein; schließlich muss der neu anschwingen, was
eine gewisse Zeit lang ein seltsames Verhalten zur Folge haben dürfte.

Einfacher wäre ein Festfrequenzoszillator, der durch einen digital
umschaltbaren Teiler mit dem AVR verbunden ist.
Da läuft zwar der Oszillator immer mit vollem Takt, ebenso der Teiler,
aber der AVR bekommt ein sauberes Taktsignal, ohne daß im
Umschaltmoment ein Oszillator neu anschwingen müsste.

Das dürfte dem leicht erhöhten Leistungsbedarf gegenüber ein
eindeutiger Vorteil sein.

von Michael Melzer (Gast)


Angehängte Dateien:

Lesenswert?

wäre das eine möglichkeit dies zu realisieren?

von Ingo Henze (Gast)


Lesenswert?

Da hier kein konkreter AVR genannt wurde, möchte ich anmerken, das die
neueren AVRs einen "System Clock Prescaler" haben. Beispielsweise die
neuen Mega48/88/168 und der Mega162, aber auch die aktuellen Tinys, wie
Tiny13 oder 2313.
Feine Sache das, einfach mal den Takt zu Laufzeit runtersetzen, um z.B.
Strom zu sparen.

Gruß
Ingo

von Markus (Gast)


Lesenswert?

Wäre es nicht sinnvoller, den Takt intern umzuschalten? Können aber
nicht alle Modelle, also vorher kontrollieren ob das geht.

Markus

von Ratber (Gast)


Lesenswert?

Noch eine Anmerkung nebenher weil da öfters mal welche hereinfallen.


Natürlich kann man den Takt wechseln wie man will (Wie es geht steht ja
oben schon) aber es bleibt da ein kleines Problem.
Die Soft auf dem Controller sollte auch darauf ausgelegt sein mit
unterschiedlichen Takten zu arbeiten und diese auch angezeigt bekommen
da Programmablauf und auch angeschlossene Hardware eventuell abhängig
vom takt sind.

von Philipp Sªsse (Gast)


Lesenswert?

Mit einem VCO sehe ich eine Probleme mit dem Einschwingen, schließlich
läßt sich die Steuerspannung soweit tiefpaßfiltern, daß der AVR folgen
kann. Mit einem NCO geht das natürlich auch.

Da wird es dann aber wichtig zu wissen, um welche Anwendung es geht!
Wenn zu einem zeitpunkt eine definierte Taktrate herrschen muß wegen
zeitkritscher Routinen, macht das natürlich wenig Spaß.

Wenn es eher so ist, daß mal mehr, mal weniger Last anfällt, ohne
plötzliche Wechsel, finde ich die Realisierung durchaus pratikabel. Ein
Beispiel? Bei einem Bordcomputer ist die Last (GPS-Auswertung,
LCD-Darstellung) etwa geschwindigkeitspropotional. Und ein AVR kommt
schneller von "null auf hundert" als ein Ferrari! (-;

von Rufus T. Firefly (Gast)


Lesenswert?

@Michael:

Deine Schaltung ist keine Lösung. Einerseits ist nicht klar, ob die
Treiberleistung eines Portpins bzw. des verwendeten Inverters genügt,
um als Versorgungsspannung für einen Oszillator verwendet zu werden,
andererseits ist das Anschwingverhalten und Ausschwingverhalten zum
Zeitpunkt des Umschaltens höchst undefiniert.
Der Controller wird einige Millisekunden lang mit gequirltem Quark
anstelle eines Taktsignales versorgt werden.
Auch will so ein Oszillator mit Versorgungsspannungspegeln statt des
müden "high" eines Portpins versorgt werden.

Nein, entweder einen Quarzoszillator mit eingebautem programmierbaren
Teiler verwenden (EXO-3*), oder aber einen Vorteiler verwenden und
zwischen dessen Ausgängen umschalten (Aus der CMOS-Reihe 4040 oder
ähnliches; wenn ich mich recht entsinne, gab's da doch auch einen mit
integrierter Oszillatorschaltung?).

Besser allerdings ist der Hinweis von I. Henze einige Posts weiter
oben.

Zuletzt noch: Lohnt der ganze Aufriss überhaupt? Die Leistungsersparnis
durch reduzierten Takt ließe sich schließlich auch durch geschickte
Programmierung unter Ausnutzung der verschiedenen Stromsparmodi des
Prozessors nutzen - Nutzung von Interrupts statt zyklischem Pollen
etc.
Das Datenblatt des Mega128 verrät ab Seite 42 einiges interessantes.

*) http://www1.odn.ne.jp/~aal22410/pdf/PDF005.pdf

von Ingo Henze (Gast)


Lesenswert?

Ja, das mit einem 4060 hatte ich auch probiert.
An sich ein nettes Teil, wahlweise als RC- oder Quarzoszillator zu
betreiben und mit integriertem 14-Bit Binärteiler (die Stufen Q3 bis
Q13 sind jeweils herausgeführt).
Erschreckend für mich war dann aber doch der recht hohe Stromverbrauch
der ganzen Sache, der weit über dem lag, was ich beim AVR durch den
verringerten Takt eingespart hätte.
Kurz und gut, ich habe das Projekt "Externe Taktversorgung mit
Taktumschaltung" schnell wieder fallen gelassen und bin nun mit einem
Mega48 glücklich :-)

Gruß
Ingo

von crazy horse (Gast)


Lesenswert?

Bin auch der Meinung, dass das alles Heck-Meck ist. Mit der
Geschwindigkeit laufen lassen, die nötig ist, bleibt dennoch Zeit (z.B.
weil im Batteriebetrieb weniger zu tun ist) schlafen legen, dass spart
mehr Strom als mit reduzierte Taktrate im Kreis springen lassen.

von Michael (ein anderer) (Gast)


Lesenswert?

Wie genau soll der Takt denn sein?

Eine einfach Lösung wäre: Externer RC-Oszilator zu verwenden, und wenn
der Takt schneller laufen soll (bei Netzbetrieb) über einen Portpin
einen zweiten Widerstand dazuschalten.

Also Widerstand und Kondensator für Frequenz bei Batteriebetrieb
berechnen, dann einen zweiten Widerstand so berechnen, dass bei
Parallelschaltung der beiden Widerstände der Oszilator mit der
gewünschten höheren Frequenz schwingt.

von Peter D. (peda)


Lesenswert?

Wenns nur aufs Stromsparen ankommt, z.B. den Mega8 mit 32kHz Quarz
betreiben + internen 8MHz RC-Oszillator.
Und dann beim Batteriebetrieb immer zyklisch schlafen legen und durch
die 32kHz aufwecken lassen (T2 Interrupt).

Die Stromersparnis ist die gleiche, egal ob man alles langsam macht
oder   schnell auf einen Ruck und dann den Rest der Zeit schlafen
geht.


Peter

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.