Hallo, ich habe eine alte Atmega32 Schaltung vor Jahren mal gebaut. Nun möchte ich, dass der Mikrocontroller seinen jetzigen Betriebszustand beibehält, wenn ich ihn von der Versorgungsspannung trenne. Also gespeißt wird der Atmega32 mit 5V. Wenn die Versorgungsspannung weg ist, soll eine 3V-Batterie über Schotky-Dioden einspringen. Im Datenblatt finde ich aber leider keine Angaben darüber, was der AT32 macht, wenn eine zu niedrige Versorgungsspannung anliegt. Am liebsten hätte ich, dass er in einen Energiesparmodus springt, wo nur der RAM erhalten bleibt. Macht er das denn auch? Im Datenblatt steht nur, wie ich ihn absichtlich bei anliegender Versorgungsspannung in einen Sparmodus schicken kann. (siehe: Power Management and Sleep Modes) Muss ich nun bestimmte Register setzen, damit er automatisch bei plötzlichen Absinken der Versorgungsspannung in einen Energiesparmodus springt? Wichtig für mich auch der zugehörige Stromverbrauch dabei. Danke Schön!
Sergej M. schrieb: > Im Datenblatt finde ich aber leider keine Angaben darüber, was der AT32 > macht, wenn eine zu niedrige Versorgungsspannung anliegt. > Am liebsten hätte ich, dass er in einen Energiesparmodus springt, wo nur > der RAM erhalten bleibt. Macht er das denn auch? Ja klar, denn der Atmega ist sowas wie "wünsch dir was". Wenn du dem eine zu niedrige Spannung anlegst dann kocht er auch Kaffee und geht für dich Arbeiten.... Manno mann. Denkst du ein solches Verhalten wäre im Datenblatt nicht beschrieben? Die Reaktion ist undefiniert. Es kann sein es passiert gar nix, oder er verliert unkontrolliert irgendwelche Daten im Ram. Oder er bleibt stehen. Grundsätzlich hängt die Mindestspannung auch vom Takt ab. Takte so niedrig wie möglich, dann ist die Chance höher dass er bei niedriger Spannung noch geht. Garantieren kann dir das niemand und es ist pfusch. Es gibt genug neue AVRs die bis 2,7 oder sogar 1,8 Volt noch funktionieren. Nimm sowas dann hast du keine Probleme. Auch den Mega32 gibts in der L-Variante dann geht er bis 2,7 Volt. Also kauf doch einfach so einen und übertrage das Programm. Ist die einfachste Lösung. > Muss ich nun bestimmte Register setzen, damit er automatisch bei > plötzlichen Absinken der Versorgungsspannung in einen Energiesparmodus > springt? Nein das geht nicht. Energiesparmodus heißt dass der Stromverbrauch reduziert wird, nicht dass du die Spannung absenken kannst. > Wichtig für mich auch der zugehörige Stromverbrauch dabei. Der Stromverbrauch in den verschiedenen Sleep-Modes steht im Datenblatt. gruß cyblord
Sergej M. schrieb: > Muss ich nun bestimmte Register setzen, damit er automatisch bei > plötzlichen Absinken der Versorgungsspannung in einen Energiesparmodus > springt? Der ATmega32 hat einen analogen Komperator, den Du wie folgt beschalten kannst, dass bei Unterschreiten einer bestimmten Betriebsspannung ein Interrupt ausgelöst wird: AIN1 beschaltest Du mit einer Zener Diode von 3,3V nach Vcc und einem Pulldown-Widerstand von c.a. 100K nach GND, so dass an diesem Vcc-3,3V bzw. 0V bei Vcc<3,3 anliegt. Also 2,7V bei 5V Vcc und 0V bei 3V Vcc. So fließen bei 5 V 27µA und bei 3V theoretisch kein Strom, so dass Deine Batterie nicht zusätzlich belastet wird. AIN0 versorgst Du mit der internen Spannungsreferenz, die laut Handbuch beim Mega32 1,15 - 1,35V hat. Die interne Spannungsreferenz verbraucht laut Handbuch 10µA. Die entsprechenden Register findest Du im Kapitel "Analog Comperator" des Handbuchs. Es stellt sich natürlich die Frage, ob Deine Schaltung noch genügend Platz hat, nachträglich eine Zener Diode und einen Widerstand unterzubringen. Zeig' doch mal ein Foto. Wie Dein ATmega32 regiert, wenn man im Betrieb die Versorgungsspannung wechselt, weiß ich nicht. Da solltest Du ein paar Tests machen, in denen Du auch ermittelst, mit wie wenig Spannung er bei gegebenem Takt überhaupt auskommt. Zumindest die ATmega8, die ich schon zwischen den Fingern hatte reagieren da meiner Erfahrung nach eher gutmütig: Umschalten von 5V nach 3V und zurück: Keine Probleme bisher. Betreiben eines ATmega8 (ohne L) mit unter 4,5V: Ebenso. 16MHz bei 3,3V (mit und ohne L): Ging bisher immer. Man kann natürlich nicht ausschließen, dass einer der zig Tausend Transistoren irgendwo auf dem µC das nicht mehr mit macht, aber dafür sollst Du ja auch ausprobieren, mit wie wenig Spannung Deine Schaltung noch funktioniert. Wenn die Deutlich unter Deinen 3V liegt, müsste es gehen. Sergej M. schrieb: > soll eine 3V-Batterie über Schotky-Dioden einspringen. Das könnte knapp werden. Such' Dir eine mit möglichst geringer Durchlassspannung aus. (Siehe Anhang)
Hallo cyblord cyblord ---- schrieb: > Ja klar, denn der Atmega ist sowas wie "wünsch dir was". Wenn du dem > eine zu niedrige Spannung anlegst dann kocht er auch Kaffee und geht für > dich Arbeiten.... Manno mann. Denkst du ein solches Verhalten wäre im > Datenblatt nicht beschrieben? Anstatt mir so patzig zu antworten, wäre eine Hilfe oder Referenz schöner gewesen. Ich habe nicht behauptet, dass irgendwas irgendwo nicht steht, sondern dass ich nichts davon gefunden habe. cyblord ---- schrieb: > Die Reaktion ist undefiniert. Es kann sein es passiert gar nix, oder er > verliert unkontrolliert irgendwelche Daten im Ram. Oder er bleibt > stehen Kannst Du dafür eine Referenz geben? cyblord ---- schrieb: > Grundsätzlich hängt die Mindestspannung auch vom Takt ab. Takte so > niedrig wie möglich, dann ist die Chance höher dass er bei niedriger > Spannung noch geht. Du hast meine Frage nicht ganz verstanden. Ich möchte mit der Batterie den RAM erhalten und nicht den ganzen Controller mit all seinen Funktionen am Laufen halten. Auch den Quarz brauche ich nicht im Batteriebetrieb. Das möchte ich: Ich schalte die Versorgungsspannung ab und stelle die Schaltung für einen Monat in den Schrank. Nach dem Monat schalte ich ihn ein und er ist wieder an der gleichen Stelle da, weil die Batterie seinen Betriebszustand erhalten hat. In dem einen Monat im Schrank muss er nichts rechnen, der Quartz muss auch nicht schwingen u.s.w. Ich möchte auch nichts kaufen, sondern nur eine Information einholen über das was ich bereits habe. Folgendes suche ich im Datenblatt: 1: Ab welcher Spannung hört der externe Quarz auf zu schwingen. 2: Ab welcher Spannung verliert er seinen RAM. 3: Wie viel Strom verbraucht er in dem Zustand, wo der Quarz nicht mehr schwingt, der RAM aber erhalten bleibt. Danke schön!
Hallo Piefke, Dein Vorschlag mit dem Comparator klingt sehr gut. Leider sind bei mir AIN0 & AIN1 bereits besetzt. Fast alle PINS sind bei mir belegt. Ich habe mir die entsprechende Seite im Datenblatt markiert ... vielleicht kann ich die PIN ja frei machen. Platz auf der Platine habe ich sonst genug, daran soll es nicht mangeln. Ich sehe, so einfach ist es also bei dem alten Controller nicht mit der Versorgungsspannung. Ich hatte mal mit einem anderen Kontroller gearbeitet, dieser hatte einen eigenen PIN für Batterieversorgung und er konnte eben automatisch in einen SLEEP-Modus schpringen, wenn man ihm die Spannung abdrehte. Er wechselte automatisch auf die Batterieversorgung und schaltete den Oszillator ab... natürlich mussten dafür Register gesetzt werden, damit er das automatisch macht. Ich habe gehofft, dass der AT32 das auch kan ... naja Dabke!
Um die Betriebsspannung zu messen, braucht man nichtmal eine externe Beschaltung: Der ADC des ATMega32 kann nämlich seine interne Spannungsreferenz messen (ADC-Eingang 14). Als Referenzspannung nimmt man dabei die Versorgungsspannung. Dann erhält man einen Wert, der umgekehrt proportional zur Betriebsspannung ist. Wenn die Spannung zu niedrig wird, deaktiviert man einfach alle Peripherie des µCs und schickt ihn in den Power-Down-Modus. Dann sollten die Registerinhalte, RAM-Inhalte usw. auch noch unter 2,7V (wahrscheinlich sogar noch bei 1,5V) erhalten bleiben. Wenn man den µC wieder aufwecken will, betätigt man einfach einen der externen Interrupts wie INT0...2 und aktiviert die Peripherie danach wieder. Der µC macht dann sofort an der Stelle weiter, an der er "ausgeschaltet" wurde. Gruß Jonathan
Hast Du schon daran gedacht, wichtige Variable vor dem Ausschalten im EEPROM zu speichern, und beim nächsten einschalten wieder zu laden? Das funktioniert auch ohne zusätzliche Batterie. Falls das interne EEPROM des Mega32 nicht ausreicht, kannst Du einen externen im DPI 8 ergänzen (weil Platz auf Platine noch vorhanden). Was spricht dagegen?
Sergej M. schrieb: > Anstatt mir so patzig zu antworten, wäre eine Hilfe oder Referenz > schöner gewesen. Ich habe nicht behauptet, dass irgendwas irgendwo nicht > steht, sondern dass ich nichts davon gefunden habe. Wenn du nichts gefunden hast, dann tut er eben dies auch nicht. So einfach ist das. > > cyblord ---- schrieb: >> Die Reaktion ist undefiniert. Es kann sein es passiert gar nix, oder er >> verliert unkontrolliert irgendwelche Daten im Ram. Oder er bleibt >> stehen > > Kannst Du dafür eine Referenz geben? Nein, aber was soll sonst passieren? Der RAM benötigt eine bestimmte Spannung um die Daten zu halten. Wieviel GENAU hängt vom Einzelexemplar ab. Im Datenblatt stehen die Spannungen bei denen garantiert wird, dass die Daten erhalten bleiben. Alles andere musst du ausprobieren und ist Glücksache und vom einzelnen Baustein abhängig. > > cyblord ---- schrieb: >> Grundsätzlich hängt die Mindestspannung auch vom Takt ab. Takte so >> niedrig wie möglich, dann ist die Chance höher dass er bei niedriger >> Spannung noch geht. > > Du hast meine Frage nicht ganz verstanden. > Ich möchte mit der Batterie den RAM erhalten und nicht den ganzen > Controller mit all seinen Funktionen am Laufen halten. Auch den Quarz > brauche ich nicht im Batteriebetrieb. Ich habs verstanden, aber das geht halt nicht. Du kommst nunmal nicht von außen an den RAM ran und kannst da ne Extrawurst für braten. Du kannst nunmal nur an die Versorgungsspannung für den ganzen Baustein ran und deren Grenzen stehen im Datenblatt. Auch wenn du in einem Sleep-Modus bist, darfst du eigentlich die Spannung nicht weiter absenken als im normalen Modus. Jedenfalls steht sowas nicht im Datenblatt. Was gefällt dir denn nun an der Atmega32L Variante nicht? > Folgendes suche ich im Datenblatt: > 1: Ab welcher Spannung hört der externe Quarz auf zu schwingen. Steht nicht drin, hängt vom Einzelexemplar ab. Ab 4,5 Volt gehts aber sicher > 2:Ab welcher Spannung verliert er seinen RAM. siehe 1 > 3: Wie viel Strom verbraucht er in dem Zustand, wo der Quarz nicht mehr > schwingt, der RAM aber erhalten bleibt. Siehe Datenblatt unter Sleep-Modes. Dort wirst du den Stromverbrauch finden, aber keine Mindestspannung. Es gilt also weiterhin 4,5 Volt. gruß cyblord
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.