MECCANICA e DINTORNI
http://meccanicaedintorni.morpel.it/phpbb/

Utilizzo EEPROM dspic30f4011
http://meccanicaedintorni.morpel.it/phpbb/viewtopic.php?f=80&t=7268
Pagina 1 di 1

Autore:  Raban [ mar apr 24, 2012 09:57 ]
Oggetto del messaggio:  Utilizzo EEPROM dspic30f4011

Dopo averci perso un po' di tempo sono riuscito a capire come gestire la EEPROM nei microprocessori serie dspic30,
in particolare ho fatto le prove su un dspic30f4011.
Da quel che ho potuto capire di fatto la eeprom e' mappata nella flash per utilizzarla bisogna usare delle apposite
macro e funzioni previste nelle librerie del c30 :

dunque usando le macro del c30 il codice viene cosi' :
Codice:
unsigned int _EEDATA(32) table0[16]    =  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};



questa dichiarazione fatta prima del main serve creare un vettore composto da 16 elementi
ciascuno da 2 byte in eeprom

successivamente per accedere a tali dati bisogna usare una specie di puntatore che viene definito cosi' :
Codice:
_prog_addressT indirizzi_eeprom;



poi inizializziamo indirizzi_eeprom associandolo agli indirizzi di table0[]
Codice:
_init_prog_address(indirizzi_eeprom, table0);



a questo punto abbiamo che indirizzi_eeprom punta a table0[]

per andare a leggere la eeprom bisogna crearsi una variabile in ram di grandezza sufficente
a contenere table0[] .
supponiamo di aver predisposto la variabile unsigned int table_ram[16].

per copiare i valori di table0[] in table_ram[]

il codice da usare e' :
Codice:
   _memcpy_p2d16(table_ram, indirizzi_eeprom, 32);



per andarla a scrivere invece bisogna prima cancellarla , il codice e' il seguente :
Codice:
   _erase_eedata(indirizzi_eeprom ,32);
         _wait_eedata();



e poi la si puo' riscrivere :
Codice:
   _write_eedata_row(indirizzi_eeprom, table_ram);
         _wait_eedata();




E fin qui tutto ok .

la cosa che mi sarebbe piaciuto fare ma che non sono riuscito e' di inizializzare la eeprom
come array multi dimensionale tipo table[8][16]
per poi andare a leggere e caricare in ram la riga che mi serviva ... ho optato per dichiarare
una serie di vettori tipo table0[16], table1[16],table... gestendoli con una routine
case switch ...
fa un po' schifo ma funziona .

Autore:  ALMOR [ mar apr 24, 2012 14:31 ]
Oggetto del messaggio:  Re: Utilizzo EEPROM dspic30f4011

un ottimo inizio come approccio al mondo dei PIC!!! :risatina:

Pagina 1 di 1 Tutti gli orari sono UTC +1 ora
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/