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)
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
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); }
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 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; }
Dans mon main, je fais
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; }
Je sais pas si c'est correct, notamment pour la lecture, seul fonction que j'ai fait
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);
Partager