Vai al contenuto
PLC Forum


Salvare Una Struct Su Eeprom


Messaggi consigliati

Inserito:

ammettiamo di avere una struttura dati composta da vari tipi di dati , tra cui float, int ect

Ipotizziamo di lavorare con un micro ed utilizzare un compialtore in C .

visto e considerato che una eeprom si scrive " un byte alla volta " da un array di bytes , cosi come si spedisce un "byte alla volta " in una comunciazione per esempio seriale , come e' possibile

creare una funzione che prenda (estrapolando ) tutti y bytes che compongono i dati dalla struttura .

Bisognerebbe prendere un dato alal volta e creare un byte prendendo il primo byte del dato float , poi shiftare di 8 bit e creare un altro byte e via dicendo , uno per uno .

Scrivere invece un ciclo for come potrebbe essere fatto tutto il discorso ?

ciao

walter


Inserita:

Ciao Walter , come hai detto tu in eeprom si scrive un byte alla volta , quindi o hai il compilatore che fa cio' per te oppure credo che ti convenga fare due funzioni : una per la scrittura ed una per la lettura.

Ciao :)

Inserita:

Il programma seguente, compilato con il C18 della Microchip e simulato con MPLAB, prende un byte alla volta dalla struttura dati e li passa a una funzione che lo scrive sulla eeprom.

typedef struct 
{
  char c;
  int i;
} DATI; //struttura di 3 byte

unsigned char size, n;
void *p;                   //puntatore generico
unsigned char byte;
DATI dati = {0x11, 0x2233}; //inizializza struttura con dei valori

void write(unsigned char b)
{
    //Scrive il byte b sulla eeprom    
}

void main (void)
{
  p = &dati;     //p punta all'inizio della struttura
  size = sizeof(dati);     //ricava la dimensione in byte della struttura
  for(n=0; n<size; ++n)
  {
     byte = *(unsigned char*)p; //acquisisce un byte della struttura
     write(byte); 
     p = p + 1;                  //incrementa puntatore
  }
  while(1);
}

Dovrebbe funzionare anche con i float.

E' quello che cercavi?

Ciao.

Inserita:

si

volevo giustappunto capire come poter sviluppare una cosa del genere

ed hai centrato in pieno il concetto

grazie

walter

p.s. per Ifach : se leggi bene il post , dico che stoi usando un compilatore in C ;)

Inserita:
per Ifach : se leggi bene il post , dico che stoi usando un compilatore in C

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...