From 977e3415b368d5e6733b08b516b36f2b79ceec41 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Wed, 1 Mar 2023 11:02:32 +0100 Subject: [PATCH] Idler+Selector homing speeds: writeable registers --- src/logic/cut_filament.cpp | 2 +- src/modules/globals.cpp | 2 ++ src/modules/globals.h | 10 ++++++++++ src/modules/idler.cpp | 4 ++-- src/modules/selector.cpp | 4 ++-- src/registers.cpp | 12 ++++++------ version.cmake | 2 +- 7 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/logic/cut_filament.cpp b/src/logic/cut_filament.cpp index 0698696..926639b 100644 --- a/src/logic/cut_filament.cpp +++ b/src/logic/cut_filament.cpp @@ -110,7 +110,7 @@ bool CutFilament::StepInner() { ms::selector.SetCurrents(mg::globals.CutIRunCurrent(), config::selector.iHold); // lower move speed savedSelectorFeedRate_mm_s = mg::globals.SelectorFeedrate_mm_s().v; - mg::globals.SetSelectorFeedrate_mm_s(config::selectorHomingFeedrate.v); + mg::globals.SetSelectorFeedrate_mm_s(mg::globals.SelectorHomingFeedrate_mm_s().v); MoveSelector(cutSlot); // let it cut :) } break; diff --git a/src/modules/globals.cpp b/src/modules/globals.cpp index ab0ba6a..8ec5488 100644 --- a/src/modules/globals.cpp +++ b/src/modules/globals.cpp @@ -30,8 +30,10 @@ void Globals::Init() { ResetPulleyUnloadFeedrate(); ResetSelectorFeedrate(); + ResetSelectorHomingFeedrate(); ResetIdlerFeedrate(); + ResetIdlerHomingFeedrate(); ResetCutIRunCurrent(); } diff --git a/src/modules/globals.h b/src/modules/globals.h index 4748b10..701f4be 100644 --- a/src/modules/globals.h +++ b/src/modules/globals.h @@ -91,6 +91,14 @@ public: void ResetIdlerFeedrate() { idlerFeedrate_deg_s = config::idlerFeedrate.v; } void SetIdlerFeedrate_deg_s(uint16_t idlerFR_deg_s) { idlerFeedrate_deg_s = idlerFR_deg_s; } + config::U_mm_s SelectorHomingFeedrate_mm_s() const { return config::U_mm_s({ (long double)selectorHomingFeedrate_mm_s }); } + void ResetSelectorHomingFeedrate() { selectorHomingFeedrate_mm_s = config::selectorHomingFeedrate.v; } + void SetSelectorHomingFeedrate_mm_s(uint16_t selectorFR_mm_s) { selectorHomingFeedrate_mm_s = selectorFR_mm_s; } + + config::U_deg_s IdlerHomingFeedrate_deg_s() const { return config::U_deg_s({ (long double)idlerHomingFeedrate_deg_s }); } + void ResetIdlerHomingFeedrate() { idlerHomingFeedrate_deg_s = config::idlerHomingFeedrate.v; } + void SetIdlerHomingFeedrate_deg_s(uint16_t idlerFR_deg_s) { idlerHomingFeedrate_deg_s = idlerFR_deg_s; } + /// @returns current StallGuard threshold for an axis uint8_t StallGuardThreshold(config::Axis axis) const; /// Stores the new StallGuard threshold for an axis into EEPROM (does not affect the current state of TMC drivers at all) @@ -118,8 +126,10 @@ private: uint16_t pulleyUnloadFeedrate_mm_s; uint16_t selectorFeedrate_mm_s; + uint16_t selectorHomingFeedrate_mm_s; uint16_t idlerFeedrate_deg_s; + uint16_t idlerHomingFeedrate_deg_s; uint8_t cutIRunCurrent; }; diff --git a/src/modules/idler.cpp b/src/modules/idler.cpp index 5d2bb62..eac5dbf 100644 --- a/src/modules/idler.cpp +++ b/src/modules/idler.cpp @@ -21,7 +21,7 @@ void Idler::PrepareMoveToPlannedSlot() { void Idler::PlanHomingMoveForward() { mm::motion.PlanMove(mm::unitToAxisUnit(config::idlerLimits.lenght * 2), - mm::unitToAxisUnit(config::idlerHomingFeedrate)); + mm::unitToAxisUnit(mg::globals.IdlerHomingFeedrate_deg_s())); dbg_logic_P(PSTR("Plan Homing Idler Forward")); } @@ -30,7 +30,7 @@ void Idler::PlanHomingMoveBack() { mm::motion.SetPosition(mm::Idler, mm::unitToSteps(config::idlerLimits.lenght)); axisStart = mm::axisUnitToTruncatedUnit(mm::motion.CurPosition()); mm::motion.PlanMove(mm::unitToAxisUnit(-config::idlerLimits.lenght * 2), - mm::unitToAxisUnit(config::idlerHomingFeedrate)); + mm::unitToAxisUnit(mg::globals.IdlerHomingFeedrate_deg_s())); dbg_logic_P(PSTR("Plan Homing Idler Back")); } diff --git a/src/modules/selector.cpp b/src/modules/selector.cpp index 549657f..d645ddf 100644 --- a/src/modules/selector.cpp +++ b/src/modules/selector.cpp @@ -29,7 +29,7 @@ void Selector::PlanHomingMoveBack() { mm::motion.SetPosition(mm::Selector, 0); axisStart = mm::axisUnitToTruncatedUnit(mm::motion.CurPosition()); mm::motion.PlanMove(mm::unitToAxisUnit(config::selectorLimits.lenght * 2), - mm::unitToAxisUnit(config::selectorHomingFeedrate)); + mm::unitToAxisUnit(mg::globals.SelectorHomingFeedrate_mm_s())); dbg_logic_P(PSTR("Plan Homing Selector Back")); } @@ -107,7 +107,7 @@ bool Selector::Step() { // idler is ok, we can start homing the selector state = HomeForward; mm::motion.PlanMove(mm::unitToAxisUnit(-config::selectorLimits.lenght * 2), - mm::unitToAxisUnit(config::selectorHomingFeedrate)); + mm::unitToAxisUnit(mg::globals.SelectorHomingFeedrate_mm_s())); } return false; case HomeForward: diff --git a/src/registers.cpp b/src/registers.cpp index 838cf21..012ae92 100644 --- a/src/registers.cpp +++ b/src/registers.cpp @@ -151,8 +151,8 @@ | 0x12h 18 | uint16 | Selector_nominal_feedrate | 0000h 0 | 002dh 45 | unit mm/s | Read / Write | M707 A0x12 | M708 A0x12 Xnnnn | 0x13h 19 | uint16 | Idler_nominal_feedrate | 0000h 0 | 012ch 300 | unit deg/s | Read / Write | M707 A0x13 | M708 A0x13 Xnnnn | 0x14h 20 | uint16 | Pulley_slow_feedrate | 0000h 0 | 0014h 20 | unit mm/s | Read / Write | M707 A0x14 | M708 A0x14 Xnnnn -| 0x15h 21 | uint16 | Selector_homing_feedrate | 0000h 0 | 001eh 30 | unit mm/s | Read (Write) | M707 A0x15 | (M708 A0x15 Xnnnn) -| 0x16h 22 | uint16 | Idler_homing_feedrate | 0000h 0 | 0109h 265 | unit deg/s | Read (Write) | M707 A0x16 | (M708 A0x16 Xnnnn) +| 0x15h 21 | uint16 | Selector_homing_feedrate | 0000h 0 | 001eh 30 | unit mm/s | Read / Write | M707 A0x15 | (M708 A0x15 Xnnnn) +| 0x16h 22 | uint16 | Idler_homing_feedrate | 0000h 0 | 0109h 265 | unit deg/s | Read / Write | M707 A0x16 | (M708 A0x16 Xnnnn) | 0x17h 23 | uint8 | Pulley_sg_thrs__R | 00h 0 | 08h 8 | | Read / Write Persistent | M707 A0x17 | M708 A0x17 Xnn | 0x18h 24 | uint8 | Selector_sg_thrs_R | 00h 0 | 03h 3 | | Read / Write Persistent | M707 A0x18 | M708 A0x18 Xnn | 0x19h 25 | uint8 | Idler_sg_thrs_R | 00h 0 | 06h 6 | | Read / Write Persistent | M707 A0x19 | M708 A0x19 Xnn @@ -334,13 +334,13 @@ static const RegisterRec registers[] /*PROGMEM*/ = { 2), // 0x15 Selector homing feedrate [mm/s] RW RegisterRec( - []() -> uint16_t { return config::selectorHomingFeedrate.v; }, - //@@TODO please update documentation as well + []() -> uint16_t { return mg::globals.SelectorHomingFeedrate_mm_s().v; }, + [](uint16_t d) { mg::globals.SetSelectorHomingFeedrate_mm_s(d); }, 2), // 0x16 Idler homing feedrate [deg/s] RW RegisterRec( - []() -> uint16_t { return config::idlerHomingFeedrate.v; }, - //@@TODO please update documentation as well + []() -> uint16_t { return mg::globals.IdlerHomingFeedrate_deg_s().v; }, + [](uint16_t d) { mg::globals.SetIdlerHomingFeedrate_deg_s(d); }, 2), // 0x17 Pulley sg_thrs threshold RW diff --git a/version.cmake b/version.cmake index 6857e8d..50cfeb8 100644 --- a/version.cmake +++ b/version.cmake @@ -10,6 +10,6 @@ set(PROJECT_VERSION_MINOR CACHE STRING "Project minor version" FORCE ) set(PROJECT_VERSION_REV - 7 + 8 CACHE STRING "Project revision" FORCE )