> > i2c_read_reg works too inasmuch as it does not error out, but it returns FF > whatever addres I read like the i2c-tools command does. > I am not sure that it is correct though... >
Yes this is expected, as eeproms erase to $FF. You can write to the same byte as many times as you want, as long as you only change 1 bits to 0 bits. If you must change a 0 bit to a 1 bit, you have to erase back to $FF first. Be aware that erase means erasing the entire page, and not just a single byte. This is where things like "wear leveling" come into play, because a page can only be erased a limited number of times (it used to be around 10,000, but maybe newer devices have extended this). How you manage writes to eeprom can be tricky, best to use them for things that don't change very often, such as configuration data. Jeff On Sun, Apr 2, 2023 at 3:30 PM Bo Berglund via fpc-pascal < fpc-pascal@lists.freepascal.org> wrote: > On Sun, 2 Apr 2023 07:31:43 +0200, Christo Crause via fpc-pascal > <fpc-pascal@lists.freepascal.org> wrote: > > >On Sat, Apr 1, 2023 at 9:57?PM Bo Berglund via fpc-pascal < > >fpc-pascal@lists.freepascal.org> wrote: > > > >> Question: > >> Can I use Linux file system commands to read/write the data on the i2c > >> EEPROM > >> memory device and if so how from fpc? > >> > > > >To some extent it is possible to handle i2c transactions as file > read/write > >operations, but some ioctl calls are required to configure e.g. the device > >address [1]. Take note that only a subset of i2c functionality is > available > >using read/write calls. Lazi2cdev [2] uses this approach. > > > >For finer control over the i2c transactions (for example combined > >write/read transactions) low level ioctl calls are available in Linux. I > >wrote an i2c class [3] using this approach. > > > >1. https://www.kernel.org/doc/html/latest/i2c/dev-interface.html > >2. https://github.com/laz2wiringpi/lazI2cdev/blob/master/i2cdev_base.pas > >3. https://github.com/ccrause/rpiplc_pas/blob/main/native/i2c.pas > > Hello again! > > I have now tested the two demos in github [3] and they seem to work OK. > > The i2cscan works and shows exactly the same as sudo i2cdetect -y 1 does > from > the i2c-tools package I installed via apt. > > i2c_read_reg works too inasmuch as it does not error out, but it returns FF > whatever addres I read like the i2c-tools command does. > I am not sure that it is correct though, for that I need to create an > i2c_write > demo app first so I can write values at different locations and read them > back. > The EEPROM has until now not been used so it is in its factory state with > no > data. > > Is there a reason that there is no i2c_write_reg demo in the github > package? > > I will try to write one so I can test that as well... > > > -- > Bo Berglund > Developer in Sweden > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal >
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal