matmor Inserito: 25 marzo 2008 Segnala Inserito: 25 marzo 2008 Salve a tuttiho progettato dei piccoli sistemini contatori con dei pic 16f877aprogrammati in linguaccio cma ho un problema, vorrei salvare dei dati (numeri) in memoria, quando tolgo tensione al circuito solo che questi numeri sono superiori a 255 ; c'è un sistema che mi permetta di salvare ad esempio "9500" nei registri della eeprom e poi successivamente naturalmente ripescare questi numeri?qualuno mi ha consigliato di mettere in sleep il micro ed usare una batteria tampone , solo che dovrei spegnere il display lcd e quindi modificare il circuito cosa che non vorrei farec'è qualcuno che puo darmi un esempio??
Livio Orsini Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Lo 877 ha 255 bytes di memoria EEprom. Questa memoria può essere letta e scritta e mantiene i dati anche in assenza di alimentazione. Il fatto che sia organizzata in byte non preclude che si possano scrivere dati in interi di 16 o di 32 bits. Se usi il "C" dovresti avere delle "built in function" per la EEPROM o, al limite , dei programmi di esempio. OCnsulta l'help in linea del tuo compilatore.
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Hi,Il chip che stai utilizzando ha una DATA EEPROM da 256 bytes per cui potresti NON avere bisogno di dispositivi esterni. Devi valutare attentamente la frequenza di conteggio. Se questa e' elevata non ti puoi permettere di aggiornare la EEPROM ad ogni cambio di valore perche' rischieresti di "usurare" la memoria. Controlla bene il numero di cicli di scrittura ammissibili.In caso la frequenza di aggiornamento inizia a diventare critica ti consiglio di utilizzare una FRAM/MRAM (Memoria non volatile ferro-elettrica) che non necessita di batterie tampone.In commercio trovi dispositivi FRAM/mram SPI/I2C o paralleli. Questi dispositivi hanno praticamente un numero di cicli di scrittura indefinito.Per la scrittura in memoria dei dati non ci sono problemi, devi semplicemente organizzare i bytes nella memoria come meglio credi. Se hai bisogno di parole a 16 bitspuoi semplicemente disporre la parte bassa e la parte alta della tua word in due celle consecutive (Big Endian)Furno Gianluca
matmor Inserita: 25 marzo 2008 Autore Segnala Inserita: 25 marzo 2008 Come compilatore uso il mikroc ma da quello che ho vistoposso scrivere un valore con questa formulaEeprom_Write(unsigned int address, unsigned short data);ma data è sempre shortcome divido un integer in più shorte poi come iprendo gli short divisi per ottenere di nuovo il mio integer??
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Puoi crearti delle macro per ricavare la parte alta e bassa di una word e per ricostruire il tuttotypedef unsigned char BYTE;typedef unsigned int WORD;#define LOWORD(n) (BYTE)(n&0xFF) /* Preleva la parte bassa di una word LSB */#define HIWORD(n) (BYTE)(n>>8) /* Preleva la parte alta di una word MSB */#define MAKEWORD(L,H) (WORD)((WORD)L | (H<<8)) /* Ricostruisce una WORD partendo da due bytes */nella mia funzione ....void LaMiaFunzione(void){ WORD a; WORD Address; BYTE L,H; a=1000; Address=0x1234; /* Scrivo parte bassa */ Eeprom_Write(Address+0, LOWORD(a)); /* Scrivo parte alta */ Eeprom_Write(Address+1, HIWORD(a)); /* Adesso rileggo il tutto *( L=Eeprom_Reade(Address+0); H=Eeprom_Read(Address+1); /* Ricostruisce la word */ a=MAKEWORD(L,H);}
matmor Inserita: 25 marzo 2008 Autore Segnala Inserita: 25 marzo 2008 Grazieeeeeadesso me la studio un po ma credo di aver capitocon>> mi sposto i bit a destra per avere solo i bit della parte altagrazie ancora
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 ....................... PreeeeeegooooooooCiaoFurno Gianluca:-)
Livio Orsini Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Purtroppo no! E' un numero elevato ma ben definito.
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Diciamo che diventa difficile caratterizzare un chip che permette decine o centinaia di miliardi di accessi in scrittura (con molta probabilita' si puo' incorrere nella rottura del chip stesso prima di esaurire questo limite)Nel passato mi e' successo di trovare EEPROM malfunzionanti (ovviamente dopo anni di glorioso funzionamento) per via dell'usura delle celle stesse ma questo limite sta per essere abbattuto.Questo e' parte di un testo relativo ad una recente news di RAMTRON riguardante le tecnologie FRAM/MRAM“Grazie ai brevi tempi di accesso, al basso consumo, alle ridotte dimensioni della cella e ai ragionevoli costi di fabbricazione, le FRAM si prestano a una vasta gamma di applicazioni,” continua il dott. Moise. “Tutti i sistemi che richiedono memoria non volatile a basso consumo, una veloce protezione dei dati prima di interrompere l’alimentazione o un numero di cicli di scrittura illimitato, trarranno grandi vantaggi dalle prestazioni delle FRAM.” CiaoGianluca
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Questo e' per esempio lo "Short Summary" della FM25L256B, ne ho una su una board che sto utilizzando per "loggare" dati provenienti da una comunicazione seriale (una specie di sniffer)256K bit Ferroelectric Nonvolatile RAM• Organized as 32,768 x 8 bits• Unlimited Read/Write Cycles• 10 Year Data Retention• NoDelay™ Writes• Advanced High-Reliability Ferroelectric ProcessCiaoGianluca
Livio Orsini Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 (modificato) A solo titolo informativo, senza intenzioni polemiche. Questi sono i dati delle 25AA160A/B,25LC160A/B Microchip (seriali SPI) dal primo data sheet che avevo sottomanocome puoi vedere i il numero di cicli di scrittura è elevato ma non è infinito. Tutti i produttori più affidabili danno un numero massimio di cicli di scrittura garantito. Purtroppo è la tecnologia costruttiva che lo impone. Modificato: 25 marzo 2008 da Livio Orsini
mshadow65 Inserita: 25 marzo 2008 Segnala Inserita: 25 marzo 2008 Aspetta Livio ...Io sto parlando di FRAM e non di EEPROM !!!E' chiaro che le EEPROM per la loro natura non possono avere un numero di cicli infinito.La tecnologia FRAM/MRAM e' una tecnologia emergente che mandera' in pensione le E2PROM e tecnologie derivate.Il mio suggerimento e' stato:Quindi:- Se il conteggio e' lento e' possibile eliminare un chip esterno ed utilizzare la EEPROM interna- Se la frequenza e' piuttosto elevata suggerisco un chip FRAM/MRAM esternoCiaoGianluca:-)
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