From 952705c38ceac9ff9839e65901930f6f66be7cc4 Mon Sep 17 00:00:00 2001 From: Tero Kontkanen Date: Tue, 19 Sep 2017 20:33:20 +0300 Subject: Added definitions for SM protocol V27, which adds linear interpolation of setpoint commands in buffered motion stream --- simplemotion_defs.h | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/simplemotion_defs.h b/simplemotion_defs.h index 4f1bd96..8513d59 100644 --- a/simplemotion_defs.h +++ b/simplemotion_defs.h @@ -34,6 +34,9 @@ * Version 26: * - fast SM command added (actually is also present in late V25 too, but as unofficial feature) * - watchdog timout now resets bitrate to default and aborts buffered motion + * Version 27: + * - introduced new SMP_BUFFERED_MODE parameter and optional linear interpolation of buffered setpoints + * - introduced SMP_CB1_FORCE_ENABLE flag * */ @@ -243,6 +246,21 @@ */ #define SMP_FAULT_BEHAVIOR 15 +/* SMP_BUFFERED_MODE defines the behavior in buffered motion commands: + * bits 0-3 (LSB): setpoint interpolation mode. + * bits 4-31: reserved for future use. + * + * Setpoint interpolation modes: + * 0: apply nearest setpoint (default). If there are non-setpoint commands between setpoint commands, + * these are executed in order with setpoint commands. Non-setpoint commands are executed without time delay to allow setpoint + * commands to be executed at constant frequency. + * 1: linear interpolation between setpoints. If there are non-setpoint commands between setpoint commands, + * these are executed one setpoit command in advance compared to a setpoint commands. This is a result from look-ahead buffering. + * Non-setpoint commands are executed without time delay to allow setpoint commands to be executed at constant frequency. + * + * Note: this is present only in SM protocol version 27 and later. + */ +#define SMP_BUFFERED_MODE 16 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -689,7 +707,8 @@ #define SMP_CB1_QUICKSTOP BV(2)//not implemented at the moment #define SMP_CB1_USE_TRAJPLANNER BV(3)//not implemented at the moment #define SMP_CB1_START_HOMING BV(4)//write 1 here to start homing //not implemented at the moment - #define SMP_STATIC_CBS1 (SMP_CB1_ENABLE|SMP_CB1_USE_TRAJPLANNER) + #define SMP_CB1_FORCE_ENABLE BV(5)//writing & holding value 1 here will override lack of phyiscal enable signal (SMP_CB2_ENABLE). User can force device go in enabled state when both SMP_CB1_ENABLE and aSMP_CB1_FORCE_ENABLE are set. + #define SMP_STATIC_CBS1 (SMP_CB1_ENABLE|SMP_CB1_USE_TRAJPLANNER|SMP_CB1_FORCE_ENABLE) #define SMP_CONTROL_BITS2 2534 //bitfiled values: @@ -856,6 +875,7 @@ #define DEVICE_CAPABILITY1_FB_SINCOS BV(17) #define DEVICE_CAPABILITY1_GEARING BV(18) #define DEVICE_CAPABILITY1_AUTOSETUP_COMMUTATION_SENSOR BV(19) + #define DEVICE_CAPABILITY1_BUFFERED_MOTION_LINEAR_INTERPOLATION BV(20) //read only bit field that is can be used to identify device capabilities //the list below is subject to extend -- cgit v1.2.3