Forum: Mikrocontroller und Digitale Elektronik Assemblerprogramm für einen HC11


von Johnny B. (Firma: MAXD) (laflamme)


Lesenswert?

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

von Dieter W. (dds5)


Lesenswert?

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

von tastendrücker (Gast)


Lesenswert?

>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

von tastendrücker (Gast)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Jochen M. (taschenbuch)


Lesenswert?

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

von Michael U. (amiga)


Lesenswert?

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

von Johnny B. (Firma: MAXD) (laflamme)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.