Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

pre_chargement Eeprom PIC 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » ven. 12 mai 2023 14:52

Bonjour à tous,


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
Preserve_Eeeprom.jpg


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 ..OK
mais 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
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

pre_chargement Eeprom PIC 18F27K42
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#2 Message par satinas » ven. 12 mai 2023 17:50

Bonjour,
Pour modifier l'eeprom il y a PicKit Minus.
Un exemple de données en eeprom avec xc8, mais il n'accepte que des adresses paires.

Code : Tout sélectionner

const unsigned char val   @ 0x310000 = 0x11;
const unsigned char tab[] @ 0x310012 = {
  0x01, 0x02, 0x03, 0x04
};

pre_chargement Eeprom PIC 18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » ven. 12 mai 2023 21:24

Bonsoir paulfjujo, satinas, et tou le forum,

satinas a écrit :Source du message Pour modifier l'eeprom il y a PicKit Minus.

Tu peux même le faire avec Pickit3, ça fonctionne j'ai déjà fait.

Sinon je ne sais pas si ça peut aider, mais en ASM pour écrire en eeprom dans un Pic18F27K42 au moment de la programmation de celui-ci

Dans cette exemple on commence à écrire en début eeprom (emplacement 0) après rien n'empêche de changer l'adresse eeprom

ORG H'310000'

DE ==> 'T' , 'e' , 'm' , 'p' , 's' , '-' , 'X'


Dans cette exemple on commence à écrire dans l'eeprom à l'emplacement 5

ORG H'310005'

DE ==> 'T' , 'e' , 'm' , 'p' , 's' , '-' , 'X'


==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

pre_chargement Eeprom PIC 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » sam. 13 mai 2023 14:18

bonjour Temps-X


avec pickitminus + Pickit3 , je peux effectivement lire l'eeprom PIC et sauvegarde rle contenu
mais ecrire en hexa le contenu ..c'est trop lourd
pour l'instant j'initialise ma table de travail directement en RAM et je la sauvegarde en eeprom
au 1er lancement du programme (si détection eeprom vierge)
c'est assez souple comme solution

mais je vais voir si XC8
accepte de prendre ORG 310000

1er test
__asm ("ORG 0x310010");
__EEPROM_DATA (0,'2','3','0','5','1','1',0);
__asm ("ORG 0x310020");
__EEPROM_DATA (0,'2','3','0','5','1','3',0);
:0:: error: (1346) can't find 0x310028 words for psect "eeprom_data" in class "EEDATA" (largest unused contiguous range 0x400)

pas de transposition directe asm -> C
une histoire de psect .. surement à definir quelque part !
:sifflotte: je verrai plus tard ...
Aide toi, le ciel ou FantasPic t'aidera

pre_chargement Eeprom PIC 18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » sam. 13 mai 2023 21:09

Bonsoir paulfjujo, et tout le forum,

:sifflotte: Petite réification, je viens de faire un essai en ASM, j'ai placé l'adresse à ORG H'310005' :roll: ça ne fonctionne pas, le compilateur refuse de compiler le programme, par contre ça fonctionne bien quand je place l'adresse à ORG H'310000'

Après j'ai refait un essai en mettant une adresse paire, j'ai mi ORG H'310008', et là ça a fonctionné :-D

A savoir que le programmateur écrit dans l'eeprom par paire, surement du à l'architecture du Pic, si il y a 5 données, le programmateur rajoutera un 0, pour arrivé à 6, ce qui est bien un nombre paire.

Exemple

==> ORG H'310008'

==> ==> DE 0x54,0x65,0x6D,0x70,0x73,0x2D,0x58,0xFF



==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

pre_chargement Eeprom PIC 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » dim. 21 mai 2023 18:57

bonjour,


j'essaie de récuperer le contenu PIC eeprom d'une application avec 18F26K22
pour le transposer dans un 18F27K42
la grosse difference est l'adresse de depart 0x310000 au lieu de 0x00000

avec MPLABX IDE , on devrait avoir la possibiliter d'importer une table Eeprom ....
quand j'exporte le contenu de l'eeprom j'ai ceci

