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