4.1.14 - Miscellaneous [U3 Datasheet]
The following are special channels, used with the get/put config IOTypes, to read/write the calibration memory and user memory:
LJ_chCAL_CONSTANTS // x1 points to an array with 20 doubles.
LJ_chUSER_MEM // x1 points to an array with 256 bytes.
LJ_chCAL_CONSTANTS makes 5 calls to the low-level ReadCal or EraseCal/WriteCal functions to do a consecutive read or erase/write of 5x 32-byte blocks of calibration memory, or 160 bytes total. Those bytes represent 20x 64-bit fixed point values in hardware, but are passed to/from the UD as 20 doubles.
LJ_chUSER_MEM makes 8 calls to the low-level ReadMem or EraseMem/WriteMem functions to do a consecutive read or erase/write of 8x 32-byte. This function accesses the first 256 bytes of user-mem. The second 256 bytes can only be accessed using the low-level functions. blocks of user memory.
For more information, see the low-level descriptions for ReadMem, WriteMem, EraseMem, and see the Memory example in the VC6_LJUD archive. Note that this non-volatile flash memory has an erase cycle rating of 20k/100k (minimum/typical) so you do not want to erase & write in a fast loop for very long.
The following wait IOType is used to create a delay between other actions:
LJ_ioPUT_WAIT // Channel ignored. Value = 0-4194176 microseconds.
Any value (in microseconds) from 0-4194176 can be passed, but the actual resolution is 128 microseconds (U3C = 128 µs, U3B = 64 µs, U3A = 128 µs).
This is typically used to put a small delay between two actions that will execute in the same low-level Feedback command. It is useful when the desired delay is less than what can be accomplished through software.
For example, a 1.024 millisecond pulse can be created by executing a single Add/Go/Get block that sequentially requests to set FIO4 to output-high, wait 1024 microseconds, then set FIO4 to output-low.