Hallo alle zusammen, kann man beim Brennen eines PICs das Überschreiben des EEPROM-Bereichs abschalten? Hintergrund ist, dass ich dort Daten ablegen möchte, die aber nach dem Brennen nicht immer wieder neu erzeugt werden sollen. Ich benutze die Software "US-Burn V1.10 a2" und den "Brenner8, Firmware V. 0.13" von Sprut. Den Haken unter "Optionen/includeEEPROM" habe ich entfernt, geht aber trotzdem nicht. Was mache ich falsch? Viele Grüße Kalli PS: Eine Mail an Sprut habe ich natürlich auch schon geschickt... falls von da eine Antwort kommt werde ich es euch wissen lassen
Man sollte eben besser in den Programmierdaten die Bereiche des EEPROMs entfernen. Dann braucht es nur noch die Einstellung "nur die (Page-) Bereiche löschen, die programmiert werden". Das "ausschneiden" bestimmter Datenbereich aus .Hex Datei macht z.B. das Programm http://srecord.sourceforge.net/
sorry, aber die Einstellung "nur die (Page-) Bereiche löschen, die programmiert werden" finde ich bei dem Brennprogramm nicht Gibt es da config-Parameter im Assembler-file, oder kann man das irgentwo in MPLAB einstellen?
Ich habe das gleiche Problem. Heute habe ich eine Mail an Sprut geschickt. In einer neuesten Programm Version sieht man schon Vorbereitung Vorbereitung (sehe die Optionen) für die Änderung. Übrigens auch wenn *.hex Daten keine Daten für EEPROM Programmierung enthalten, das Inhalt vom EEPROM wird gelöscht. Das kann sehr störend bei der Programmierung sein. Als vorläufige Lösung könnte man (vor Programmierung!) den PIC Inhalt auslesen. Am Ende vom *.hex File befinden sind die Daten für EEPROM. Die müsste man dann immer am Ende von *.hex Daten die MPLAB erzeugt anhängen. Vielleicht muss ich dazu etwas hilfreiches erstellen. Ich programmiere nur in C. In diesem Fall (PIC 18F258) muss man (vor main() ) Z.B. so etwas schreiben: #ifdef WITH_EEPROM_DATEN #pragma romdata section_eeprom_data =0xf00000 unsigned char rom EE_DUMMY_BYTE1 = 255; unsigned char rom EE_DUMMY_BYTE2 = 254; unsigned char rom EE_DUMMY_BYTE3 = 253; unsigned char rom EE_DUM[]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; #endif #pragma code main() { Nur dann erstellt MPLAB auch Daten für EEPROM im *.hex File
Hallo... die Mail an Sprut wird vermutlich in seinem Spamfilter hängen bleiben ;-) , ist meine auch, denn ich habe bis heute keine Antwort. Bei meinem Projekt bin ich noch nicht weiter, kommt aber wieder, wenn ich wieder Zeit dazu finde und es eine Lösung für das Problem gibt. C kann ich nicht, ich benutze nur den Assembler
Ich habe die Antwort vom Sprut bekommen: „Hallo, das Löschen an sich kann ich nicht verhindern, da ein separates Löschen nicht bei alles PICs möglich ist. Allerdings bietet USBurn als Option an, den EEPROM vor dem Löschen auszulesen, und dann zusammen mit dem HEX-File gleich wieder in den EEPROM zu schreiben. Das kommt ja auf das Gleiche heraus. Options - PIC programming options - keep old EEPROM data „ Die Antwort erklärt etwas. Gleich habe ich den Test durchgeführt. Um den alten EEPROM-Inhalt zu behalten: 1. Beide Optionen (sehe das Bildchen oben) auswählen 2. im C-Programm muss explizit mindestens eine Adresse vom EEPROM beschrieben werden. Ohne das im *.hex File die Beschreibung Sequenz für EEPROM da ist, funktioniert die Sache nicht. Das Sprut Programm (Beta Version) hat noch Probleme mit dem auslesen vom EEPROM. Ich habe festgestellt das keine Fehler passieren wenn das letzte Byte vom EEPROM mit einer Zahl <> 255 beschrieben wird. Ich habe mich entschieden dort die Version vom Projekt zu schreiben. Ein Teil von meinem C-Programm: #define PROG_VERSION 1 #define WITH_EEPROM_DATEN #ifdef WITH_EEPROM_DATEN #pragma romdata section_eeprom_data =0xf000ff unsigned char rom EE_PR_VERSION = PROG_VERSION #endif #pragma code void main(void) { ….. if(eeprom_read(255)!=PROG_VERSION) eeprom_write(255,PROG_VERSION); …. Mit Fehler muss man sich arrangieren...
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.