Releases: ShimmerResearch/shimmer3
LogAndStream_Shimmer3_v0.11.0
LogAndStream v0.11.0
Public Release
This release is a major update to v0.10.0 with the following updates/improvements:
Bug Fixes
Sensing stopped when docked
This release fixes a bug in SetupDock() whereby a sensing unit is forced to stop sensing if "docked".
New Features
SR47-4 support
New SR47-4 (ExG) devices now supported. ADS1292R clock lines are reconfigured for this device such that both ADS chips share the same clock line. Interrupt for Chip 2 is disabled such that both chips are serviced by chip 1's data ready pin interrupt routine alone. Default configuration bytes now also cater for SR47-4 (and newer) Shimmer ExG devices. Checks EEPROM info and applies ADS clock chip configuration bit accordingly.
An additional 1 second time-out is now applied in firmware- see page 63 of ADS1292R datasheet for more info.
SDLog_Shimmer3_v0.18.0
SDLog v0.18.0
Public Release
This release is a major update to v0.17.0 with the following updates/improvements:
Bug Fixes
Undock-start bug
This is a long-standing issue with the undock-start feature of public Shimmer3 firmware images. A bugfix has been ported that essentially debounces the undock action (100ms delay).
BMP180 showing in sdlog.cfg file
For Shimmer units using the BMP280 device, bmp180 was still being written to sdlog.cfg file. Now writes text based on current on-board sensor.
LSM303AHTR Wide range accel at high sampling rates
Wide range accel not sampling correctly above 1024Hz. Fix applied in LSM303AHTR driver to apply settings correctly for samplingRate > 7. To be tested internally
Device freezes when TCXO is enabled
Timeout in i2c driver assumes that the 32Khz clock is enabled. Modified hal_i2c.c to match 32kHz clock timing if tcxo clock is instead enabled. EEPROM can take up to 5ms to read 128 bytes but incorrect tcxo timings were only allowing < 1ms for a page read - end result was inconsistent device booting.
New Features
Low battery auto-stop
This feature stops the Shimmer from logging/streaming data and returns it to idle mode if a low-battery state has been reached. The low-battery state (3.65Volts - 10%) is confirmed if 3 battery read operations all read below this threshold. The battery state is reset upon docking the Shimmer or power-cycling the device. This feature is configurable through infomem (NV_SD_TRIAL_CONFIG1 & BIT0) and/or the "sdlog.cfg" file under the name "low_battery_autostop".
LogAndStream_Shimmer3_v0.10.0
LogAndStream v0.10.0
Public Release
This release is a major update to v0.9.0 with the following updates/improvements:
Bug Fixes
Undock-start bug
This is a long-standing issue with the undock-start feature of public Shimmer3 firmware images. A bugfix has been ported that essentially debounces the undock action (100ms delay).
BMP180 showing in sdlog.cfg file
For Shimmer units using the BMP280 device, bmp180 was still being written to sdlog.cfg file. Now writes text based on current on-board sensor.
LSM303AHTR Wide range accel at high sampling rates
Wide range accel not sampling correctly above 1024Hz. Fix applied in LSM303AHTR driver to apply settings correctly for samplingRate > 7. To be tested internally
Device freezes when TCXO is enabled
Timeout in i2c driver assumes that the 32Khz clock is enabled. Modified hal_i2c.c to match 32kHz clock timing if tcxo clock is instead enabled. EEPROM can take up to 5ms to read 128 bytes but incorrect tcxo timings were only allowing < 1ms for a page read - end result was inconsistent device booting.
New Features
Low battery auto-stop
This feature stops the Shimmer from logging/streaming data and returns it to idle mode if a low-battery state has been reached. The low-battery state (3.65Volts - 10%) is confirmed if 3 battery read operations all read below this threshold. The battery state is reset upon docking the Shimmer or power-cycling the device. This feature is configurable through infomem (NV_SD_TRIAL_CONFIG1 & BIT0) and/or the "sdlog.cfg" file under the name "low_battery_autostop".
Board ID updated via UART and BT.
Removed factory restriction on programming daughter ID EEPROM (for Proto3 mini and SR31-7 conflicts).
Sleep_Shimmer3_v0.3.0
Sleep_Shimmer3_v0.3.0
Public Release
This release is a major update to v0.2.0 with the following updates/improvements:
Bug Fixes
NONE
New Features
Extended board support
Added support for all Shimmer3 boards. EEPROM read for each device and pin configuration modified on a unit-by-unit basis to achieve lowest power consumption for a given board.
Extensive code commenting
Added further code commenting for better explanation of code functionality.
SDLog_Shimmer3_v0.17.0
SDLog v0.17.0
Public Release
This release is a major update to v0.15.0 and v0.16.0 with the following updates/improvements:
Since v0.16.0
See https://github.com/ShimmerEngineering/FW_Shimmer3/releases/tag/SDLog_v0.16.0
Bug Fixes
BMP280 Temperature/ Pressure Values
BMP280 sensory parameters are obtained properly
New Features
None
Since v0.15.0
Bug Fixes
TCXO operation fixed
TCXO functionality was not working as expected, issued a fix.
New Features
Support for new sensors
Updates for new sensors - includes all (non FACTORY_TEST) changes made to LogAndStream from v0.8.0->v0.9.0 inclusive.
Default calibration bytes
Default calibration bytes are now written correctly for a blank Shimmer
Default Shimmer name
Default name changed from "idXXXX" to "Shimmer_XXXX"
LogAndStream_Shimmer3_v0.9.0
LogAndStream v0.9.0
Public Release
This release is a major update to v0.8.0 with the following updates/improvements:
Bug Fixes
Default calibration bytes not written for blank Shimmer
Firmware now writes default calibration parameters if Shimmer unit is blank (all 0xFF).
New Features
Shimmer name
Default name changed from "idXXXX" to "Shimmer_XXXX"
New sensor support
Firmware supports new sensors (LSM303AHTR, MPU9250 & BMP280) and current Shimmer3 sensors, deciding upon boot which drivers to use.
BMP280 calibration byte commands
BMP280 has new calibration get and response commands to separate it from the BMP180's calibration response as the BMP280 includes two extra calibration bytes (24 vs 22). If a BMP280 is onboard and the BMP180 calibration command is used, it will return 0x01's instead of a valid calibration response.
TCXO
TCXO is now functioning as expected.
SDLog_Shimmer3_v0.15.0
SDLog v0.15.0
Public Release
This release is a major update to v0.13.0 with the following updates/improvements:
Bug Fixes
est_exp_len not being set correctly
est_exp_len not assigned value correctly in "sdlog.cfg" file. User would instead see "est_exp_len=" with no parameter after the "=". sprintf now uses %d instead of %u.
Firmware mis-calculating sampling rate in SD header
Firmware's FreqDiv() function set to use round(clockFreq / num_in) instead of floor(clockFreq / num_in) - was changing sampling rate between sessions as the resulting output of FreqDiv() did not match that set by Consensys.
ExG idle current consumption >20mA
All ExG boards (SR37, SR47 and SR59) - Normal P2.0 output conflicting with DRY pin on ADS chips. Changed to input (on MSP430) for these boards. Current draw at idle is now correct (~2mA).
ADC channel-read updates
Customers reported spiky PPG data when recording with no PPG sensor enabled. Spikes were attributed to a combination of:
- Periodic Battery read
- Open circuit on PPG line picking up ongoing ADC operations (crosstalk).
Strong crosstalk/coupling between the Low-Noise Accelerometer and PPG channels was also observed when either Battery, A6, A7 or A15 were not enabled. Some level of debugging and improving later, much of the observed crosstalk is still present but we have decided this to be a limitation of the ADC's hardware rather than software/firmware at this point.
BMP180/280 Support
BMP180 polling at very high resolution caused an issue whereby the first sample was always zero. Resolved by changing SKIP50MS
definition flag (and associated timing mechanism) to SKIP100MS
in SDLog.
Support added for BMP280 device with future releases of Shimmer devices as BMP180 reaches End-Of-Production. New code polls on-board i2c devices in search of distinct BMP180/280 addresses and selects appropriate driver from there.
BMP180 driver renamed to BMPX80 (.c and .h files) accordingly.
LSM303dlhc mag fix
Fixed issue where buffer overflow caused spike in magnetometer data while streaming over Bluetooth.
Configuration file write causing some SD Card Errors when loading SDLog firmware
When batch programming Shimmer3 devices (via Consensys), several units would always return SD Error when the Reload Configuration after firmware write box was left un-ticked. This was down to the Shimmer attempting to access the SD card while being written to by Consensys.
New Features
Only respond via dock communication when the Shimmer has finished initialising
Ignore UART comms (dock or otherwise) while "initialize" state is true.
WatchDog Timer
WatchDog Timer support added. This code was recently included to enable the device to reset if it were to halt while powered on.
User button LED feedback
Battery LED lights on user press, new task started on button release - offers better user feedback.
New SD error LED sequence
An SD Error now has a RED/YELLOW led error sequence instead of BLUE/GREEN. This change comes in light of several use cases where differentiating between RTC error and SD error has been difficult.
Startup duration extended
SDLog startup duration now matches that of LogAndStream. This added delay is an effort to replicate the user feedback given in LogAndStream to improve usability. Also, longer initial delay will help give Shimmer time to settle voltage levels on startup.
LogAndStream_Shimmer3_v0.8.0
LogAndStream v0.8.0
Public Release
This release is a major update to v0.7.0 with the following updates/improvements:
Bug Fixes
Firmware mis-calculating sampling rate in SD header
Firmware's FreqDiv() function set to use round(clockFreq / num_in) instead of ceil(clockFreq / num_in) - was changing sampling rate between sessions as the resulting output of FreqDiv() did not match that set by Consensys.
GSR range change not retained after power-cycle
GSR range was being reset on each power cycle due to incorrect logic operation not overwriting old data.
ExG idle current consumption >20mA
All ExG boards (SR37, SR47 and SR59) - Normal P2.0 output conflicting with DRY pin on ADS chips. Changed to input (on MSP430) for these boards. Current draw at idle is now correct (~2mA).
ADC channel-read updates
Customers reported spiky PPG data when recording with no PPG sensor enabled. Spikes were attributed to a combination of:
- Periodic Battery read
- Open circuit on PPG line picking up ongoing ADC operations (crosstalk).
Strong crosstalk/coupling between the Low-Noise Accelerometer and PPG channels was also observed when either Battery, A6, A7 or A15 were not enabled. Some level of debugging and improving later, much of the observed crosstalk is still present but we have decided this to be a limitation of the ADC's hardware rather than software/firmware at this point.
GSR
Customers reported periodic spikes in GSR while streaming. Issue was more notable when Shimmer device was also docked as it was discovered that DMA polling of the battery voltage caused GSR ADC values to corrupt. Change includes tweaking both ADC and DMA settings to allocate read battery values to alternative ADC memory space and enable DMA when GSR is in use.
BMP180/280 Support
BMP180 polling at very high resolution caused an issue whereby the first sample was always zero. Resolved by changing SKIP50MS
definition flag (and associated timing mechanism) to SKIP65MS
in LogAndStream.
Support added for BMP280 device with future releases of Shimmer devices as BMP180 reaches End-Of-Production. New code polls on-board i2c devices in search of distinct BMP180/280 addresses and selects appropriate driver from there.
BMP180 driver renamed to BMPX80 (.c and .h files) accordingly.
LSM303dlhc mag fix
Fixed issue where buffer overflow caused spike in magnetometer data while streaming over Bluetooth.
New Features
In-stream status byte updated
Status byte now also includes SD_IN_SLOT (true/false) and SD_ERROR (true/false) flags. Helps aid user feedback in Consensys over Bluetooth.
SD Error LED sequence
SD error LED sequence (RED/YELLOW) now added to indicate SD error whenever access is requested during use. This feature was added to emulate SD card access error feedback like that in SDLog. Bit is configurable through Consensys via infomem bit SDH_SDERROR_EN in NV_SD_TRIAL_CONFIG0, the corresponding bit is also stored in sdlog.cfg file as "sd_error_enable=0/1"
Infomem bytes not updating when SD Error present
The configuration and calibration bytes set by Consensys were not being held by the Shimmer after undock or power cycle and kept reverting to bad values when an SD error was present (but SD card was in slot). With no SD card in the slot the bytes had no trouble saving to Infomem, this functionality has now been replicated for the case where SD card is present but presents an ERROR.
Only respond via dock communication when the Shimmer has finished initialising
Ignore UART comms (dock or otherwise) while "initialize" state is true.
WatchDog Timer
WatchDog Timer support added. This code was recently included to enable the device to reset if it were to halt while powered on.
User button LED feedback
Battery LED lights on user press, new task started on button release - offers better user feedback.