registers: fix unit of acceleration values

When reading or setting the value, the driver is expecting steps_t which is a axis scaled value.

This increases the memory footprint quite a bit. But now if you set 800mm/s2, you should get a similar value back.

Flash: +132 bytes
SRAM: 0 bytes
pull/354/head
Guðni Már Gilbert 2024-12-25 14:28:12 +00:00 committed by DRracer
parent e28ab28824
commit b8ed9abc7f
1 changed files with 15 additions and 6 deletions

View File

@ -327,18 +327,27 @@ static const RegisterRec registers[] PROGMEM = {
// 0xe Pulley acceleration [mm/s2] RW // 0xe Pulley acceleration [mm/s2] RW
RegisterRec( RegisterRec(
[]() -> uint16_t { return mm::motion.Acceleration(config::Pulley); }, []() -> uint16_t {
[](uint16_t d) { mm::motion.SetAcceleration(config::Pulley, d); }, mm::steps_t val = mm::motion.Acceleration(config::Pulley);
return mm::axisUnitToTruncatedUnit<config::U_mm_s2>( mm::P_accel_t({ val }));
},
[](uint16_t d) { mm::motion.SetAcceleration(config::Pulley, mm::unitToSteps<mm::P_accel_t>(config::U_mm_s2({ (long double)d }))); },
2), 2),
// 0xf Selector acceleration [mm/s2] RW // 0xf Selector acceleration [mm/s2] RW
RegisterRec( RegisterRec(
[]() -> uint16_t { return mm::motion.Acceleration(config::Selector); }, []() -> uint16_t {
[](uint16_t d) { mm::motion.SetAcceleration(config::Selector, d); }, mm::steps_t val = mm::motion.Acceleration(config::Selector);
return mm::axisUnitToTruncatedUnit<config::U_mm_s2>( mm::S_accel_t({ val }));
},
[](uint16_t d) { (mm::motion.SetAcceleration(config::Selector, mm::unitToSteps<mm::S_accel_t>(config::U_mm_s2({ (long double)d })))); },
2), 2),
// 0x10 Idler acceleration [deg/s2] RW // 0x10 Idler acceleration [deg/s2] RW
RegisterRec( RegisterRec(
[]() -> uint16_t { return mm::motion.Acceleration(config::Idler); }, []() -> uint16_t {
[](uint16_t d) { mm::motion.SetAcceleration(config::Idler, d); }, mm::steps_t val = mm::motion.Acceleration(config::Idler);
return mm::axisUnitToTruncatedUnit<config::U_deg_s2>( mm::I_accel_t({ val }));
},
[](uint16_t d) { mm::motion.SetAcceleration(config::Idler, mm::unitToSteps<mm::I_accel_t>(config::U_deg_s2({ (long double)d }))); },
2), 2),
// 0x11 Pulley load feedrate [mm/s] RW // 0x11 Pulley load feedrate [mm/s] RW