mirror of https://github.com/rusefi/bldc.git
Added UAVCAN raw RPM command
This commit is contained in:
parent
36c333cc03
commit
5d385c046b
|
@ -204,6 +204,7 @@ int32_t confgenerator_serialize_appconf(uint8_t *buffer, const app_configuration
|
|||
buffer[ind++] = conf->can_mode;
|
||||
buffer[ind++] = (uint8_t)conf->uavcan_esc_index;
|
||||
buffer[ind++] = conf->uavcan_raw_mode;
|
||||
buffer_append_float32_auto(buffer, conf->uavcan_raw_rpm_max, &ind);
|
||||
buffer[ind++] = conf->servo_out_enable;
|
||||
buffer[ind++] = conf->kill_sw_mode;
|
||||
buffer[ind++] = conf->app_to_use;
|
||||
|
@ -223,7 +224,7 @@ int32_t confgenerator_serialize_appconf(uint8_t *buffer, const app_configuration
|
|||
buffer[ind++] = conf->app_ppm_conf.multi_esc;
|
||||
buffer[ind++] = conf->app_ppm_conf.tc;
|
||||
buffer_append_float32_auto(buffer, conf->app_ppm_conf.tc_max_diff, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_ppm_conf.max_erpm_for_dir, &ind);
|
||||
buffer_append_float16(buffer, conf->app_ppm_conf.max_erpm_for_dir, 1, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_ppm_conf.smart_rev_max_duty, &ind);
|
||||
buffer_append_float32_auto(buffer, conf->app_ppm_conf.smart_rev_ramp_time, &ind);
|
||||
buffer[ind++] = conf->app_adc_conf.ctrl_type;
|
||||
|
@ -574,6 +575,7 @@ bool confgenerator_deserialize_appconf(const uint8_t *buffer, app_configuration
|
|||
conf->can_mode = buffer[ind++];
|
||||
conf->uavcan_esc_index = buffer[ind++];
|
||||
conf->uavcan_raw_mode = buffer[ind++];
|
||||
conf->uavcan_raw_rpm_max = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->servo_out_enable = buffer[ind++];
|
||||
conf->kill_sw_mode = buffer[ind++];
|
||||
conf->app_to_use = buffer[ind++];
|
||||
|
@ -593,7 +595,7 @@ bool confgenerator_deserialize_appconf(const uint8_t *buffer, app_configuration
|
|||
conf->app_ppm_conf.multi_esc = buffer[ind++];
|
||||
conf->app_ppm_conf.tc = buffer[ind++];
|
||||
conf->app_ppm_conf.tc_max_diff = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_ppm_conf.max_erpm_for_dir = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_ppm_conf.max_erpm_for_dir = buffer_get_float16(buffer, 1, &ind);
|
||||
conf->app_ppm_conf.smart_rev_max_duty = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_ppm_conf.smart_rev_ramp_time = buffer_get_float32_auto(buffer, &ind);
|
||||
conf->app_adc_conf.ctrl_type = buffer[ind++];
|
||||
|
@ -928,6 +930,7 @@ void confgenerator_set_defaults_appconf(app_configuration *conf) {
|
|||
conf->can_mode = APPCONF_CAN_MODE;
|
||||
conf->uavcan_esc_index = APPCONF_UAVCAN_ESC_INDEX;
|
||||
conf->uavcan_raw_mode = APPCONF_UAVCAN_RAW_MODE;
|
||||
conf->uavcan_raw_rpm_max = APPCONF_UAVCAN_RAW_RPM_MAX;
|
||||
conf->servo_out_enable = APPCONF_SERVO_OUT_ENABLE;
|
||||
conf->kill_sw_mode = APPCONF_KILL_SW_MODE;
|
||||
conf->app_to_use = APPCONF_APP_TO_USE;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
// Constants
|
||||
#define MCCONF_SIGNATURE 2686986464
|
||||
#define APPCONF_SIGNATURE 763356168
|
||||
#define APPCONF_SIGNATURE 3733512279
|
||||
|
||||
// Functions
|
||||
int32_t confgenerator_serialize_mcconf(uint8_t *buffer, const mc_configuration *conf);
|
||||
|
|
|
@ -854,7 +854,8 @@ typedef enum {
|
|||
typedef enum {
|
||||
UAVCAN_RAW_MODE_CURRENT = 0,
|
||||
UAVCAN_RAW_MODE_CURRENT_NO_REV_BRAKE,
|
||||
UAVCAN_RAW_MODE_DUTY
|
||||
UAVCAN_RAW_MODE_DUTY,
|
||||
UAVCAN_RAW_MODE_RPM
|
||||
} UAVCAN_RAW_MODE;
|
||||
|
||||
typedef enum {
|
||||
|
@ -883,6 +884,7 @@ typedef struct {
|
|||
CAN_MODE can_mode;
|
||||
uint8_t uavcan_esc_index;
|
||||
UAVCAN_RAW_MODE uavcan_raw_mode;
|
||||
float uavcan_raw_rpm_max;
|
||||
|
||||
// Application to use
|
||||
app_use app_to_use;
|
||||
|
|
|
@ -510,7 +510,9 @@ static void handle_esc_raw_command(CanardInstance* ins, CanardRxTransfer* transf
|
|||
if (cmd.cmd.len > app_get_configuration()->uavcan_esc_index) {
|
||||
float raw_val = ((float)cmd.cmd.data[app_get_configuration()->uavcan_esc_index]) / 8192.0;
|
||||
|
||||
switch (app_get_configuration()->uavcan_raw_mode) {
|
||||
volatile const app_configuration *conf = app_get_configuration();
|
||||
|
||||
switch (conf->uavcan_raw_mode) {
|
||||
case UAVCAN_RAW_MODE_CURRENT:
|
||||
mc_interface_set_current_rel(raw_val);
|
||||
break;
|
||||
|
@ -527,6 +529,10 @@ static void handle_esc_raw_command(CanardInstance* ins, CanardRxTransfer* transf
|
|||
mc_interface_set_duty(raw_val);
|
||||
break;
|
||||
|
||||
case UAVCAN_RAW_MODE_RPM:
|
||||
mc_interface_set_pid_speed(raw_val * conf->uavcan_raw_rpm_max);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue