Hi Leute Auf die schnelle mal ein Assemblerprogramm für einen 68HC11E1 Beim Ausschalten muss der Microcontroller die letzte Einstellung auf dem EEPROM speichern.zusätzlich muss der Microcontroller die Adresse bei der das Programm abgebrochen wurde merken sodass beim Neustart das Programm ab der Abbruchadresse neustartet Viel Dank für ihre Hilfe Brian
> ... sodass beim Neustart das Programm ab der Abbruchadresse neustartet
Na dann viel Spass beim Sichern sämtlicher Variablen, die gehen nämlich
bekanntlich beim Ausschalten verloren.
>zusätzlich muss der Microcontroller die Adresse bei der >das Programm abgebrochen wurde merken sodass beim Neustart das Programm >ab der Abbruchadresse neustartet Holla die Waldfee... Nicht nur alle Variablen(-Register) sondern alle verwendeten Register. Und das auch noch > Auf die schnelle [...] Naja, vielleicht läßt das Programm ja nur 'ne LED blinken. Viel Spass
...aber um nicht nur runzulabern: 1. Ausschaltwunsch erkennen 2. Alles nötige sichern 3. Ausschalten Das funktioniert einfach(er), wenn das Ausschalten über einen Taster passiert, der den Ausschaltwunsch angibt. Schwierig wird's, wenn das Ausschalten durch Wegnahme der Versorgunsspannung passiert. Dann muss dafür gesorgt werden, dass genügend Energie zum Speichern vorgehalten wird (GoldCap?, Akku?) nachdem die Versorgungsspannung weg ist.
Hallo, eventuell müßten auch noch alle Zustände aktiver externer Komponeten gesichert und wiederhergestellt werden, es muß sicherhestellt werden, daß z.B. ein Schreibzugriff auf einen Flash/EEPROM o.ä. noch sauber beendet wird usw. usw. Gruß aus Berlin Michael
Also für mich klingt das Posting des OP aber eher danach, als wolle er eine Art Watchdog mit automatischen Wiedereinsprung machen. Denn WENN ICH WEISS, dass gleich abgeschaltet wird, brauche ich ja keine Adresse, wo ich wieder einspringe, sondern kann ordnungsgemäß wieder aufsetzen. Also konket gesagt klingt es so, als wäre der Abbruch unvorhergesehen. Und in so einem Fall exakt mit allen Registern und Flags wieder aufzusetzen, ist wohl eher nicht möglich. Jochen Müller
Hallo, wenn es nur der CPU-Zustand, könnte man es schon machen. Interrupt auslösen bei Spannungsabfall, dort alle Registerinhalte usw. in ein EEPROM/gpufferten Ram retten und ein Flag dort hinterlassen. Beim Neustart zuerst dieses Flag testen. Wenn es ein solcher Abbruch war, Restore-Routine aufrufen, alles zurückbasteln, Stack usw. anpassen und mit Return raus. Wie es konkret geht, hängt vom HC11 ab, den kenne ich nicht. Problematisch sind Read-Only-Register, wenn es die beim HC11 gibt. Gruß aus Berlin Michael
Hi Leute vielen Dank fuer die Beitraege. auch wenn das Problem noch nicht abgehackt ist sind vielen eure Vorschlaege sehr wuenschenswert. Zu tastendrücker:Das Programm laesst nicht nur eine LED blinken sodern eine ganze Anlage. Was waere deinen Vorschlag in einem Assemblercode oder Flussdiagramm wenn: 1) Das Ausschalten über einen Taster passiert 2) Das Ausschalten durch Wegnahme der Versorgunsspannung passiert. Zu Michael U Was meinen sie ueber :"es muß sicherhestellt werden, daß z.B. ein Schreibzugriff auf einen Flash/EEPROM o.ä. noch sauber beendet wird" Ok Michael ich hatte auch wie du gedacht dass ein Interrupt ausgeloest werden muss usw. also ich gehe davon aus dass du nie einen HC11 MCU benutzt hattest. aber koennen wie mir ein Paare Assemblercode schicken die mir helfen wuerden fuer diese Aufgaben Koennen sie mir einen Vorschlag machen? Viel Danke im Voraus
Johnny Brian wrote: > Hi Leute Auf die schnelle mal ein Assemblerprogramm für einen 68HC11E1 Also auf die schnelle geht bei Assembler schonmal garnichts. Das geht nur in C. Und 68HC11E1 Assembler kann ich nicht. Ich werde mir auch keinen MC angucken, der nicht Flash-Programmspeicher hat, der per Bootloader programmierbar ist. Mit uralten ROM/EPROM-MCs macht man sich das Leben nur unnötig selber schwer. > Beim Ausschalten muss der Microcontroller die letzte Einstellung auf dem > EEPROM speichern.zusätzlich muss der Microcontroller die Adresse bei der > das Programm abgebrochen wurde merken sodass beim Neustart das Programm > ab der Abbruchadresse neustartet Das ist Quatsch. Du kannst nicht einfach an eine Adresse springen und erwarten, daß das Programm einfach so weiter läuft. Das kann ja ne Unterfunktion sein und die weiß dann nicht mehr, wohin sie zurückspringen soll. Du müßtest also ein komplettes RAM- und IO-Register-Abbild mit speichern. Schreibe Dein Programm als Statemaschine und merke Dir den aktuellen State und die dazugehörenden Parameter. Inwieweit sowas überhaupt sinnvoll ist, ist eine andere Baustelle. Z.B. eine Maschine darf nicht wieder mit voller Kraft loslaufen, wenn der Strom wiederkehrt. Peter
Ich würde den Ausschalter blockieren; dann gibt es keine Probleme beim Aus-/Einschalten.
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.