Autant qu'avec MikroC Pro 7.60 il est aisé de precharger le contenu Eeeprom d'un PIC
via un dialogue prevu pour...
et qu'ensuite on peut sauvegarder le contenu Eeprom dans un fichier annexe ayant comme extension *.ihex
Au moment de la compilation , on peut Activer ou Pas le chargement dudit fichier ...
Avec MPLAB XC8
on dispose de Macro pour l'init de data Eeprom
mais je ne vois pas comment on peut definir l'adresse de stockage ?exemple:
__EEPROM_DATA (0,0,'2','3','0','5','1','0'); // concerne les adresse 0 à 7
// 0x0010
__EEPROM_DATA (0,0,0,0,0,0,0,0);
__EEPROM_DATA (0,0,0,0,0,0,0,0);
// 0x0020
__EEPROM_DATA (0,0,0,0,0,0,0,0);
__EEPROM_DATA (0,0,0,0,0,0,0,0);
// 0x0030
..mais si je veux stoker directement des datas , par exemple en 0x3D0 // 976(10)
//ORG 0x03D0 <-- comment definir l'adresse de debut ?
__EEPROM_DATA (0x28,0xFF,0x47,0x15,0x81,0x16,0x03,0x24); // #1 Data: FamilyCode 28 ID2= FF4715811603 CRC= 24
__EEPROM_DATA (0x28,0xAA,0x42,0x65,0x26,0x13,0x02,0xB6); // #2 Data: FamilyCode 28 ID1= FF83C7641503 CRC= B8
__EEPROM_DATA (0x28,0xAA,0x56,0xC1,0x38,0x14,0x01,0x40); // #3 Data: FamilyCode 28 ID2= FF4715811603 CRC= 24
En attendant de trouver mieux
J'utilisa ma table de travail comportant 10 programmes horaires ( 1prog=32 bytes)
et l'initialise dans le code ( de declaration des tables)
à noter qu'il faut IMPERATIVEMENT cocher dans les options Linker -> RunTime -> "Initialize Datas"
sinon les tables sont vides apres le lancement du programme.
unsigned char Tables_Progr_D[10][32]={
//#1
{0x01,0x2,0x02,0x03,0x01,0x02,0x02,0x01,
0x03,0x03,0x03,0x00,0x01,0x02,0x0,0x01,
0x02,0x03,0x02,0x01,0x00,0x01,0x02,0x03,
'C', 0x00,0x00,0x00,0x00,0x00,0x00,0x00},
... etc ....
...etc ...
//#10
{0x01,0x2,0x02,0x03,0x01,0x02,0x02,0x01,
0x03,0x03,0x03,0x03,0x03,0x03,0x02,0x01,
0x03,0x03,0x01,0x00,0x01,0x02,0x03,0x00,
'V' ,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
et ensuite je stocke le tout en eeprom via une boucle ecriture de 320 datas
dans ma zone de datas qui est bien definie .
SI c'est la 1ere fois que je lance le programme
via un flag dans l'adresse Eeprom 0x0000
à 0xFF lors du chargement *.HEX dansle PIC
je sauve alors une valeur (arbitrairement définié ) de 99 à l'adresse 0x0000 Eeprom
Attention ,il faut ensuite preserver la zone eeprom d'un nouveau chargement de prpgrame en cochant Preserver Eeprom memorie
Des lors aux lancement de programme suivant ( sur Reset ou Alim.OFF/ON.)
je test le contenu du Flag (adresse 0x0000 eeprom) ,si 99,
je passe outre la sauvegarde et au contraire je rechage le contenu Eeprom (0x0100..)
pour le mettre dans ma table de travail en RAM.
J'ai bien vu qu'on peut afficher le contenu de l'eeprom avec MPLABX
mais on ne peux pas modifie le contenu
il faut etre en Debug ???
De meme on peut sauvegarder le contenu eeprom dans un fichier Memory.hex ..OKmais comment le re-integré à la compilation ,hormis l'astuce de Preserver Eeprom ?
Code : Tout sélectionner
Lecture table programmes horaire en eeprom
Relecture datas eeprom :
Flag @ 0x0000 =99
Programme version : 230511
0x0100
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, Progr= C
0x0120
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, Progr= E
0x0140
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= D
0x0160
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= M
0x0180
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x03, 0x03,
0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= R
0x01A0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= A
0x01C0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= J
0x01E0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, Progr= P
0x0200
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x03, 0x03, 0x03, 0x01, 0x00, Progr= T
0x0220
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, Progr= V

