0.4.3 FRAM_I2C

This commit is contained in:
rob tillaart 2022-12-29 16:05:49 +01:00
parent 292707a95c
commit cc70071cc3
12 changed files with 115 additions and 62 deletions

View File

@ -25,4 +25,5 @@ compile:
- esp8266
# - mega2560
- rpipico
- nano_every

View File

@ -6,7 +6,7 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: arduino/arduino-lint-action@v1
with:
library-manager: update

View File

@ -8,10 +8,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6
- run: |
gem install arduino_ci
gem install arduino_ci -v 1.3.0
arduino_ci.rb

View File

@ -10,7 +10,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: json-syntax-check
uses: limitusus/json-syntax-check@v1
with:

View File

@ -5,88 +5,60 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [0.4.2] - 2022-10-03
## [0.4.3] - 2022-12-28
- add writeFloat(), readFloat()
- refactor
- add nano_every to build-ci (test)
- update readme.md
- update license
- update Github actions to v3 (test)
- simplified changelog
### Added
## [0.4.2] - 2022-10-03
- FRAM_RINGBUFFER class - see FRAM_RINGBUFFER.md
- build-ci support for RP2040 pico
### Changed
- updated documentation
- moved code from FRAM.h to FRAM.cpp
## [0.4.1] - 2022-09-24
### Added
- changed ESP32 **begin()** parameters to **int** to prevent link error.
see https://github.com/RobTillaart/PCA9635/issues/17
### Changed
- updated documentation
## [0.4.0] - 2022-05-02
### Added
- add **FRAM32** derived class to support the MB85RC1MT as it need 32 bits addressing.
This class uses 4 byte memory addresses internally.
Note **FRAM32** can also address 16 bit FRAM devices.
### Changed
- updated documentation
### Fixed
----
## [0.3.6] - 2022-05-02
### Added
- add **void sleep()** experimental.
- add **bool wakeup(trec = 400)** experimental. wakeup time of 400us. returns true if connected after call.
- add example **FRAM_sleep.ino**
### Changed
- updated readme.md
- updated keywords.txt
### Fixed
- minor edits
## [0.3.5] - 2022-03-23
### Added
- add **uint32_t clear(uint8_t value = 0)**
- add **void setSizeBytes(uint32_t value)**
- added defines for size of known types for e.g. **void setSizeBytes(uint32_t value)**
- add \_sizeinBytes private var. Needed in clear a.o.
### Changed
- **getSize()** automatically called in **begin()**
- updated example **FRAM_clear.ino**
- renamed private functions with \_
- updated readme.md
### Fixed
## [0.3.4] - 2022-03-16
### Added
- add **uint16_t writeObject(memaddr, &obj)** see #13
- add **uint16_t readObject(memaddr, &obj)** see #13
- add examples for write- and readObject()
### Changed
- renamed releaseNotes.md => CHANGELOG.md
- some edits in readme.md
### Fixed
## [0.3.3] - 2022-02-08
- added **getSizeBytes()**
- created releaseNotes.md
@ -107,6 +79,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- fix #2 ESP32
- add WireN support
----
## [0.2.3] - 2021-01-11
- fix getMetaData (kudos to PraxisSoft)

View File

