mettre en mémoire flash pic32MX795
Bon je patauge dans la semoule comme on dit, je n'arrive pas à enregistrer des datas dans la flash, j'ai repris la méthode du document
http://ww1.microchip.com/downloads/e...Doc/61121F.pdf
dans un exemple avec les fonctions
unsigned int NVMUnlock (unsigned int nvmop)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| unsigned int NVMUnlock (unsigned int nvmop)
{
unsigned int status;
unsigned int intStatus;
// Suspend or Disable all Interrupts
intStatus = INTDisableInterrupts();
// Enable Flash Write/Erase Operations and Select
// Flash operation to perform
NVMCON = nvmop;
// Write Keys
NVMKEY = 0xAA996655;
NVMKEY = 0x556699AA;
// Start the operation using the Set Register
NVMCONSET = 0x8000;
// Wait for operation to complete
while (NVMCON & 0x8000);
// Restore Interrupts
INTRestoreInterrupts(intStatus);
// Disable NVM write enable
NVMCONCLR = 0x0004000;
// Return WRERR and LVDERR Error Status Bits
return (NVMCON & 0x3000);
} |
unsigned int NVMWriteWord (void* address, unsigned int data)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| unsigned int NVMWriteWord (void* address, unsigned int data)
{
unsigned int res;
// Load data into NVMDATA register
NVMDATA = data;
// Load address to program into NVMADDR register
NVMADDR = (unsigned int) address;
// Unlock and Write Word
res = NVMUnlock (0x4001);
// Return Result
return res;
} |
Seulement ils ne donne rien au sujet de la lecture des données, j'ai donc repris celle en écriture en la modifiant évidement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void NVMReadWord (void* address, unsigned int data)
{
unsigned int res;
// Load address to program into NVMADDR register
NVMADDR = (unsigned int) address;
data=NVMDATA;
// Unlock and Write Word
res = NVMUnlock (0x0000);
// Return Result
return res;
} |
Dans mon main, je fais
Code:
1 2 3 4 5
| int DEEdata=4566,DEEdata1;
NVMWriteWord (&DEEdata,0);
NVMReadWord (&DEEdata1,0); |
Je sais pas si c'est correct, notamment pour la lecture, seul fonction que j'ai fait