Newsgroup: it.hobby.elettronica.digitale
Titolo: memorizzare float su eprom

Salve ragazzi, premesso che gestisco la eprom con il protocollo IC2 e che 
con gli interi tutto funziona perfettamente. Come posso memorizzare sulla 
eprom un float? Mi spiego meglio. Nella eprom con la procedura di scrittura 
posso scrivere un byte alla volta all'indirizzo che voglio, quindi per 
quanto riguarda i risultati della conversione (0..1023) nessun problema, 
memorizzo i due registri low e high in due byte e poi ricreo il risultato, 
il tutto funge benissimo. (se avete qualche idea migliore ben venga).
Ho perň bisogno assolutamente di memorizzare una matrice di reali 5x3 e un 
array da 6 con elementi che possono essere anche negativi, la domanda č, 
come faccio? Avete idea di come fare per scrivere i 4 byte del reale nella 
eprom? e il segno?
Esiste per caso anche un modo per scorrere la eprom e sapere fin dove č 
scritta senza tenere memoria dell'ultimo indirizzo usato? (tipo end of file 
per intenderci...) ...come al solito spero di essere stato chiaro e rimango 
in attesa di una vs risp..ciao Alessandro
p.s se avete qualche routine funzionante che risolve il problema sarei molto 
felice...sono graditi anche link utili 

 per intenderci...)
Una memoria č una sequenza di byte che possono assumere un qualsiasi valore,
da 0x00 a 0xFF. Potresti scrivere la memoria in qualsiasi punto.
In questo contesto non č possibile sapere dove "finiscono" i dati in EEPROM.
Quello che tu dici ha senso solo se memorizzi i tuoi dati a partire dal
primo
byte nella memoria, senza salti. Ma anche in questo caso, tu potresti
memorizzare
un qualsiasi valore per ogni byte... come faresti a capire la fine dei dati
con un byte "particolare"?
Se sai in partenza che i dati che memorizzi non contengono il valore 0x00
(per
esempio), potresti utilizzare questo come fine del file. Ma č importante che
tra i tuoi dati non ci sia il valore 0x00.
Oppure potresti aumentare la ridondanza dei dati (sprecare spazio) e, al
posto
di memorizzare un byte, ne memorizzi due. Il primo di questi indica se si
tratta
dell'ultimo byte utile in memoria oppure no.
IMHO, la cosa migliore č memorizza l'ultimo indirizzo usato in memoria. Non
credo
ci siano casi particolari in cui questo metodo sia complicato da gestire.

 IMHO, la cosa migliore è memorizza l'ultimo indirizzo usato in memoria. 


 si trova per caso qualcosa di simile con i float?
E' sicuramente più complicato. Che compilatore C stai utilizzando?
Guarda se è possibile utilizzare la funzione standard sprintf() poiché ti
risparmieresti molto lavoro, anche se il codice aumenta di molto.
Utilizzando sprintf( str, "%4.1f", num) scrivi il numero float num
nella stringa str nel formato ASCII con 4 caratteri di cui una cifra
decimale.
Se non hai la possibilità di utilizzare sprintf() o qualcosa di simile, ti
toccherà farti la tua routine di conversione float->ASCII che è abbastanza
dura.
La prima cosa che dovresti sapere è come vengono memorizzati internamente i
numeri float (esistono alcune convenzioni che è necessario conoscere).
Il manuale del compilatore dovrebbe darti queste informazioni.

 ha scritto nel messaggio 
news:iJQ9d.32229$N45.8...@twister2.libero.it...
