PIC18: flash o EEPROM?

Ciao a tutti,

sto lavorando su un'applicazione con PIC18 (F2550, per la precisione), e devo memorizzare un paio di dati di calibrazione. Ora, il pispolo in questione possiede un sacco di memoria flash ed un po' di eeprom, ma sinceramente c'è una cosa di fondo che proprio non ho capito, e spero che qualche anima buona mi possa aiutare: su che base dovrei scegliere di usare l'una o l'altra? :-o

Anzi, visto che tanto a quanto pare sono entrambe permanenti: ma che ce l'ha a fare, la eeprom? E' solo un'eredità dei modelli più antichi, o c'è sotto qualcosa di più?

Ciao a tutti e grazie a chi mi risponderà!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario
Loading thread data ...

Conscio delle conseguenze, "i3hev, mario" un bel dì scrisse:

La memoria flash la puoi scrivere SOLO programmando esternamente il chip, la eeprom la leggi e la scrivi da programma interno al processore ma non può contenere istruzioni.

--
Honey, I Formatted the Kid!
News 2002 [v 2.4] - [ StopDialers/PopDuster/SMTP Proxy -
 Click to see the full signature
Reply to
Due di Picche

Prima di tutto, grazie per avermi risposto :)

Probabilmente c'è qualcosa che non ho capito (i pic sono roba nuova, per me), ma mi pare che con i modelli attuali (quelli che per inciso possono anche caricarsi il firmware da seriale e simili) non ci sia alcun problema a scrivere sulla flash, dato che l'istruzione tblwr dovrebbe fare appunto questo... dov'è l'inghippo? Cos'è che non capisco? :-o

Ciao!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

Il 05/11/2009 00:30, i3hev, mario ha scritto:

Hai detto bene. La differenza sta *sostanzialmente* nel numero di riscritture possibili (oltre che latenza, dimensione blocchi, etc).

