Come si puo' riuscire a riconoscere vari tipi di Eeprom seriali?

Come da oggetto, sto perdendo tempo cercando di riconoscere una Eeprom

24Lc64 da una 512 o da una 1025. Il circuito e' un normale micro Pic 18F e la connessione micro -> Eeprom e' via I2c; vorrei riconoscere i tipo di Eeprom che si trova ad un indirizzo slave, sapendo che possono essere state montate eprom dal tipo 24LC08 alle 24LC1025. Prima di reinventare l'acqua calda, qualcuno ha aiuti/indirizzi/consigli in merito? Tia Angelo
Reply to
Deh
Loading thread data ...

Azzardo: scrivo ad un indirizzo che corrisponde all'ultima cella del tipo 24LC08 e poi provo a leggere il valore nell'ultima cella del 24LC1025, se uguale, inverto i bit e riscrivo nell'ultima cella del tipo 24LC08 e se il risultato, leggendo all'indirizzo che dovrebbe essere l'ultima cella del 24LC1025 e' uguale, allora si tratta definitivamente di una 24LC08.

Reply to
Roberto Deboni DMIsr

C'è qualcosa che non mi torna o non ho capito nell'algoritmo di test da te proposto. Comunque se sono previsti più modelli di capacità diversa, il test va iterato, ad esempio per modelli da 24LC08 a 24LC102x:

1) lettura dell'ultimo byte secondo la 24LC16, complemento e scrittura, nuova lettura e confronto con il valore precedente; se uguali allora è 24LC08 (o inferiore) e il test è terminato, altrimenti si prosegue; 2) lettura dell'ultimo byte secondo la 24LC32, complemento e scrittura, nuova lettura e confronto con il valore precedente; se uguali allora è 24LC16 e il test è terminato, altrimenti si prosegue; [...] 6) lettura dell'ultimo byte secondo la 24LC102x, complemento e scrittura, nuova lettura e confronto con il valore precedente; se uguali allora è 24LC512, altrimenti è 24LC102x.
Reply to
Luigi C.

E' limitato alla selezione tra solo i due tipi menzionati di memoria :-)

Reply to
Roberto Deboni DMIsr

cut

Ho provato e credo di essere riuscito a risolvere seguendo, in parte, entrambi e metodi suggeriti. L'algoritmo che a me funziona e' questo: Lettura e memorizzazione ultima cella (MaxEepAddr) della Eeprom piu' piccola. Scrittura byte 0xA5A5 (se il valore letto != 0xA5A5), nella cella . Lettura della cella successiva (MaxEepAddr + 1). Scrittura valore memorizzato nella cella puntata per la lettura per ripristinare lo stato iniziale della eeprom. Confronto fra il valore letto e il valore scritto. La riscrittura del valore avviene sempre nella cella giusta in quanto, da prove effettuate, anche se non esaustive, l'addresser interno della Eeprom effettua un Roll-Over al termine dello spazio di memoria e la lettura e scrittura avvengono, anche nel caso di indirizzamento sbagliato per termine dello spazio di memoria, con una giusta sequenza. Stesso test con indirizzo della eeprom di caratura superiore, fino a trovare il valore giusto, se non abbiamo uguaglianza fra il valore letto e quello scritto. Tutto questo, solo per lasciare un punto di partenza per chi abbia bisogno di riconoscere una Eeprom, sperando di riuscire a diminuire il suo tempo perso, dato che, del mio, ne ho perso un bel po'! Ringraziando anche chi ha perso un po' del suo tempo per darmi consigli e suggerimenti ciao Angelo

Reply to
Deh

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.