Forum: Mikrocontroller und Digitale Elektronik atmega328P, 20MHz bei 3,3V


von Scadi (Gast)


Lesenswert?

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

von Mitlesa (Gast)


Lesenswert?

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 ....

von Falk B. (falk)


Lesenswert?

@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.

von c-hater (Gast)


Lesenswert?

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"...

von Manfred (Gast)


Lesenswert?

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.

von Harry L. (mysth)


Lesenswert?

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?

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

Läuft mal mit 1.8, mal mit 4.5 V - wie sieht da eigentlich die Anbindung 
der Peripherie aus?

von Peter R. (pnu)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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...

von Jim M. (turboj)


Lesenswert?

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.

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.