View previous topic :: View next topic |
Author |
Message |
nailuy
Joined: 21 Sep 2010 Posts: 159
|
Is possible to read, write bit by bit from internal EEPROM? |
Posted: Mon Nov 13, 2023 2:09 pm |
|
|
Hy.
Can I read a single bit from EEPROM, or write without affect other bit's from the same addres? To wear less eeprom...
I'm refer bit like int1, (not byte, I already know). |
|
![](templates/subSilver/images/spacer.gif) |
dyeatman
Joined: 06 Sep 2003 Posts: 1924 Location: Norman, OK
|
|
Posted: Mon Nov 13, 2023 2:33 pm |
|
|
Maybe someone else has but I have never seen one.
All the ones I have seen are byte or word wide read/writes. _________________ Google and Forum Search are some of your best tools!!!! |
|
![](templates/subSilver/images/spacer.gif) |
nailuy
Joined: 21 Sep 2010 Posts: 159
|
|
Posted: Mon Nov 13, 2023 10:09 pm |
|
|
dyeatman thank you for reply.
Before I post this question ... I search on google.
I find something but is applied to Arduino or other platform for developing.
If nobody know, mabe it isn't possible. |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Tue Nov 14, 2023 1:53 am |
|
|
One simple comment here.
There is no 'wear' on a read.
You can read from an EEPROM (internal or external), an infinite number
of times. Life is just the same as for RAM.
It is only _writes_ that use lives.
There is no 'bit read' operation on any memory of this type (except bit
orientated ones). |
|
![](templates/subSilver/images/spacer.gif) |
nailuy
Joined: 21 Sep 2010 Posts: 159
|
|
Posted: Tue Nov 14, 2023 5:35 am |
|
|
oky, thank you.
I do not find anithing...
I know the wite is distroing the eeprom device .
that I was asking special for single bit...
How to close the subject or solve? |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9168 Location: Greensville,Ontario
|
|
Posted: Tue Nov 14, 2023 6:13 am |
|
|
you can
edit your original subject line to say '......[solved] '
or
simply delete the post |
|
![](templates/subSilver/images/spacer.gif) |
asmallri
Joined: 12 Aug 2004 Posts: 1634 Location: Perth, Australia
|
|
Posted: Tue Nov 14, 2023 7:12 am |
|
|
nailuy wrote: | oky, thank you.
I do not find anithing...
I know the wite is distroing the eeprom device .
that I was asking special for single bit... |
There are a few things to consider, you may already have considered these...
If this is an external EEPROM then you can probably use a Pin-For-Pin compatible FRAM instead.
Before doing a write to EEPROM, copy the byte to RAM, if operating on the specific bit in RAM does not change the value i.e. you are writing a 1 to a location that is already a 1 then do not perform the write. Similarly if you are writing a zero to a location that is already a zero, do not perform the write.
Write you code such that you can do your own wear leveling. For example, place you target data structure at location X, then, at the start of some new point in time (like a week, a month or a year) move the entire block to location Y. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Tue Nov 14, 2023 7:54 am |
|
|
Andrew's point here is vital.
Read the current byte. Save a copy of this.
Do all the updates you want.
Then compare the updated byte with the copy. Only write if there is a
change.
Also if something is changing frequently, consider only actually 'writing'
this when the power is turned off. This way several changes may only result
in a single write to the EEPROM.
On the wear leveling, this is how the driver using the program memory
instead of EEPROM works, storing a value together with an 'address', and
moving forwards through the page of memory with these.
If your device has a genuine EEPROM, these now have very high lives.
Even the old 16F84 supported a million cycles on the EEPROM. Short
cycle lives only matter if you start to use this like RAM to hold values
that you change frequently. So if you are using a dynamic value only write
it if it remains stable for several minutes. Don't update it every few
seconds.
It really is down to how often you change the value. So (for example),
if you stored a 'counter' into the EEPROM as fast as possible, you could
kill a cell in about an hour. However write a value once an hour and the
EEPROM would last over a hundred years!.... |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9168 Location: Greensville,Ontario
|
|
Posted: Wed Nov 15, 2023 6:40 pm |
|
|
The sad thing is I probably still have a few 1 bit microprocessors 'somewhere' in the basement. Motorola MC14500B, I think.
Those WOULD read 1 bit at a time, of the external memory....
great this dinosaur is feeling real old now.... |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19358
|
|
Posted: Thu Nov 16, 2023 8:31 am |
|
|
Yes.
It is interesting how many things had singe bit memories in the past.
Reason these have fallen massively out of favour is chip real estate.
On the EEPROM and flash memories, the erase and write are done using
much higher voltages than the normal operations. This high voltage is
what slowly kills the cells, but also needs rather large transistors to
handle these. To reduce the chip size they now only have one per
byte, or on the flash chips one per row. |
|
![](templates/subSilver/images/spacer.gif) |
|