Code : Tout sélectionner

:020000040031C9
:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
:1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
:1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
:1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1003E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D
:1003F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D
:00000001FF


mon contenu coté mikroC est
  :!!:  (adresse de depart remplacée manuellement, car bug MikroC part  :0200000400F00A !  )

Code : Tout sélectionner

:020000040031C9                               
:1000000020486F726C6F6765203132204D617472C9
:1000100069636573204820387838202031384632AB
:10002000364B32322020464F53432036344D487AE7
:100030002C2052544320445333323331202C20554A
:1000400041525431203131353230302C382C4E2C45
:10005000310D0A00202020202020202020202020D8
:100060002020202020202020202020202020202090
:100070002020202020202020202020202020202080
:100080002020202020202020202020202020202070
:10009000504C4D3D32333A30360D0A00202020209E
:1000A00053706565643D31300D0A0020202020200A
:1000B0005265703D30300D0A002020202020202085
:1000C0004C756D3D30310D0A00202020202020206D
:1000D000434F52313D2B3030310D0A00202020207B
:1000E000434F52323D2D3030310D0A002020202068
:1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
:10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
:10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
:10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
:10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
:10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
:10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
:10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
:10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
:10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
:1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
:1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
:1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
:1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
:1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
:1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
:10020000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
:10021000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE
:10022000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE
:10023000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE
:10024000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE
:10025000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE
:10026000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E
:10027000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
:10028000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E
:10029000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E
:1002A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E
:1002B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E
:1002C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E
:1002D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E
:1002E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E
:1002F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E
:10030000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
:10031000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
:10032000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD
:10033000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
:10034000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD
:10035000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD
:10036000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10037000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10038000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10039000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D
:1003B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D
:1003C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:1003D0007265762030392F30352F32303230202080
:1003E0007061756C666A756A6F2032303230202019
:1003F00020200D0A00FFFFFFFFFFFFFFFFFFFFFFB1
:00000001FF





coté MPLABX
Windows
.... EEdata memory
....... click droit
...... import table
........... Eeprom2023.txt
commande acceptée ,mais rine ne se passe
:mur: le contenu eeprom du PIC reste vierge ???

Eeprom_Pic18F27K42_import_table_from_MikroC_ihex.jpg


le format du fichier lu est pourtant du meme accabit que le format
sauvegardé par MPLABX ..
et je ne pense pas que le changement d'adresse de depart soit le probleme..
car avec MikroC .. il FAUT FAIRE CE CHANGEMENT pour le 18F27K42 ..( bug du compilateur Mikroc)

Question: Faut-il présenter autrement le fichier eeprom à charger ?

L'un de vous l'a-t-il experimenté ?
mes 2 fichiers dans le zip :
MikroC original
MPLABX export
Eeprom_files.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

pre_chargement Eeprom PIC 18F27K42
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#7 Message par satinas » dim. 21 mai 2023 19:44

Bonsoir Paul,
Tu ne dis pas comment tu exportes avec MPLABX l'eeprom vers un fichier HEX.
En utilisant export table, cela te donne le format d'échange qui n'est pas le format HEX. Après modif de ce fichier exporté, on peut le recharger avec import table.
Si tu charges un contenu d'eeprom, il sera écrasé quand tu vas lancer le build, il y a peut être une commande MPLABX pour programmer le pic sans recompiler, à voir. C'est tout vu :) c'est dans le paramètrage du PicKit.

pre_chargement Eeprom PIC 18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#8 Message par Temps-x » dim. 21 mai 2023 22:23

Bonjour paulfjujo, satinas, et tout le forum,

C'est bien ORG H'F00000' pour un Pic18F26K22

J'ai fait ton fichier pour Pic18F27k42 avec le logiciel Pickit3, regarde si c'est bon, téléchargement ICI

Quand tu regardes ton fichier Horloge_2020_Defil_12_Matrice8x8_H_18F26K22_2022-05_MC.hex et celui que j'ai créé avec le logiciel Pickit3
la seule chose qui change c'est l'adresse

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

