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
Bonjour,
dans le même esprit que ce que j'avais expliqué ici: viewtopic.php?f=10&t=86
voici ma version EEPROM pour lire et écrire, tout en vérifiant l'intégrité des données écrites.
Et le fichier header correspondant: _EEPROM.h à insérer dans votre fichier de travail.
dans le même esprit que ce que j'avais expliqué ici: viewtopic.php?f=10&t=86
voici ma version EEPROM pour lire et écrire, tout en vérifiant l'intégrité des données écrites.
Code : Tout sélectionner
/**********************************************************************/
/* */
/* File name: _EEprom.c */
/* Hulk28 */
/* */
/* Internal EEPROM driver: */
/* - read / write access */
/**********************************************************************/
#include "_EEPROM.h"
/**********************************************************************
* Read the internal EEPROM content from a specific address.
* addr: Start address of the EEPROM
* length: Number of byte to read
* dest: Where you want the data to be copied
**********************************************************************/
unsigned char ReadEEPROM(unsigned int addr, unsigned char length, unsigned char *dest)
{
unsigned char *ptr;
unsigned char loop;
ptr = dest;
EEADR = (unsigned char)(addr & 0x00FF);
loop = length - 1;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
do
{
EECON1bits.RD = 1;
*ptr = EEDATA;
ptr++;
EEADR++;
}while (loop--);
return 0;
}
/**********************************************************************
* Write the internal EEPROM content from a specific address.
* addr: Start address of the EEPROM
* length: Number of byte to write
* dest: From where you want the data to be copied
**********************************************************************/
unsigned char WriteEEPROM(unsigned int addr, unsigned char length, unsigned char *source)
{
unsigned char *ptr;
unsigned char loop;
ptr = source;
EEADR = (unsigned char)(addr & 0x00FF);
loop = length - 1;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
do
{
//INTCONbits.GIEL = 0;
EEDATA = *ptr;
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1;
//INTCONbits.GIEL = 1;
while(EECON1bits.WR == 1);
ptr++;
EEADR++;
}while (loop--);
EECON1bits.WREN = 0;
return 0;
}
unsigned char WriteEEPROMconst(unsigned int addr, unsigned char length, const rom unsigned char *source)
{
unsigned char ptr;
unsigned char loop;
EEADR = (unsigned char)(addr & 0x00FF);
loop = length - 1;
EECON1bits.EEPGD = 0;
EECON1bits.CFGS = 0;
EECON1bits.WREN = 1;
do
{
ptr = *source++;
EEDATA = ptr;
EECON2 = 0x55;
EECON2 = 0xAA;
EECON1bits.WR = 1;
while(EECON1bits.WR == 1);
ptr++;
EEADR++;
}while (loop--);
EECON1bits.WREN = 0;
return 0;
}
/**********************************************************************
* Write and check the internal EEPROM content from a specific address.
**********************************************************************/
unsigned char WriteCheckEEPROM(unsigned int ad, unsigned char len, unsigned char *src)
{
unsigned char temp[16];
unsigned char i;
do
{
WriteEEPROM(ad, len, src);
if (len <= 16)
{
ReadEEPROM(ad, len, temp);
for (i = 0; i < len; i++)
{
if (temp[i] != src[i])
break;
}
}
} while (i != len);
}
/* End of File : _EEPROM.c */
Et le fichier header correspondant: _EEPROM.h à insérer dans votre fichier de travail.
Code : Tout sélectionner
/**********************************************************************/
#ifndef __EEPROM_H_
#define __EEPROM_H_
unsigned char ReadEEPROM(unsigned int addr, unsigned char length, unsigned char *dest);
unsigned char WriteEEPROM(unsigned int addr, unsigned char length, unsigned char *source);
unsigned char WriteEEPROMconst(unsigned int addr, unsigned char length, const rom unsigned char *source);
unsigned char WriteCheckEEPROM(unsigned int addr, unsigned char length, unsigned char *source);
#endif /* __EEPROM_H_ */
/* End of file : _EEPROM.h */
Flasher data dans EEPROM PIC en C
-
flolarajasse
Membre- Messages : 22
- Enregistré en : septembre 2015
Flasher data dans EEPROM PIC en C
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,
Pour une init EEPROM du PIC !
Avec mikroC on ne peut malheureusement pas faire comme sous C18 MPLAB
on est obligé de passer par la config EEPROM , avec un editeur un peu chiant !
et de sauvegarder le fichier créé au format *.ihex
à moins que j'ai oublié un episode ?
j'avais demandé à l'equipe MikroE , si ils pouvaient orienter le developpement de MikroC
pour proposer une init dans le code.. sans suite !
pour la config bits dans le code
un costaud de la programmation propose ceci
sinon, on peut toujours utiliser la Flash ROM
à la place de l'EEPROM
si on ne fait que lire
Pour une init EEPROM du PIC !
Avec mikroC on ne peut malheureusement pas faire comme sous C18 MPLAB
Code : Tout sélectionner
#pragma romdata EEP_=0xF00000
unsigned char EEPROM_data [][32]={
// 1234567890123456789012345678901
"Projet:18F46K22 UART1 UART2 \r",//0 avec terminateur zero
"Version 01/05/2014 \r",//20 avec terminateur zero
"Port Com ouvert & Init HARDW. \r",//40 avec terminateur zero
"Boucle en 1 Sec <ESC> exit \r",//60 avec terminateur zero
"Avec UART1 HARDWARE.......... \r",//80 avec terminateur zero
"paulfjujo@free.fr \r\n",//A0 sans terminateur zero
"MikroC V6.00 \r\n",
" \r\n",0
};
#pragma
on est obligé de passer par la config EEPROM , avec un editeur un peu chiant !
et de sauvegarder le fichier créé au format *.ihex
à moins que j'ai oublié un episode ?
j'avais demandé à l'equipe MikroE , si ils pouvaient orienter le developpement de MikroC
pour proposer une init dans le code.. sans suite !
pour la config bits dans le code
un costaud de la programmation propose ceci
sinon, on peut toujours utiliser la Flash ROM
à la place de l'EEPROM
si on ne fait que lire
Code : Tout sélectionner
const char chaine0[]="FOSC Q=20MHz + 2x22pF\r";
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 40 invités