Neway Inserito: 29 agosto 2011 Segnala Share Inserito: 29 agosto 2011 Ho a mia disposizione una bella struttura dati fatta in questa manieratypedef struct{ //Dichiaro la struttura standard dello stato del sistema float x; float v; float a; float v_ang; float a_ang; float rotazione_rad; }StrStato; StrStato stato; //Dichiaro "stato" come variabile di tipo StrStato Voglio salvare queste sei variabili in una memoria FRAM esterna così come sono. Il compilatore C18 mette le strutture all'interno della memoria RAM in celle consecutive, come fosse un array. La cosa più logica sarebbe, invece di spezzare i byte con operazioni bitwise, di copiarli così come sono byte per byte. Per questo ho pensato che si può dichiarare un puntatore di tipo char che punti alla variabile x e di salvare tutta la struttura byte per byte (in tutto 24 byte) facendo avanzare il puntatore di un byte alla volta, così: char *pnt_alla_struttura; pnt_alla_struttura = &stato.x; for(i = 0; i < 24; i++){ EEPROM_write(i, *pnt_alla_struttura); } Provando a far ciò il compilatore mi dice molto simpaticamente: Error [1131] type mismatch in assignmentriferendosi alla riga in cui assegno al puntatore l'indirizzo di stato.xC'è un modo di risolvere la questione o il C è sordo per operazioni del genere?Grazie mille! Link al commento Condividi su altri siti More sharing options...
RealTime Inserita: 29 agosto 2011 Segnala Share Inserita: 29 agosto 2011 Devi effettuare un CASTING per riportare il tipo di puntatore a quello richiestochar *pnt_alla_struttura;pnt_alla_struttura = (char*) &stato.x;pnt_alla_struttura si aspetta un tipo char* e quindi devi forzarlo al tipo desideratoRT Link al commento Condividi su altri siti More sharing options...
Neway Inserita: 29 agosto 2011 Autore Segnala Share Inserita: 29 agosto 2011 Grazie mille! ora va. Ci avevo provato, ma sconoscevo che per fare il casting di un puntatore servisse l'asterisco così (char*).mai trovato un forum più efficiente! Link al commento Condividi su altri siti More sharing options...
RealTime Inserita: 29 agosto 2011 Segnala Share Inserita: 29 agosto 2011 Wellcome ...RT Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora