mikrocontroller.net

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


Autor: Johnny Brian (Firma: MAXD) (laflamme)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johnny Brian (Firma: MAXD) (laflamme)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde den Ausschalter blockieren; dann gibt es keine Probleme beim 
Aus-/Einschalten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.