Watchdog (U3 and U6 Only)
Description
Controls a firmware based watchdog timer. Unattended systems requiring maximum up-time might use this capability to reset the device or the entire system. When any of the options are enabled, an internal timer is enabled which resets on any incoming USB communication. If this timer reaches the defined TimeoutPeriod before being reset, the specified actions will occur. Note that while streaming, data is only going out, so some other command will have to be called periodically to reset the watchdog timer.
The watchdog settings (bytes 7-10) are stored in non-volatile flash memory, so every call to this function where settings are written causes a flash erase/write. The flash has a rated endurance of at least 20000 writes, which is plenty for reasonable operation, but if this function is called in a high-speed loop the flash could be damaged.
U3
Requires U3 hardware version 1.21.
If the watchdog is accidentally configured to reset the processor with a very low timeout period (such as 1 second), it could be difficult to establish any communication with the device. In such a case, the reset-to-default jumper can be used to turn off the watchdog (sets bytes 7-10 to 0). Power up the U3 with a short from FIO6 to SPC (FIO2 to SCL on U3 1.20/1.21), then remove the jumper and power cycle the device again. This also affects the parameters in the ConfigU3 function.
U6
If the watchdog is accidentally configured to reset the processor with a very low timeout period (such as 1 second), it could be difficult to establish any communication with the device. In such a case, the reset-to-default jumper can be used to turn off the watchdog (sets bytes 7-10 to 0). Power up the U6 with a short from FIO2 to SPC (or VSPC), then remove the jumper and power cycle the device again. This also affects the parameters in the ConfigU6 function.
Command (U3/U6)
Command: |
|
|
Byte |
|
|
0 | Checksum8 |
|
1 | 0xF8 |
|
2 | 0×05 |
|
3 | 0×09 |
|
4 | Checksum16 (LSB) |
|
5 | Checksum16 (MSB) |
|
6 | WriteMask |
|
|
| Bit 0: Write |
7 | WatchdogOptions |
|
|
| Bit 5: Reset on Timeout |
|
| Bit 4: Set DIO State on Timeout (U3 only) |
8-9 | TimeoutPeriod |
|
10 | DIOConfig |
|
|
| Bit 7: State |
|
| Bit 0-4: DIO# |
11 | Reserved |
|
12 | Reserved |
|
13 | Reserved |
|
14 | Reserved |
|
15 | Reserved |
|
|
|
|
Response: |
|
|
Byte |
|
|
0 | Checksum8 |
|
1 | 0xF8 |
|
2 | 0×05 |
|
3 | 0×09 |
|
4 | Checksum16 (LSB) |
|
5 | Checksum16 (MSB) |
|
6 | Errorcode |
|
7 | WatchdogOptions |
|
8-9 | TimeoutPeriod |
|
10 | DIOConfig |
|
11 | Reserved |
|
12 | Reserved |
|
13 | Reserved |
|
14 | Reserved |
|
15 | Reserved |
|
WatchdogOptions: The watchdog is enabled when this byte is nonzero. Set the appropriate bits to reset the device and/or update the state of 1 digital output.
TimeoutPeriod: The watchdog timer is reset to zero on any incoming USB communication. Note that most functions consist of a write and read, but StreamData is outgoing only and does not reset the watchdog. If the watchdog timer is not reset before it counts up to TimeoutPeriod, the actions specified by WatchdogOptions will occur. The watchdog timer has a clock rate of about 1 Hz, so a TimeoutPeriod range of 3-65535 corresponds to about 3 to 65535 seconds.
DIOConfig: Determines which digital I/O is affected by the watchdog, and the state it is set to. The specified DIO must have previously been configured for output. DIO# is a value from 0-19 according to the following: 0-7 => FIO0-FIO7, 8-15 => EIO0-EIO7, 16-19 => CIO0-CIO3