pre_chargement Eeprom PIC 18F27K42
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#9 Message par paulfjujo » lun. 22 mai 2023 12:38

bonjour à tous,

satinas a écrit :Tu ne dis pas comment tu exportes avec MPLABX l'eeprom vers un fichier HEX.
En utilisant export table, cela te donne le format d'échange qui n'est pas le format HEX. Après modif de ce fichier exporté, on peut le recharger avec import table.


je viens de voir la GROSSE DIFFERENCE suivant le mode d'exportation utilisé


MPLABX IDE
...Windows
... Target memory views
....... EE data Memory
en haut ,à gauche de la Fenetre EE data Memoy : fleche verte vers le haut = Read device memory
* capture ecran
* exporte Table adresse : start 0x310000 end 0x3103FF
filepath: C:\MPLABX_Projects\_18F27K42_Horloge_12xMax7219_2023.X\EE_data_Eeprom_memory.txt

effectivement format TABLE ! tres different !
pas de colonne adresse
TAB de separation entre les datas, ligne terminée par CR LF
2 blocs de 512 datas!

------------------------------------------------------------------------------------
MPLABX IDE barre d'icone
icone fleche verte vers le Haut
Read EE/flash Data Memory to File --> memory_2023-0522.hex
*voir Read_device_EE_Data_Memory_to_File_in_intel_hex_format.jpg
format HEX classique intel
avec adresse de depart
puis entete et adresse sur chaque ligne , suivi de 16 datas contigues + CRC16 + CRLF en fin de ligne

:mur: par contre avec la l'icone Fleche verte vers le bas
on a pas le choix possible d'Importer un fichier Hex dans l'eeprom !


capture d'ecran montrant bien les differences :

2_modes_Lecture_Eeprom_PIC.jpg



satinas a écrit :Si tu charges un contenu d'eeprom, il sera écrasé quand tu vas lancer le build, il y a peut être une commande MPLABX pour programmer le pic sans recompiler, à voir. C'est tout vu :) c'est dans le paramètrage du PicKit.


oui Eeeprom seule et aussi
il faut activer Preserver le contenu Eeeprom ... pour ne pas l'ecrabouiller ensuite lors d'un chargement du code

à Temps-X:

c'est exctement celui que j'obtiens avec MPLABX ,
par contre il y a une mauvaise adresse de depart (en doublon) dans ton fichier *.hex

je me vois mal ,initialiser manuellement l'eeprom avec un format TABLE .. en hexadecimal

il ne me reste donc plus ,comme solution, d'utiliser l'éditeur d'EEPROM de MikroC, (permet l' usage de Hexa ou ascii !)
modifier l'adresse de depart manuellement, (à cause du Bug MikroC ! qui n'a jamais été corrigé ..
car abandon de MikroC au profit de NECTO Studio...
et de charger l'Eeeprom du PIC séparément avec MPLABX IPE ou Pickitminus ....
et ensuite utiliser MPLABX IDE pour charger le code avec PRESERVATION EEPROM cochée..
:!!: c'est un peu (beaucoup!) lourding !

ou initaliser l'eeprom avec du code .. au premier lancement de programme seulement
.. avec PRESERVATION EEPROM NON COCHéé
pour avoir 0xFF = vierge au 1er tour .. puis cocher ensuite PRESERVATION EEPROM, pour de future MAJ du code
c'est aussi lourding ..mais plus facile .
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

pre_chargement Eeprom PIC 18F27K42
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2618
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » mar. 23 mai 2023 00:58

Bonsoir paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message par contre il y a une mauvaise adresse de depart (en doublon) dans ton fichier *.hex


Ce n'est pas moi qui l'ai créé, c'est le logiciel Pickit3

La première adresse, :roll: je pense que c'est le programme que tu écris, puis la deuxième adresse c'est l'eeprom, comme j'ai demandé au logiciel Pickit3 de sauver juste l'eeprom, on se retrouve avec 2 adresses :-)

paulfjujo a écrit :Source du message :!!: c'est un peu (beaucoup!) lourding !

:sifflotte: c'est du C, C normal.

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 48 invités