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 ---
- 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 ---
Modérateur : Jérémy
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Je ne le fais pas tourner en mode pas à pas, j'ai fait une boucle sans fin ou le programme lit mon adresse. L'écriture se fait en initialisation. Je te poste mon programme ainsi ce que j'obtiens. Je viens de retester en simul, c'est ok, par contre en mode in situ, ça ne marche pas..
Et voilà ce que j'obtiens, pas logique !!Ça n'a pas écrit, sais tu pourquoi?
Code : Tout sélectionner
const unsigned char mesPagesRom [] @ 0XF00000 ={0x1, 0x0, 0x01, 0x0}; //
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
unsigned char adresse_basse = 6;
unsigned char adresse_haute = 9;
void ecriture_adr_eeprom (void)
{
EEADR = 0x00; // Ecriture adresse basse
EEDATA = adresse_basse;
EECON1bits.EEPGD = 0; // Access data EEPROM memory.
EECON1bits.CFGS = 0; // Acces program flash or data EEPROM memory.
EECON1bits.WREN = 1; // Allows erase/ write cycles.
INTCONbits.GIE = 0; // Disable interrupts.
EECON2 = 0x55;
//Nop();
EECON2 = 0xAA;
EECON1bits.WR = 1; // Initiates a data EEPROM erase/write cycle
while (EECON1bits.WR != 0)
{
}
EECON1bits.WREN = 0; // Inhibis erase/ write cycles.
EEADR = 0x01; // Ecriture adresse haute
EEDATA = adresse_haute;
EECON1bits.EEPGD = 0; // Access data EEPROM memory.
EECON1bits.CFGS = 0; // Acces program flash or data EEPROM memory.
EECON1bits.WREN = 1; // Allows erase/ write cycles.
//INTCONbits.GIE = 0; // Disable interrupts.
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1; // Initiates a data EEPROM erase/write cycle
while (EECON1bits.WR != 0)
{
}
EECON1bits.WREN = 0; // Inhibis erase/ write cycles.
INTCONbits.GIE = 1; // Enable interrupts.
}
int main(int argc, char** argv)
{
ecriture_adr_eeprom();
while(1)
{
EEADR = 0;
EECON1bits.EEPGD = 0; // Access data EEPROM memory.
EECON1bits.CFGS = 0; // Access program Flash or data EEPROM memory.
EECON1bits.RD = 1; // Initiates a memory read (EEPROM read)
adresse_basse = EEDATA;
EEADR = 1;
EECON1bits.EEPGD = 0; // Access data EEPROM memory.
EECON1bits.CFGS = 0; // Access program Flash or data EEPROM memory.
EECON1bits.RD = 1; // Initiates a memory read (EEPROM read)
adresse_haute = EEDATA;
}
}
Et voilà ce que j'obtiens, pas logique !!Ça n'a pas écrit, sais tu pourquoi?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Flasher data dans EEPROM PIC en C
Bon a priori c'est du coté hard puisque vous avez bien flasher votre EEPROM donc.
Déjà 1/ vous avez bien alimenté votre carte avec sa propre alimentation car sinon le port USB ne fait pas l'affaire?
Je suppose que oui, je ne sais pas ce qu'il y a sur votre carte ? un basculement d' une led sur un port pour voir si c'est oK.
A+
Déjà 1/ vous avez bien alimenté votre carte avec sa propre alimentation car sinon le port USB ne fait pas l'affaire?
Je suppose que oui, je ne sais pas ce qu'il y a sur votre carte ? un basculement d' une led sur un port pour voir si c'est oK.
A+
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Flasher data dans EEPROM PIC en C
alors je vous propose ceci:
fait un programme qui bascule la sortie d'un port en fonction du contenue de l'adresse 0 de EEPROM ,que vous changez après chaque lecture ,vous la flashez et vous faite un essai si c'est ok ->problème en mode in situ,Pas ok faite un essai avec ma routine qui sait .
Après je ne sais plus
A+
fait un programme qui bascule la sortie d'un port en fonction du contenue de l'adresse 0 de EEPROM ,que vous changez après chaque lecture ,vous la flashez et vous faite un essai si c'est ok ->problème en mode in situ,Pas ok faite un essai avec ma routine qui sait .
Après je ne sais plus
A+
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Flasher data dans EEPROM PIC en C
toutes tes protections fuse sont sur off notamment:flolarajasse a écrit :J'ai fais un programme qui incrémentait ma valeur dans mon EEPROM toutes les secondes et qui l'envoyait ensuite sur le PWM ; mon programme arrivait seulement à lire la valeur dans l'EEPROM, mais par contre n'arrivait pas à écrire à l'intérieur de l'EEPROM...
Code : Tout sélectionner
// CONFIG5H
#pragma config CPB = OFF // Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)
#pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code-protected)
apres je ne vois plus rien, sinon le µC tu as penser a voir de ce coté la
Flasher data dans EEPROM PIC en C
Flasher data dans EEPROM PIC en C
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
reference du PIC ?
PIC avec 1K eeprom => adresse sur 16 bits
adresse de debut est bien en 0xF00000.
sur 18F46K22
reference du PIC ?
PIC avec 1K eeprom => adresse sur 16 bits
adresse de debut est bien en 0xF00000.
sur 18F46K22
Code : Tout sélectionner
init EEPROM PIC en C18
#pragma romdata EEP_=0xF00000
rom unsigned int EEPROM_data1 =0x0000; // zone stockage index
//--------------
#pragma romdata EEP300_=0xF003E0
rom unsigned char EEPROM_3E0 [] ={
"paulfjujo@free.fr \r",//A0 sans terminateur zero
};
#pragma romdata
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités