Hallo,
in meiner Anwendung dreht der 328 die meiste Zeit Däumchen, hat aber
permanent Kleinigkeiten zu erledigen, ich kann ihn also nicht kplt.
einschläfern.
Da würde eine Taktfrequenz im kHz-Bereich ausreichen.
Bei bestimmten Ereignissen muss er aber bei 20MHz unter Volldampf
laufen.
Dafür muss er aber mit min. 4,5V betrieben werden was den Stromverbrauch
in die Höhe treibt.
Deshalb möchte ich ihn dynamisch runtertakten und die
Versorgungsspannung auf 1,8V absenken.
Die Spannung kann ich ganz einfach mit einen I/O-Pin an einen
Spannungsregler umschalten.
Den Takt könnte ich mit dem CLKPR-Register runterteilen (bis zu 20MHz /
256 = 78KHz).
Mein Ziel wäre das Teil mit den 78KHz bei 1,8V und 20MHz bei 4,5V laufen
zu lassen.
Nun meine Frage, läuft der Quarzoszillator mit 20MHz bei 1,8V?
Das der Prozessor nicht laufen würde ist mir klar, aber der Oszi?
Im Datenblatt habe ich nichts gefunden, was aber nichts heißt ;-)
lg
Thomas
Scadi schrieb:> Nun meine Frage, läuft der Quarzoszillator mit 20MHz bei 1,8V?
Was hindert dich daran das an deinem existierenden Design
auszuprobieren? Ein Taskopf am XTAL Out genügt. Erwarte aber
nicht TTL Pegel oder ähnliches. Eher ein paar hundert mV.
Meine Testaufbauten 644 funktionieren bei 3.3V 20 MHz.
Ich weiss .... nicht laut Datenblatt ....
@Scadi (Gast)
>Bei bestimmten Ereignissen muss er aber bei 20MHz unter Volldampf>laufen.>Dafür muss er aber mit min. 4,5V betrieben werden was den Stromverbrauch>in die Höhe treibt.
Wieso denn? Er läuft doch nur kurze Zeit bei vollem Takt. Im Sleep Mode
ist die Versorgsungsspannung nahezu egal.
>Deshalb möchte ich ihn dynamisch runtertakten und die
Kann man machen.
>Versorgungsspannung auf 1,8V absenken.
Das ist keine gute Idee.
>Mein Ziel wäre das Teil mit den 78KHz bei 1,8V und 20MHz bei 4,5V laufen>zu lassen.
Mußt du wirklich SOOO krampfhaft Strom sparen?
>Nun meine Frage, läuft der Quarzoszillator mit 20MHz bei 1,8V?>Das der Prozessor nicht laufen würde ist mir klar, aber der Oszi?
Solche Tricks lohnen sich nur seeeehr selten. Lass es.
Scadi schrieb:> Nun meine Frage, läuft der Quarzoszillator mit 20MHz bei 1,8V?> Das der Prozessor nicht laufen würde ist mir klar, aber der Oszi?
Wenn er korrekt angepasst ist, dann läuft er auch bei 1,8V noch völlig
problemlos. Das Problem sind hier nicht die Halbleiter im µC, sondern
einzig die korrekte Dimensionierung der Bürdekapazitäten. Sprich: je
kleiner die Spannung, desto geringer wird auch der Spielraum für
Dimensionierungsfehler dieser Kapazitäten.
Als groben Anhaltspunkt kannst du den "Full-Swing"-Betrieb bei 4.5V Vcc
nehmen. Wenn da das Signal an XTAL1 nicht 4.5V Vss erreicht, stimmt die
Anpassung definitiv nicht. Durch Tausch der Kapzitäten kannst du den
Bereich der korrekten Anpassung "abmessen", also den Bereich, in dem der
"Full-Swing" tatsächlich erreicht wird. Von dem so ermittelten
Kapazitätsbereich nimmst du das geometrische(!) Mittel und davon
ausgehend den nächstniedrigeren(!) Standardwert für die
Bürdekondensatoren. Dann sollte es, in'sch Allah, auch bei 1,8V noch
problemlos laufen. Was du natürlich ganz einfach auch wieder mit dem
Oszi überprüfen kannst, es sollten dann im Idealfall 1,8V Vss an XTAL1
zu messen sein, in der Praxis wird es allerdings meist merklich weniger
sein.
Solange es auch in der Serie über mehrere Exemplare der Schaltung
(idealerweise mit µc, Quarz und Bürdekapazitäten aus verschiedenen
Chargen) immer gut über 1V Vss sind, ist's Super-OK, mehr kann man nicht
verlangen und mehr ist auch nicht nötig, denn da bleibt dann reichlich
Luft bis zum "geht nicht"...
Scadi schrieb:> Deshalb möchte ich ihn dynamisch runtertakten und die> Versorgungsspannung auf 1,8V absenken.
Grober Unfug. Schlafen legen mit ein paar wenigen µA Stromverbrauch,
über den Watchdog aufwachen, Aktion zügig erledigen und wieder Gute
Nacht.
Hier läuft ein AT328 mit 5V / 16MHz bei 6µA im sleep.
Interessanter Ansatz, aber wirft die Frage auf, ob die Verlustleistung
der LDOs für die Spannungen diesen Aufwand rechtfertigt, und man doch
nicht lieber die 20MHz-CPU in den Deep-Sleep schickt, und nur bei Bedarf
aufweckt.
Wenn er die "einfachen Aufgaben" mit 20MHz statt paar kHz erledigt, geht
das ja auch viel schneller, und der µC muß viel kürzer "wach" sein.
Was am Ende zählt, ist die Energie-Bilanz.
Das nur an der momentanen Stromaufnahme fest zu machen ist imho zu kurz
gedacht.
Vielleicht ist ja auch der 8bit-AVR der falsche µC für das Vorhaben?
Scadi schrieb:> Bei bestimmten Ereignissen muss er aber bei 20MHz unter Volldampf> laufen.
Wieder mal diffuser Nebel: "bei bestimmten Ereignissen"
Da ist der Hebel anzusetzen: In Assembler optimieren, auf minimale Zahl
von Befehlen z.B. auf reine Aufnahme der Daten beschränken, diese in
Speicher übergeben und anschließend "gemütlich" verarbeiten, mit
Richtigkeitskontrolle, Umformung, Verarbeitung usw.
Harry L. schrieb:> Interessanter Ansatz, aber wirft die Frage auf, ob die Verlustleistung> der LDOs für die Spannungen diesen Aufwand rechtfertigt, und man doch> nicht lieber die 20MHz-CPU in den Deep-Sleep schickt, und nur bei Bedarf> aufweckt.
Solange das MÖGLICH ist, ist diese Variante natürlich unbedingt
vorzuziehen, da gebe ich dir vollkommen Recht.
Bloß leider ist es eben längst nicht immer möglich. Das Problem stellt
sich immer dann, wenn man einerseits eine dauerhafte Zeitbasis mit
quarzgenauem Takt benötigt, gleichzeitig aber die Anforderung nach
extrem geringem Energiebedarf hat.
Dann gibt es bei den AVR8 (im besten Fall) nur zwei Möglichkeiten:
asynchroner Timer mit Uhrenquarz oder geringer Systemtakt mit
Uhrenquarz.
Nun ist es aber leider so, dass längst nicht jeder AVR8 überhaupt einen
asynchronen Timer hat (z.B. nahezu alle Tinys). Damit entfällt diese
Lösungsmöglichkeit für diese Devices. Dazu kommt, dass ein weiterer Teil
der Tinys nicht einmal den Betrieb mit einem "langsamen" Quarz als
Systemtaktquelle unterstützt.
Und ein weiteres Problem tut sich auf, wenn zwar "langsamer Systemtakt"
möglich ist, mit diesem geringen Takt aber die geforderte Antwortzeit
für eine konkreten Aufgabe schlicht nicht realisierbar ist.
Erkennst du das Problem?
Und ja: Der Ansatz des TO ist für genau solche kritischen Anwendungen
absolut zielführend. Man kann damit tatsächlich aus dem "geht nicht"
ausbrechen. Allerdings: der Energieverbrauch wird natürlich immer noch
höher sein, als bei Wahl des für die Anwendung optimalen Device. Sprich:
er sollte einfach einen Mega nehmen...
Scadi schrieb:> Nun meine Frage, läuft der Quarzoszillator mit 20MHz bei 1,8V?> Das der Prozessor nicht laufen würde ist mir klar, aber der Oszi?
Auch der kann probleme machen. Man schaue sich mal die Datenblätter zu
74HCxxx Logik an: Bei 2V sind die viel langsamer als bei 5V. Das wird
auch für den Inverter im Pierce-Oszillator auf dem AVR gelten - zumal
der für richtig Speed auch auf "Full Swing" gestellt sein muss. Da würde
ich in der Serie mit erhöhter Ausfallrate rechnen - und eine Einzelstück
könnte temperaturempfindlich sein.
Blöderweise kannste den Oszillator bei den ollen AVRs nicht einfach mal
abklemmen.
Aber wenn man die 20 MHz wirklich aus Performance Gründen braucht,
sollte man eher über einen Plattformwechsel zu Cortex-M3 oder Cortex-M4
nachdenken. Beispiele: STM32 für Performance (>100MHz) oder Silabs EFM32
für batterieschonenden Strombedarf. Falls ich die 5V wirklich noch
brauche, gäbe es was passendes von Nuvoton.
Eventuell lohnt es sich die Ableger von Bluetooth LE intergrierten Chips
anzuschauen. Deren Quarzoszillatoren können in <1ms hochfahren. Das
wären dann richtige BTLEs wie NordicSemi NRF5x oder Silabs "Gemstone"
Chips (Perl/Jade Gecko), letztere gibts auch ohne Radio. Allerdings ist
man dann auf eine bestimmte Quarzfrequenz festgelegt.