diff --git a/UNIT_DO.md b/UNIT_DO.md index 25a7242..631443c 100644 --- a/UNIT_DO.md +++ b/UNIT_DO.md @@ -5,38 +5,40 @@ - Supports generating output pulses of precise length. Pins are ordered in a descending order (DOWNTO) and accessed in a packed format, -e.g. if pins 1 and 4 are selected (0b10010 on the port), the control word has -two bits (4)(1) and e.g. 0b10 means pin 4, 0b11 both. This makes accessing the +e.g. if pins 1 and 4 are selected (`0b10010` on the port), the control word has +two bits `(4)(1)` and e.g. `0b10` means pin 4, `0b11` both. This makes accessing the block of pins easier, e.g. when using them to drive a parallel bus. ## Commands -### WRITE +### WRITE (0x00) Write a value to all defined pins. *Payload:* - u16 - new value (packed) -### SET +### SET (0x01) Set pins high *Payload:* - u16 - pins to set high (packed) -### CLEAR +### CLEAR (0x02) Set pins low *Payload:* - u16 - pins to set low (packed) -### TOGGLE +### TOGGLE (0x03) Toggle selected pins (high - low) *Payload:* - u16 - pins to toggle (packed) -### PULSE -Send a pulse. The start will be aligned to 1 us or 1 ms (based on pulse length) of the internal timebase to ensure the highest length precision. (This alignment reduces time jitter.) +### PULSE (0x04) +Send a pulse. + +The start will be aligned to 1 us or 1 ms (based on pulse length) of the internal timebase to ensure the highest length precision. This alignment reduces jitter in the pulse duration. A jitter of the pulse start time is less significant, as there's already some unpredictable delay caused by the USB connection and the PC OS scheduler. *Payload:* - u16 - pins to generate the pulse on (packed) @@ -44,7 +46,7 @@ Send a pulse. The start will be aligned to 1 us or 1 ms (based on pulse length) - u8 - range (0 - milliseconds, 1 - microseconds) - u16 - duration in the selected range -*NOTE:* The microsecond range supports durations only up to 999 (1 ms), higher +*NOTE:* The microsecond range supports durations only up to 999 us, higher numbers will be divided by 1000 and use the millisecond range instead. ## Events