Salut,
Qu'est ce que tu ne comprends pas ?
Il n'y a pas d'exemple, ni de bibliothèque pour faire ça dans MPLAB ?
Au pire à la page 115 de la doc tout est écrit.
http://ww1.microchip.com/downloads/e...Doc/41291F.pdf
Tu as en plus un exemple en assembleur.
Si je traduis : pour une lecture de la mémoire flash.
- Mettre l'adresse de poids fort de l'endroit que tu veux lire, dans le registre EEADRH
- Mettre l'adresse de poids faible de l'endroit que tu veux lire, dans le registre EEADR
- Mettre à 1 le bit EEPGD qui se trouve, dans le registre EECON1
- Mettre à 1 le bit RD qui se trouve, dans le registre EECON1
- Attendre durant 2 NOP (NOt Opération) !!! IMPORTANT !!!
- Lire le registre EEDAT, qui contient la donnée de poids faible.
- Lire le registre EEDATH, qui contient la donnée de poids fort.
En C ça pourrait donner un truc du genre (je n'ai pas essayé, je n'ai ni de PIC sous la main et ni MPLAB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| unsigned int flash_read (unsigned char high_adr, unsigned char low_adr)
{
unsigned int valeur_lue = 0;
EEADRH = high_adr;
EEADR = low_adr;
EECON1 |= 0x81; // EEPGD à 1 + RD à 1
// attendre 2 NOP
// depend de ton compilateur
valeur_lue = EEDATH;
valeur_lue <<= 8;
valeur_lue += EEDAT:
return valeur_lue;
} |
Partager