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

Nov 26, 2013 4 Replies

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

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.

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.

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

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required