Skip to content

Commit 7218c24

Browse files
committed
New command for duty cycle tiltback and surge tuning
Signed-off-by: Dado Mista <dadomista@gmail.com>
1 parent 2e07fc2 commit 7218c24

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

float/float/float.c

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2282,6 +2282,7 @@ enum {
22822282
FLOAT_COMMAND_EXPERIMENT = 11, // generic cmd for sending data, used for testing/tuning new features
22832283
FLOAT_COMMAND_LOCK = 12,
22842284
FLOAT_COMMAND_HANDTEST = 13,
2285+
FLOAT_COMMAND_TUNE_TILT = 14,
22852286
FLOAT_COMMAND_FLYWHEEL = 22,
22862287
} float_commands;
22872288

@@ -2708,6 +2709,40 @@ static void cmd_tune_defaults(data *d){
27082709
}
27092710
}
27102711

2712+
/**
2713+
* cmd_runtime_tune_tilt Extract settings from 20byte message but don't write to EEPROM!
2714+
*/
2715+
static void cmd_runtime_tune_tilt(data *d, unsigned char *cfg, int len)
2716+
{
2717+
unsigned int flags = cfg[0];
2718+
bool duty_buzz = flags & 0x1;
2719+
d->float_conf.is_dutybuzz_enabled = duty_buzz;
2720+
float retspeed = cfg[1];
2721+
if (retspeed > 0) {
2722+
d->float_conf.tiltback_return_speed = retspeed / 10;
2723+
d->tiltback_return_step_size = d->float_conf.tiltback_return_speed / d->float_conf.hertz;
2724+
}
2725+
d->float_conf.tiltback_duty = (float)cfg[2] / 100.0;
2726+
d->float_conf.tiltback_duty_angle = (float)cfg[3] / 10.0;
2727+
d->float_conf.tiltback_duty_speed = (float)cfg[4] / 10.0;
2728+
2729+
if (len >= 6) {
2730+
float surge_duty_start = cfg[5];
2731+
if (surge_duty_start > 0) {
2732+
d->float_conf.surge_duty_start = surge_duty_start / 100.0;
2733+
d->float_conf.surge_angle = (float)cfg[6] / 20.0;
2734+
d->surge_angle = d->float_conf.surge_angle;
2735+
d->surge_angle2 = d->float_conf.surge_angle * 2;
2736+
d->surge_angle3 = d->float_conf.surge_angle * 3;
2737+
d->surge_enable = d->surge_angle > 0;
2738+
}
2739+
beep_alert(d, 1, 1);
2740+
}
2741+
else {
2742+
beep_alert(d, 3, 0);
2743+
}
2744+
}
2745+
27112746
/**
27122747
* cmd_runtime_tune_other Extract settings from 20byte message but don't write to EEPROM!
27132748
*/
@@ -2976,6 +3011,17 @@ static void on_command_received(unsigned char *buffer, unsigned int len) {
29763011
}
29773012
return;
29783013
}
3014+
case FLOAT_COMMAND_TUNE_TILT: {
3015+
if (len >= 10) {
3016+
cmd_runtime_tune_tilt(d, &buffer[2], len - 2);
3017+
}
3018+
else {
3019+
if (!VESC_IF->app_is_output_disabled()) {
3020+
VESC_IF->printf("Float App: Command length incorrect (%d)\n", len);
3021+
}
3022+
}
3023+
return;
3024+
}
29793025
case FLOAT_COMMAND_RC_MOVE: {
29803026
if (len == 6) {
29813027
cmd_rc_move(d, &buffer[2]);

0 commit comments

Comments
 (0)