PFW-1528 Intercept register 0x14

This commit syncs the 8-bit firmware with the 32-bit

Change in memory:
Flash: +56 bytes
SRAM: 0 bytes
This commit is contained in:
Guðni Már Gilbert 2023-07-06 17:17:57 +00:00 committed by DRracer
parent 079e4c9112
commit ef4efc22c3
2 changed files with 22 additions and 4 deletions

View File

@ -141,9 +141,16 @@ bool MMU2::WriteRegister(uint8_t address, uint16_t data) {
if (!WaitForMMUReady())
return false;
// special case - intercept requests of extra loading distance and perform the change even on the printer's side
if (address == 0x0b) {
// special cases - intercept requests of registers which influence the printer's behaviour too + perform the change even on the printer's side
switch (address) {
case 0x0b:
logic.PlanExtraLoadDistance(data);
break;
case 0x14:
logic.PlanPulleySlowFeedRate(data);
break;
default:
break; // do not intercept any other register writes
}
do {
@ -1040,7 +1047,7 @@ void MMU2::OnMMUProgressMsgSame(ProgressCode pc) {
// After the MMU knows the FSENSOR is triggered it will:
// 1. Push the filament by additional 30mm (see fsensorToNozzle)
// 2. Disengage the idler and push another 2mm.
MoveE(logic.ExtraLoadDistance() + 2, MMU2_LOAD_TO_NOZZLE_FEED_RATE);
MoveE(logic.ExtraLoadDistance() + 2, logic.PulleySlowFeedRate());
break;
case FilamentState::NOT_PRESENT:
// fsensor not triggered, continue moving extruder
@ -1050,7 +1057,7 @@ void MMU2::OnMMUProgressMsgSame(ProgressCode pc) {
// than 450mm because the firmware will ignore too long extrusions
// for safety reasons. See PREVENT_LENGTHY_EXTRUDE.
// Use 350mm to be safely away from the prevention threshold
MoveE(350.0f, MMU2_LOAD_TO_NOZZLE_FEED_RATE);
MoveE(350.0f, logic.PulleySlowFeedRate());
}
break;
default:

View File

@ -122,6 +122,17 @@ public:
return initRegs8[0];
}
/// Sets the Pulley slow feed rate to be reported to the MMU.
/// Beware - this call doesn't send anything to the MMU.
/// The MMU gets the newly set value either by a communication restart or via an explicit WriteRegister call
inline void PlanPulleySlowFeedRate(uint8_t psfr) {
initRegs8[1] = psfr;
}
/// @returns the currently preset Pulley slow feed rate
inline uint8_t PulleySlowFeedRate() const {
return initRegs8[1]; // even though MMU register 0x14 is 16bit, reasonable speeds are way below 255mm/s - saving space ;)
}
/// Step the state machine
StepStatus Step();