|
rcbench
Servo and ESC test bench: panel, IOmcu and shared C
|
A command of the SERVO screen, as the servo link takes it. More...
#include <servo_cmd.h>
Data Fields | |
| servo_cmd_kind_t | kind |
| uint16_t | value_us |
| uint16_t | min_us |
| The range the channel is configured with, carried with the command: centred on the servo's PULSE CENTRE and reaching the further of its PULSE MIN and MAX, so its midpoint – where the far end rests a surface – is the centre. value_us stays within MIN..MAX. | |
| uint16_t | max_us |
| uint16_t | slew_per_s |
| uint16_t | frame_hz |
| uint16_t | sweep_kind |
| SERVO_CMD_SWEEP's curve, as the SERVO page takes it (servo_sweep.h): the curve, thousandths of a cycle a second, command units either side of the centre and the hold at each end. | |
| uint16_t | sweep_mhz |
| uint16_t | sweep_span |
| uint16_t | sweep_dwell_ms |
| bool | ends_sweep |
| This command ends a sweep the screen was running: a HOLD, a finger on the dial, CENTRE. | |
| bool | resume |
| SERVO_CMD_SWEEP carrying on the sweep PAUSE held, from where it was held: the panel asks the IOmcu to resume it (protocol 4.6), and an older one, or one that refuses, starts the curve over. | |
| uint16_t | pause_seq |
| SERVO_CMD_HOLD: which pause it is, given back with its acknowledgement in servo_screen_sweep_held(). | |
| uint16_t | from_pause |
| The pause this command derives from – a resume of it, a repeat of that resume, a position said again under a changed profile – or 0: what the panel drops once it has let that pause go (servo_cmd_stale()). | |
| uint16_t | start_seq |
| SERVO_CMD_SWEEP: which sweep command it is, given back with the acknowledgement of a start in servo_screen_sweep_started(). | |
A command of the SERVO screen, as the servo link takes it.
| bool servo_cmd_t::ends_sweep |
This command ends a sweep the screen was running: a HOLD, a finger on the dial, CENTRE.
The panel gives it way at once over sweep writes already on the wire or queued.
| uint16_t servo_cmd_t::frame_hz |
The frame rate the profile in force runs at, in Hz. The panel writes it to the IOmcu's SERVO page, which runs the PWM target at it: every PWM output whose first channel is a surface, or from protocol 4.19 the one programming port the target names; see servo_screen_rate().
| servo_cmd_kind_t servo_cmd_t::kind |
what the command asks
| uint16_t servo_cmd_t::max_us |
the range's upper end; see min_us
| uint16_t servo_cmd_t::min_us |
The range the channel is configured with, carried with the command: centred on the servo's PULSE CENTRE and reaching the further of its PULSE MIN and MAX, so its midpoint – where the far end rests a surface – is the centre. value_us stays within MIN..MAX.
The pulse means nothing without them: 760us is the centre of a narrow servo and below the bottom of a standard one, so a command clamped against the wrong pair is a servo that does not move, or one driven past its stops. Zero on either says the sender named no range.
| uint16_t servo_cmd_t::pause_seq |
SERVO_CMD_HOLD: which pause it is, given back with its acknowledgement in servo_screen_sweep_held().
Never 0.
| uint16_t servo_cmd_t::slew_per_s |
How fast the bench may move the output, in channel-span units a second; zero is at once.
The SPEED setting, as the far end takes it. A servo goes at its own rate unless the bench ramps the command in front of it, so a speed that only moved the drawing would be a control that does nothing to the thing under test.
| uint16_t servo_cmd_t::sweep_dwell_ms |
the hold at each end, ms
| uint16_t servo_cmd_t::sweep_kind |
SERVO_CMD_SWEEP's curve, as the SERVO page takes it (servo_sweep.h): the curve, thousandths of a cycle a second, command units either side of the centre and the hold at each end.
Zero otherwise. the curve's kind
| uint16_t servo_cmd_t::sweep_mhz |
cycles a second, thousandths
| uint16_t servo_cmd_t::sweep_span |
command units either side of the centre
| uint16_t servo_cmd_t::value_us |
pulse width in microseconds, for a position