Moin zusammen, ich versuche erfolglos ein 80 Byte großes Array gleich beim Brennen in einen PIC 16F876A zu speichern (MPLABX, xc8). eeprom unsigned char Messwert [] = {19,20,21,21,22,23,24,25,26,27,28,28,29,30,31,32...}; Bis 16 Byte funktionierts ohne Probleme, dann kommt von meinem Brenner 8p von Sprut die Rückmeldung: Start write EEPROM## x Errors (x Anzahl der Fehler) Der 16F876A hat 256 Byte EEPROM. Daran kanns nicht liegen. Wenn ich zwei Arrays á 16 Bytes mit unterschiedlichen Namen brennen lasse, gehts auch problemlos. Jemand ne Idee? Danke Andreas
Das EEPROM ist in Pages eingeteilt, die offensichtlich 16 Bytes groß sind. Du kannst immer nur 16 Bytes (8 Worte) in die Latches schreiben, dann muss ein Programmierbefehl kommen. Ich tippe auf einen Bug in der Software. Besorg Dir mal für 20€ vom Chinamann einen PICKit3-Clone und versuche es damit. Die ganzen "Brenner" sind ohnehin nicht mehr zeitgemäß. fchk
Andreas S. schrieb: > ich versuche erfolglos ein 80 Byte großes Array gleich beim Brennen in > einen PIC 16F876A zu speichern (MPLABX, xc8). Ich hab den PIC nicht hier sonst wuerde ich es testen: 1.um Werte im EEprom abzuspeichern/lesen gibt es fertige Library-Funktionen (siehe XC8-Userguide) ============== // eeprom_read(unsigned char); ============== // eeprom_write(unsigned char,unsigned char); ============== // __EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7); ============== 2. benutzt du den qualifier "const" vor einer Variablen/Array wird diese automatisch im Programmspeicher(ROM) abgelegt - anstatt im RAM versuche es damit und lass dir auch im EEprom- oder Programmspeicher window anzeigen wo ,was ,wie gespeichert ist
Moin, vielen Dank für eure Antworten. Das EEPROM ist nicht in Pages aufgeteilt und ich bin sehr zufrieden mit dem Brenner von Sprut. Das EEPROM-speichern während das Programm läuft ist nicht schwer, das kriege ich hin. Das mit dem 'const' ist ein hilfreicher Tipp. Werde ich mir merken. Das EEPROM-Fenster zeigt die richtigen Werte an der richtigen Stelle an. Mir geht es darum Programmspeicherplatz zu sparen und deshalb möchte ich gerne das EEPROM gleich beim Brennen beschreiben. Jemand noch ne Idee? Danke Andreas
Hallo Mit dem Macro __EEPROM_DATA(Data1, Data2, Data3, Data4, .... Data8) kann man immer acht Byte ins EEPROM schreiben. Wenn mehr Werte gewünscht, wird der Macro mehrfach verwendet. Den Macro natürlich nicht zur runtime verwenden, sondern am besten im main.h. Gruß Uwe
Toxic schrieb: > ============== > // __EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7); > ============== Uwe schrieb: > Mit dem Macro __EEPROM_DATA(Data1, Data2, Data3, Data4, .... Data8) ==================================================== XC8 C Compiler User’s Guide:nachlesen auf Seite 340 ====================================================
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.