I am using BL4S200. I want to use some of bytes to hold some critical parameters
using user block. However, I don't know how to find address offset free for
me because I don't want to use adc calibration, and some other reserved
space. anybody know how to do it.
Basically I only have 100 bytes for my parameters, but when I use
writeuserblock, it takes the time longer than I expect and also it looks like to
reduce my program speed because my serial communication takes longer time. I
found another function writeuserblockarray, which one I can use and which one is
better?
Thanks a lot.
user block
Started by ●December 7, 2016
Reply by ●December 7, 20162016-12-07
The libraries reserve space at the top of the UserBlock using the macro
ZWORLD_RESERVED_SIZE. You should place your data at offset 0 (the start of the
UserBlock).
How often are you writing data? How long is it taking? You should be sure to write all of the bytes in a single call to the function. Because of how the library maintains mirrored UserBlocks (to always ensure a valid UserBlock) it can take awhile to update even a small portion of the data. I would recommend only writing when necessary, such as when you're saving configuration information.
If you need frequent updates, maybe you should use a variable in nvram, created by using the bbram keyword (see Samples/RestartVars/BatteryRAM).
writeUserBlockArray() is useful if you need to write a sequence of data from multiple sources at one time.
-Tom
On Dec 7, 2016, at 12:06 PM, y...@omniverter.com [rabbit-semi] wrote:
> I am using BL4S200. I want to use some of bytes to hold some critical parameters using user block. However, I don't know how to find address offset free for me because I don't want to use adc calibration, and some other reserved space. anybody know how to do it.
>
> Basically I only have 100 bytes for my parameters, but when I use writeuserblock, it takes the time longer than I expect and also it looks like to reduce my program speed because my serial communication takes longer time. I found another function writeuserblockarray, which one I can use and which one is better?
How often are you writing data? How long is it taking? You should be sure to write all of the bytes in a single call to the function. Because of how the library maintains mirrored UserBlocks (to always ensure a valid UserBlock) it can take awhile to update even a small portion of the data. I would recommend only writing when necessary, such as when you're saving configuration information.
If you need frequent updates, maybe you should use a variable in nvram, created by using the bbram keyword (see Samples/RestartVars/BatteryRAM).
writeUserBlockArray() is useful if you need to write a sequence of data from multiple sources at one time.
-Tom
On Dec 7, 2016, at 12:06 PM, y...@omniverter.com [rabbit-semi] wrote:
> I am using BL4S200. I want to use some of bytes to hold some critical parameters using user block. However, I don't know how to find address offset free for me because I don't want to use adc calibration, and some other reserved space. anybody know how to do it.
>
> Basically I only have 100 bytes for my parameters, but when I use writeuserblock, it takes the time longer than I expect and also it looks like to reduce my program speed because my serial communication takes longer time. I found another function writeuserblockarray, which one I can use and which one is better?