Assemblerprogramm für einen HC11

(Firma: MAXD) #863692
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
Gast #863739
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
Gast #863744
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.
#863802
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
#863835
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
(Firma: MAXD) #863897
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
#863919
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren