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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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