Se sono dati molto poco modificati vai pure di flash (che tra l'altro è più sicura contro la perdita di dati nel tempo).

Reply to
Er Palma

i3hev, mario:

Non conosco i PIC nuovi, ma, sugli AVR, ci sono varie differenze tra flash e EEPROM.

Innanzitutto la Flash va cancellata prima di essere scritta. Poi è suddivisa in pagine, quindi devi salvare il contenuto delle locazioni che non vuoi modificare, cancellare la pagina e poi riscriverla (però ci potrebbe essere anche sui PIC un buffer che rende la cosa trasparente), mentre la EEPROM si scrive direttamente, byte per byte. Sugli AVR ci pensa un automatismo, per cui ti basta controllare se non c'è una scrittura già in corso, settare i registri di scrittura su EEPROM e dimenticarti tutto il resto.

I tempi di scrittura su flash sono un po' più lunghi che su EEPROM, non so quali requisiti ci siano per la corrente di programmazione.

Anche nei tempi di lettura ci saranno differenze, ma sui PIC non ti posso aiutare. Comunque, in generale, uso una copia dei valori in RAM che aggiorno al boot o dopo una scrittura.

Chiaramente, non puoi scrivere sulla flash mentre esegui un programma presente sulla stessa pagina, l'AVR apparentemente lo fa, ma in realtà blocca la CPU per tutto il tempo di riscrittura (qualche millisecondo).

Non avendo certezze definite nella vita, mi affido a chi penso ne sappia di più. Se quelli di Microchip hanno messo entrambi i tipi di memorie non penso lo abbiano fatto solo per copiare la Atmel.

Reply to
F. Bertolazzi

Conscio delle conseguenze, "i3hev, mario" un bel dì scrisse:

Per scrivere sulla flash è necessario rispettare una sequenza precisa e piuttosto lunghetta (in termini di dispendio di tempo macchina) inoltre è limitata a blocchi interi di 8 byte e multipli... LA EEPROM è invece un po' più veloce e indirizzabile singolarmente. Inoltre la flash supporta un decimo circa dei cicli di scrittura rispetto ad una eeprom...

--
Portable:  Survives system reboot.
News 2002 [v 2.4] - [ StopDialers/PopDuster/SMTP Proxy -
 Click to see the full signature
Reply to
Due di Picche

i3hev, mario:

Un piccolo consiglio, che spero non scateni il solito putiferio, al quale comunque non parteciperò: se non hai ancora investito molto tempo e denaro sui PIC, perché non dai un'occhiata agli AVR della Atmel?

Da quanto ho visto sia qui che su i.h.e.digitale, i contributori più in gamba, ad eccezione di qualcuno che è giustamente già passato agli ARM (che sostanzialmente costano la stessa cifra, guarda Luminary-Texas), li preferiscono. Forse, googlando, riesci a beccare qualche thread in cui ne viene spiegato il perché.

Reply to
F. Bertolazzi

ah ecco, qualcosa c'era... :)

ok, è quello che farò: si tratta in tutto di due interi, che vengono settati con una procedura di calibrazione e poi, teoricamente, potrebbero stare lì fino alla consumazione dei secoli...

Ciao e grazie!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

sicuramente anche sui PIC, sono io che ancora non li conosco abbastanza... però ho visto che il compilatore traduce la scrittura nella flash in maniera abbastanza semplice (7 parole in tutto) e quindi evidentemente il uC si arrangia parecchio... :)

l'applicazione è tutt'altro che critica, credo che qualche millisecondo in più od in meno non farà nessuna differenza; perciò credo proprio che sceglierò banalmente la soluzione più semplice per me Non avendo certezze definite nella vita, mi affido a chi penso ne sappia di

ne sono convinto anch'io, è per questo che cercavo lumi tra chi ne sa di più :)

ciao e grazie!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

come dicevo sopra, sono un paio di numeri che, una volta scritti, resteranno lì... alla peggio, potranno essere scritti un centinaio di volte nel corso della vita utile dell'oggetto (a farla *molto* grande!), quindi il problema del numero di cicli di scrittura non credo si presenti...

Piuttosto, visto che mi sembri addentro, potresti gentilmente farmi capire in cosa consiste la sequenza di scrittura? Io ho provato a compilare (con HiSoft C18) una operazione di scrittura sulla flash, e mi sembra che l'abbia tradotta in maniera abbastanza semplice (sono 7 istruzioni in tutto), ma da quel che dici mi viene il sospetto che manchi qualcosa che debba fare io (cancellazioni, preparazioni, qualcosa di simile?).

E poi: ho cercato in vari manuali e primer, ma non sono ancora riuscito a scoprire come si fa a scrivere sulla EEPROM! Pare che sia un segreto molto ben custodito :o(

Ciao e grazie!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

i3hev, mario:

Si fa per dire... Comunque, se i valori vengono ricavati in calibrazione e non c'è differenza tra il firmware di calibrazione e quello effettivamente utilizzato (non sono sicuro sia una buona scelta), puoi senz'altro usare la flash.

Reply to
F. Bertolazzi

come minimo un flame... :)

Scherzi a parte, sono stato a lungo indeciso tra quale delle due strade intraprendere (gli ATMEL mi sembrano assai interessanti), ma in questo caso la scelta si è imposta da se', dato che il progetto nasce in un ambiente già abitato da PIC e relativi sostenitori :)

Ciao!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

i3hev, mario:

Ti devo copincollare questo post, proveniente da tutt'altro NG:

Il termine "radiologo" in se' e' ambiguo, una ventina di anni fa, nella zona dove abitavo c'era un tizio che si autodefiniva "radiologo" (con tanto di bigliettino da visita...) perche' rubava gli stereo nelle automobili (giuro che e' vero, non me lo sto inventando!!)

Reply to
F. Bertolazzi

oh be', per saperne più di me basta *molto* poco... Comunque, se i valori vengono ricavati in calibrazione e

ok, e probabilmente così farò... il firmware è sempre lo stesso, si tratta semplicemente di memorizzare intercetta e pendenza di una retta per la calibrazione di un voltmetro, a partire da due valori di riferimento "esterni". Ovvio che poi la precisione non potrà essere migliore del campione, ma basta e avanza... :)

ciao e grazie ancora!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

ROTFL!! :) :)

Ciao!

--
73 es 51 de i3hev, op. mario

Non è Radioamatore, se non gli fuma il saldatore!
 Click to see the full signature
Reply to
i3hev, mario

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.