@ -1,7 +1,7 @@
//
// FILE: FRAM.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.4.2
// VERSION: 0.4.3
// DATE: 2018-01-24
// PURPOSE: Arduino library for I2C FRAM
// URL: https://github.com/RobTillaart/FRAM_I2C
@ -94,21 +94,35 @@ bool FRAM::isConnected()
void FRAM::write8(uint16_t memaddr, uint8_t value)
{
uint8_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 1);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint8_t));
}
void FRAM::write16(uint16_t memaddr, uint16_t value)
{
uint16_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 2);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint16_t));
}
void FRAM::write32(uint16_t memaddr, uint32_t value)
{
uint32_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 4);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint32_t));
}
void FRAM::writeFloat(uint16_t memaddr, float value)
{
float val = value;
_writeBlock(memaddr, (uint8_t *)&val, sizeof(float));
}
void FRAM::writeDouble(uint16_t memaddr, double value)
{
double val = value;
_writeBlock(memaddr, (uint8_t *)&val, sizeof(double));
}
@ -134,7 +148,7 @@ void FRAM::write(uint16_t memaddr, uint8_t * obj, uint16_t size)
uint8_t FRAM::read8(uint16_t memaddr)
{
uint8_t val;
_readBlock(memaddr, (uint8_t *)&val, 1);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint8_t));
return val;
}
@ -142,7 +156,7 @@ uint8_t FRAM::read8(uint16_t memaddr)
uint16_t FRAM::read16(uint16_t memaddr)
{
uint16_t val;
_readBlock(memaddr, (uint8_t *)&val, 2);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint16_t));
return val;
}
@ -150,7 +164,23 @@ uint16_t FRAM::read16(uint16_t memaddr)
uint32_t FRAM::read32(uint16_t memaddr)
{
uint32_t val;
_readBlock(memaddr, (uint8_t *)&val, 4);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint32_t));
return val;
}
float FRAM::readFloat(uint16_t memaddr)
{
float val;
_readBlock(memaddr, (uint8_t *)&val, sizeof(float));
return val;
}
double FRAM::readDouble(uint16_t memaddr)
{
double val;
_readBlock(memaddr, (uint8_t *)&val, sizeof(double));
return val;
}
@ -345,21 +375,35 @@ FRAM32::FRAM32(TwoWire *wire):FRAM(wire)
void FRAM32::write8(uint32_t memaddr, uint8_t value)
{
uint8_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 1);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint8_t));
}
void FRAM32::write16(uint32_t memaddr, uint16_t value)
{
uint16_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 2);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint16_t));
}
void FRAM32::write32(uint32_t memaddr, uint32_t value)
{
uint32_t val = value;
_writeBlock(memaddr, (uint8_t *)&val, 4);
_writeBlock(memaddr, (uint8_t *)&val, sizeof(uint32_t));
}
void FRAM32::writeFloat(uint32_t memaddr, float value)
{
float val = value;
_writeBlock(memaddr, (uint8_t *)&val, sizeof(float));
}
void FRAM32::writeDouble(uint32_t memaddr, double value)
{
double val = value;
_writeBlock(memaddr, (uint8_t *)&val, sizeof(double));
}
@ -385,7 +429,7 @@ void FRAM32::write(uint32_t memaddr, uint8_t * obj, uint16_t size)
uint8_t FRAM32::read8(uint32_t memaddr)
{
uint8_t val;
_readBlock(memaddr, (uint8_t *)&val, 1);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint8_t));
return val;
}
@ -393,7 +437,7 @@ uint8_t FRAM32::read8(uint32_t memaddr)
uint16_t FRAM32::read16(uint32_t memaddr)
{
uint16_t val;
_readBlock(memaddr, (uint8_t *)&val, 2);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint16_t));
return val;
}
@ -401,7 +445,23 @@ uint16_t FRAM32::read16(uint32_t memaddr)
uint32_t FRAM32::read32(uint32_t memaddr)
{
uint32_t val;
_readBlock(memaddr, (uint8_t *)&val, 4);
_readBlock(memaddr, (uint8_t *)&val, sizeof(uint32_t));
return val;
}
float FRAM32::readFloat(uint32_t memaddr)
{
float val;
_readBlock(memaddr, (uint8_t *)&val, sizeof(float));
return val;
}
double FRAM32::readDouble(uint32_t memaddr)
{
double val;
_readBlock(memaddr, (uint8_t *)&val, sizeof(double));
return val;
}

View File

