MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è gio mar 28, 2024 23:00

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 2 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Utilizzo EEPROM dspic30f4011
MessaggioInviato: mar apr 24, 2012 09:57 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: sab ott 25, 2008 14:27
Messaggi: 3553
Località: Serenissima Repubblica Veneta
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 .

_________________
- internet + cabernet
- V8 Power
l'esperienza non si compra ma si paga


Top
 Profilo  
 
 Oggetto del messaggio: Re: Utilizzo EEPROM dspic30f4011
MessaggioInviato: mar apr 24, 2012 14:31 
Non connesso
AMMINISTRATORE
Avatar utente

Iscritto il: lun set 08, 2008 10:37
Messaggi: 4486
Località: LONDON
un ottimo inizio come approccio al mondo dei PIC!!! :risatina:


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 2 messaggi ] 

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it