Stellt euch folgende Problematik vor: Ein Mikrocontroller muss in gewissen Fällen genügend Leistung erbringen um Berechnungen durchzuführen und zwei RFID Leser zu bedienen, hierzu ist eine Frequenz von ca. 8-16Mhz praktisch nicht vermeidbar. Nachdem diese Fälle abgeschlossen sind, überwacht der MCU nurnoch ein Analogsignal(7khz) und wartet auf ein passendes Ergebniss.Hierzu reicht eine Frequenz von 1-4Mhz völlig aus. Ein einfacher "Soll-Ist" Wert z.b. mit einem Comparator reicht nicht aus, da der MCU noch auswertet wie der Wert steigt. Wird jedoch der MCU (z.b. Atmel) auf eine Frequenz eingestellt, so behält er diese immer, und verbraucht in allen gegebenheiten fast gleichviel Strom. Da der Modus in welchem das Analogsignal überwacht wird mitunter mal 15-20 Minuten dauern kann, hat das mitunter grossen einfluss auf die Batterielebensdauer. Nun wollte ich mal nachfragen ob es MCU gibt welche ihre Frequenz im Betrieb anpassen können? Etwa so wie das hochstehende Prozessoren z.b. im PC tun. Falls nicht, wäre eine Lösung mit einem zweiten MCU praktikabel? Also der "Main MCU" geht in den Deep-Sleep und ein low power MCU mit 1MHz überwacht das Signal und weckt dann den Main?
:
Verschoben durch User
Die verschiedenen Sleep-Modes sind eigentlich ausreichend. Es macht vom Stromverbrauch nur wenig Unterschied, langsamer zu rechnen oder schneller und dafür mehr zu schlafen. Es ist aber durchaus möglich, den Controller mit externen Takt zu betreiben und diesen zu variieren. (Beim AVR habe ich aber auch schon davon gelesen, dass man den externen Takt nicht um mehr als Faktor 2 auf einmal steigern/reduzieren sollte)
> Wird jedoch der MCU (z.b. Atmel) auf eine Frequenz eingestellt, > so behält er diese immer ... ? Ohne Kommentar.
Ond dann gaeb's noch den internen Oscillator, der kann mit dem Osccal Register verstellt werden.
S. Landolt schrieb: >> Wird jedoch der MCU (z.b. Atmel) auf eine Frequenz eingestellt, >> so behält er diese immer ... > > ? > > Ohne Kommentar. Und das kann man im laufenden Betrieb ändern?
Steht ja da: "These bits can be written run-time to vary the clock frequency to suit the application requirements."
Johnny S. schrieb: > Nun wollte ich mal nachfragen ob es MCU gibt welche ihre Frequenz im > Betrieb anpassen können? Das kann beispielsweise die MSP430-Reihe. Die können im Betrieb zwischen extern angeschlossenem Quarz und internem RC-Oszillator umschalten und auch die Frequenz des RC-Oszillators ändern.
Und Cortex-M können das üblicherweise auch alle, dazu lassen sich noch nicht benötigte Hardware Units abschalten.
an Johnny S.: Okay, zugegeben, die "klassischen" AVR8 'AT90...' konnten es nicht, auch z.B. ATmega8 oder 16 noch nicht.
Johannes S. schrieb: > Und Cortex-M können das üblicherweise auch alle, dazu lassen sich noch > nicht benötigte Hardware Units abschalten. Und wenn der externe Quarz im Betrieb abbricht schalten die besseren auf den internen RC-Oszillator um :-)
Quarz-Killer schrieb: > Und wenn der externe Quarz im Betrieb abbricht schalten die besseren auf > den internen RC-Oszillator um :-) Oder auf den Uhren-Quarz
Habe ich auch schon mit XMega gemacht für einen Datenlogger. Läuft mit 2 MHz im Logmodus und mit 32 Mhz, sobald man ihn zum Auslesen mit dem PC verbindet - natürlich im laufenden Betrieb.
:
Bearbeitet durch User
S. Landolt schrieb: > konnten es nicht, auch > z.B. ATmega8 oder 16 noch nicht. Aber auch da kann man an OSCCAL drehen. Von nominell 8 MHz sollte ein Bereich zwischen 5 und 15 MHz erreichbar sein. Quarz-Killer schrieb: > Und wenn der externe Quarz im Betrieb abbricht schalten die besseren auf > den internen RC-Oszillator um :-) Wenn man statt einem Schwingquarz einen Quarzoszillator mit Enable-Eingang nimmt, kann man den Zeitpunkt des Zu- und Abschaltens per Software bestimmen.
Tim schrieb: > Wenn man statt einem Schwingquarz einen Quarzoszillator mit > Enable-Eingang nimmt, kann man den Zeitpunkt des Zu- und Abschaltens per > Software bestimmen. Beim AVR8? Abschalten ja, das ginge sicher. Aber wieder anschalten geht nicht, da müsste dann externe Hardware für sorgen. Denn wo kein Takt, da kein Programm, was irgendetwas dafür tun könnte, dass wieder ein Takt kommt...
Johnny S. schrieb: > S. Landolt schrieb: >>> Wird jedoch der MCU (z.b. Atmel) auf eine Frequenz eingestellt, >>> so behält er diese immer ... >> >> ? >> >> Ohne Kommentar. > > Und das kann man im laufenden Betrieb ändern? Es sind Register. Wie soll man die denn ändern, wenn nicht im laufenden Betrieb?
c-hater schrieb: > Beim AVR8? Nein, nicht das ich wüßte. Quarz-Killer schrieb: > Und wenn der externe Quarz im Betrieb abbricht schalten die besseren auf > den internen RC-Oszillator um Was auch immer "die besseren" sind, meine Erkenntnisse diesbezüglich sind auf AVR begrenzt. Nein, stimmt nicht: In FPGAs bau ich gelegentlich auch solche Takt-Fallback-Schaltungen ein. Ein internen getakteter zähler überwacht einen extern getakteten Zähler. Nur wenn der im richtigen Freuqenzbereich ist, wird der Clock-Mux auf extern geschaltet. Vorteil: Die Kommunikationsschnittstellen laufen auch im 'Fehlerfall' (kein externer Takt).
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.