@ -2,7 +2,7 @@
//
// FILE: FRAM.h
// AUTHOR: Rob Tillaart
// VERSION: 0.4.2
// VERSION: 0.4.3
// DATE: 2018-01-24
// PURPOSE: Arduino library for I2C FRAM
// URL: https://github.com/RobTillaart/FRAM_I2C
@ -13,7 +13,7 @@
#include "Wire.h"
#define FRAM_LIB_VERSION (F("0.4.2"))
#define FRAM_LIB_VERSION (F("0.4.3"))
#define FRAM_OK 0
@ -49,11 +49,15 @@ public:
void write8(uint16_t memaddr, uint8_t value);
void write16(uint16_t memaddr, uint16_t value);
void write32(uint16_t memaddr, uint32_t value);
void writeFloat(uint16_t memaddr, float value);
void writeDouble(uint16_t memaddr, double value);
void write(uint16_t memaddr, uint8_t * obj, uint16_t size);
uint8_t read8(uint16_t memaddr);
uint16_t read16(uint16_t memaddr);
uint32_t read32(uint16_t memaddr);
float readFloat(uint16_t memaddr);
double readDouble(uint16_t memaddr);
void read(uint16_t memaddr, uint8_t * obj, uint16_t size);
template <class T> uint16_t writeObject(uint16_t memaddr, T &obj)
@ -112,11 +116,15 @@ public:
void write8(uint32_t memaddr, uint8_t value);
void write16(uint32_t memaddr, uint16_t value);
void write32(uint32_t memaddr, uint32_t value);
void writeFloat(uint32_t memaddr, float value);
void writeDouble(uint32_t memaddr, double value);
void write(uint32_t memaddr, uint8_t * obj, uint16_t size);
uint8_t read8(uint32_t memaddr);
uint16_t read16(uint32_t memaddr);
uint32_t read32(uint32_t memaddr);
float readFloat(uint32_t memaddr);
double readDouble(uint32_t memaddr);
void read(uint32_t memaddr, uint8_t * obj, uint16_t size);
template <class T> uint32_t writeObject(uint32_t memaddr, T &obj);

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018-2022 Rob Tillaart
Copyright (c) 2018-2023 Rob Tillaart
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -70,10 +70,16 @@ In the **FRAM32** class these functions have an **uin32_t memaddr**.
- **void write8(uint16_t memaddr, uint8_t value)** uint8_t
- **void write16(uint16_t memaddr, uint16_t value)** uint16_t
- **void write32(uint16_t memaddr, uint32_t value)** uint32_t
- **void writeFloat(uint16_t memaddr, float value)** float (since 0.4.3)
- **void writeDouble(uint16_t memaddr, double value)** double (since 0.4.3)
For board that have 8 byte double.
- **void write(uint16_t memaddr, uint8_t \* obj, uint16_t size)** other types / sizes.
- **uint8_t read8(uint16_t memaddr)**
- **uint16_t read16(uint16_t memaddr)**
- **uint32_t read32(uint16_t memaddr)**
- **float readFloat(uint16_t memaddr)** (since 0.4.3)
- **double readDouble(uint16_t memaddr)** (since 0.4.3)
For board that have 8 byte double.
- **void read(uint16_t memaddr, uint8_t uint8_t \* obj, uint16_t size)**
One needs to allocate memory as the function won't.
@ -186,7 +192,7 @@ The FRAM_ringbuffer.ino examples shows how the class can be used.
- test more types of FRAM
- **getSize()** scanning FRAM like EEPROM library?
- remember last written address? why?
- fill power usage table
- fill power usage table (documentation)
### wont

View File

@ -13,11 +13,15 @@ isConnected KEYWORD2
write8 KEYWORD2
write16 KEYWORD2
write32 KEYWORD2
writeFloat KEYWORD2
writeDouble KEYWORD2
write KEYWORD2
read8 KEYWORD2
read16 KEYWORD2
read32 KEYWORD2
readFloat KEYWORD2
readDouble KEYWORD2
read KEYWORD2
writeObject KEYWORD2

View File

@ -15,7 +15,7 @@
"type": "git",
"url": "https://github.com/RobTillaart/FRAM_I2C.git"
},
"version": "0.4.2",
"version": "0.4.3",
"license": "MIT",
"frameworks": "arduino",
"platforms": "*",

View File

@ -1,5 +1,5 @@
name=FRAM_I2C
version=0.4.2
version=0.4.3
author=Rob Tillaart <rob.tillaart@gmail.com>
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
sentence=Arduino library for I2C FRAM.