www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datum an einer adresse im EEPROM speichern


Autor: Stephanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich habe folgendes Problem
ich versuche was im EEPROM an  der adresse $B7f5  zu speichern aber es 
kommt zu einer Fehlermeldung
(HC11E1)  -----> Assembler


        ORG $B600       ; Start of EEPROM

ldx  $B7f0
  staa  5,x  ; put the data there  ()

ldx     $B7f0
  ldaa  5,x  ; get the data

wo konnte das problem liegen?

Autor: Alexander Liebhold (lippi2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Stephanie,

schau bitte unter AVR im Tutorial nach. Dein Programm muss weiterhin im 
Flash stehen und der Zugriff erfolgt nur über Pointer. Beispielcodes 
gibts im Tutorial.

Gruß Alexander

Autor: Stephanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alexander ich habe das Tutorial gelesen.aber ich kann doch meine 
Daten im internen (On CHIP EEPROM ) speichern oder
ich hätte gerne das im Assembler
ich denke mein Code ist richtig aber wo der Fehler liegt weiss ich nicht

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander Liebhold wrote:
> schau bitte unter AVR im Tutorial nach.
Der HC11 ist aber absolut kein AVR, weshalb ihr das Tut hier nicht 
wirklich weiterhelfen dürfte...

Autor: Stephanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi  Johannes das weiss ich dass der HC11 kein HC11 ist
hast du einen Vorschlag?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephanie wrote:
> Hi  Johannes das weiss ich dass der HC11 kein HC11 ist
> hast du einen Vorschlag?
Doch, der HC11 ist ein HC11. Und der Kommentar bezog sich auf Alexanders 
Posting. Und nein, ich kann Dir nicht weiterhelfen, da ich mich mit HC11 
nicht auskenne. Ich bin nur in diesem Thread gelandet, weil Du 
offensichtlich die Forenregeln nicht gelesen hast und den Controllertyp 
nicht im Betreff angegeben hast...

Autor: Stephanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LOL.ich meinte der HC11 ist kein AVR

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephanie wrote:
> ich versuche was im EEPROM an  der adresse $B7f5  zu speichern aber es
> kommt zu einer Fehlermeldung

Ich kenne den HC11 im speziellen nicht, aber in der Regel hat eine 
Fehlermeldung auch immer einen Wortlaut und der sagt ziemlich genau aus, 
wo den Assembler der Schuh drückt.

Wenn Dein Problem der englische Wortlaut ist, dann einfach copy&paste, 
wird schon jemand übersetzen können.


>         ORG $B600       ; Start of EEPROM
>
> ldx  $B7f0

Könnte mir gut vorstellen, daß der EEPROM nur für Daten ist, d.h. da 
darf kein Code stehen. Selbst modifizierender Code ist ja auch etwas 
strange.


Peter

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der HC11 kann da alles speichern, weil er eine von Nemann Architektur 
hat. Wie allerdings generell läßt sich EEPROM nicht so einfach mittels 
STA beschreiben.

Im Datenblatt steht der EEPROM Schreibzyklus wie folgt beschrieben :

PROG LDAB #$02 EELAT = 1
     STAB $103B Set EELAT bit
     STAA $XXXX Store data to EEPROM address
     (  for valid EEPROM address see memory map for each device)
     LDAB #$03 EELAT = 1, EPGM = 1
     STAB $103B Turn on programming voltage
     JSR DLY10 Delay 10 ms
     CLR $103B Turn off high voltage and set to READ mode

Was der Assembler da für eine Fehler rauswirft weiß aber immer noch 
niemand.

Eckhard

Autor: Alexander Liebhold (lippi2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, habs überlesen, dachte es ist ein AVR.

Nun dein Code ist trotzdem falsch. Wenn du ein .org $B600 benutzt, 
bedeutet dies, dass folgende Assemblerbefehle an die Adresse $B600 
geschrieben werden. Dein Programmcode muss aber immer im 
Programmspeicher stehen. Von dort kannst an einen Wert an eine Adresse 
speichern.
Also meinetwegen:

.org $100   (Programmspeicher)
load Adresswert nach Adressregister A0
schreibe Wert an Adresse die in A0 steht

(Kenn jetzt nicht die Befehle beim HC11)

Willst du feste Werte wie Konstanten beim Programmieren an einer 
bestimmten Stelle ablegen (meinetwegen die Zahlen 5,4,13 sollen an 
Adresse $B600 stehen, dann muss es wie folgt heißen:

.org $xxxx
"Hauptprogramm im Programmspeicher"

.org $B600 (EEPROM)
.db 5,4,13


So ist das nun bei ASM üblich.

Autor: Eckhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nochmal ein HC11 unterscheidet nicht zwischen Daten und 
Programmspeicher.
Der hat nur RAM und EEPROM. Das Programm kann natürlich auch im RAM 
laufen aber ist dann nach dem Einschalten weg. Deshalb legt man das 
Programm halt in den EEPROM Bereich.


Eckhard

Autor: Stephanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi  Alex

Ich weisst jetzt was du meinst.

     ORG  $B600

     Data1 RMB 1

Daten

     FDB  5,4,13            ; DB.W  oder DB.B würde auch gehen

     LDX  #Daten
     LDAA 0,X               ; ACCA wird mit 5 initialisiert
     STAA <Data1

ich glaube so ist das Programm richtig

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.