Forum: Mikrocontroller und Digitale Elektronik ATxmega 324U


von Simo A. (Firma: Privat) (moago)


Lesenswert?

Hallo zusammen hat jemanden eine Idee wie kann ich mein Microcontroller 
behindern nach dem Stromausfall von Anfang zu starten d.h ich wollte 
nach dem Strom Ausfall dass mein Controller weiter arbeiten ab dem Punkt 
wo den Reset bzw Strommausfall gekommen ist ???? hat jemanden eine Idee 
wie man das in praktische einsetzen kann

von Sebastian R. (sebastian_r569)


Lesenswert?

Die beste Antwort: Kommt drauf an.

Der Programm Counter muss bei 0 anfangen. Auch sämtliche Initialisierung 
muss neu durchgeführt werden. Immerhin sind nach einem Reset erst einmal 
alle Register und Zustände als undefiniert anzusehen.

Ansonsten: Kommt drauf an, was dein Controller macht und ob man seine 
Aufgaben irgendwie irgendwo nichtflüchtig zwischenspeichern kann. FRAM, 
SD-Karte, EEPROM - Kommt halt einfach drauf an.

von Thomas R. (r3tr0)


Lesenswert?

Würde evtl States im EEPROM Speichern und direkt nach der 
Initialisierung des µC diesen State abfragen und dann zu diesem Punkt / 
Funktion etc Springen.
VCC -> Diode -> großer Kondensator -> µC VCC
VCC mit ADC messen, sobald Spannung sinkt aktuellen State ins EEPROM 
speichern.
Bei neustart des µCs initialisierung durchlaufen lassen, aus EEPROM 
lesen und zu State springen.

von Adam P. (adamap)


Lesenswert?

Das geht so nicht wie du dir das vorstellst.
Du könntest parallel dazu ein Akku als USV nutzen.

Bekommt ein µC Spannung, dann startet er immer "von vorne".

Theoretisch wäre aber folgendes vllt. möglich:
Du nutzt eine Puffer Batterie oder wie o.g. einen Akku,
wenn der µC nun einen Spannungsausfall erkennt, dann sichert er sich 
alle Register und den Stack usw.
Beim erneuten starten prüft man ob ein Spannungsausfall da war und läd 
die gesicherten Register usw.
Natürlich vorher noch alles Initialisieren, aber ob der Aufwand sich 
lohnt ist fraglich.

Ob das wirklich so funktioniert, weiß ich leider nicht - nur eine Idee.

: Bearbeitet durch User
von Adam P. (adamap)


Lesenswert?

Thomas R. schrieb:
> Bei neustart des µCs initialisierung durchlaufen lassen, aus EEPROM
> lesen und zu State springen.

Die Frage ist halt:
Möchte der TO beim letzten State weiter machen, oder wirklich den 
aktuellen "ganzen" Zustand sichern.

: Bearbeitet durch User
von Thomas R. (r3tr0)


Lesenswert?

Adam P. schrieb:
> Die Frage ist halt:
> Möchte der TO beim letzten State weiter machen, oder wirklich den
> aktuellen "ganzen" Zustand sichern.

Jup, das ist halt die Frage. Da müsste der TO mal genauer beschreiben, 
was er denn vor hat :>

von M. K. (sylaina)


Lesenswert?

Du müsstest mit States arbeiten die entsprechend gespeichert werden wenn 
die Spannungsversorgung zusammen bricht. Wenn dann die Spannung zurück 
kommt müsste der Mikrocontroller die gespeicherten States als erstes 
einlesen und auf Grundlage dessen weiter arbeiten. Steady-State ist dein 
Freund würde ich so auf Anhieb mal sagen. ;)

von Hugo H. (hugo_hu)


Lesenswert?

Frag mal Yussuf.

: Bearbeitet durch User
von Max M. (Gast)


Lesenswert?

Mohamed A. schrieb:
> ab dem Punkt
> wo den Reset bzw Strommausfall gekommen ist

Das darfst Du alles schön per Hand machen, in dem Du die Versorgung 
lange genug pufferst das Du einen Ausfall der Versorgung erkennen 
kannst, dann alles in einen nichtflüchtigen Speicher ablegst und den 
Zustand wieder herstellst ab dem du weiterarbeiten willst.
So lange muss der Puffer halten und das Programm mus bis zu einem Punkt 
kommen an dem sinnvoll unterbrochen werden kann.

MCUs verlieren alle Informationen bei Spannungsausfall und ohne das 
Reset Signal hätten alle Register zufällige Werte und die Kiste würde 
irgendwo starten und irgendwas machen.
Daher stehen im DB, das Du ja sicherlich gelesen hast, die Reset Values 
der Register.

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.