Forum: Mikrocontroller und Digitale Elektronik PIC 18F EEPROM in Assembler vordefinieren


von Tobi D. (fanti)


Lesenswert?

Hiho zusammen,
ich habe ein Problem mit der EEPROM Programmierung in Assembler für den 
PIC18f2550, evtl auch nur ein Verständnisproblem und hoffe mir kann 
einer behilflich sein.

bevor ihr mich direkt in der luft zerreißt, weil ich den 18er in 
Assembler beschrieben möchte, ich möchte ein komplexes Programm von 
einem 16er pic auf einen 18er übertragen.

das Schreiben und Lesen im Programmablauf funktioniert ohne Probleme 
auch jeweils die richtigen (erwarteten) Adressen, allerdings möchte ich 
im Assembler Programm schon Grundwerte in das EEPROM mit rein brennen 
und da gibts Probleme.

definiert habe ich die Daten im Programm wie folgt:

 org 0xF00000
        de 0x53    ;Adresse  00
        de 0x45    ;Adresse  01
        de 0x54    ;Adresse  02
...

wenn ich mir die zu brennenden Daten im Brennprogramm anschaue, sieht es 
leider so aus:
53 00 45 00 54 00

und nicht wie gewollt:
53 45 54


das hat beim 16er pic auch wunderbar funktioniert, allerdings hat der 
18er pic eine andere Programmcounter Architektur, auf Gund der 16 Bit 
Befehlsbreite, ich denke da liegt das Problem und die er schreibt für 
jede Zeile 16 Bit ins EEPROM und nicht nur den eigentlich geforderten 8 
Bit Wert, somit stimmen die Adressierungen der Werte nicht mehr.

jemand eine Idee?

von Holger (Gast)


Lesenswert?

Versuch es mal so, Code als reloctable angeben.


 org  0xF00000

packed code_pack 0xF00000  ; (reloctable code !)


EE_hysterese    db  .7
EE_hyst_time    db  .30

...

Holger

von Tobi D. (fanti)


Lesenswert?

hallo holger,

ich habs eben ausprobiert, allerdings meckert beim build der Linker und 
mag die org-Adresse nicht

so richtig verstehe ich nicht, was er von mir möchte


irgendwie verwirrend, was sollte es für einen Sinn machen, dass ich die 
einzelnen EEPROM Zellen  durch direkte Adressierung im Programm lesen 
und beschreiben kann, aber im Assemblerfile die einzelnen Zellen nicht 
ohne weiteres beschreibbar sind

von Holger (Gast)


Lesenswert?

Ich hab meine Projekte alle mit MPLAB so angelegt und er tut es.
Hatte beim Umstieg von 16F auch das gleiche Problem.
Über den Wizard reloctable auswählen (man kann das nachträglich ändern, 
hab es jetzt aber nicht gefunden) und dann so wie oben angegeben.
Bei Bedarf kann ich dir mal ein abgespecktes Projekt senden.

Holger

von Tobi D. (fanti)


Lesenswert?

hm ok

danke für das Angebot, aber das relocable erzeugt wieder neue Probleme 
bei mir mit dem Linker, wahrscheinlich durch unsaubere Programmierung

ich werde die EEPROM Adressen so abändern dass immer nur jede 2. 
abgefragt wird, zwar auch kein guter Programmierstil aber sollte 
funktionieren, klingt zu mindest einfacher als das ganze Programm wieder 
auseinander zu nehmen

trotzdem danke für die Hilfe holger

von Holger W. (holgerw)


Lesenswert?

ok, wie du magst.
Alternativ im Programm eine Routine einfügen, die die Werte schreibt 
beim allerersten Start.

Holger

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.