D.R.racer
1da60f7b42
Bump version to 2.1.6
...
new features coming:
- Cut Filament
- Eject Filament
- probably also settable motor currents
2022-12-29 20:20:15 +01:00
D.R.racer
257e458099
Finish EjectFilament operation
2022-12-29 20:20:10 +01:00
D.R.racer
88a489e3cb
Add runtime iHold <= iRun check
...
+ refactor TMC register compilation (saves 26B)
+ update currents registers range documentation
+ update currents even in MovableBase::InitMovementNoReinitAxis
2022-12-29 11:27:34 +01:00
D.R.racer
425f89c862
Optimization - save 30B
2022-12-29 11:27:34 +01:00
D.R.racer
0bca66aeb5
Allow runtime config/register motor/axis iRun current
...
This commit introduces a new set of registers 0x1e, 0x1f and 0x20 which allow reading and writing iRun current values for each axis/motor.
Please note the register contains raw TMC2130 iRun value which needs to be translated into mA to be understandable by people.
Translation table of iRun -> mA is present in tmc2130.cpp for now.
2022-12-29 11:27:34 +01:00
D.R.racer
9c9322d02f
Remove old commented code
2022-12-29 09:01:27 +01:00
D.R.racer
b16ac63c5d
Compute vSense dynamically from iRun/iHold
2022-12-29 09:01:27 +01:00
D.R.racer
7e8ad83e25
Distinguish iRun<32
...
as per suggestion from @leptun
2022-12-28 12:15:47 +01:00
D.R.racer
e469929c1c
Remove ErrEngagingIdler state
2022-12-28 12:15:47 +01:00
D.R.racer
ada4ed3dda
Workaround INVALID_TOOL error codes
...
May meed some more work to recover gracefully, not sure if it is just a unit test "issue" or a deeper problem in the state machines.
2022-12-28 12:15:47 +01:00
D.R.racer
a52f833223
Fix and tune CutFilament + unit tests
...
Several issues addressed in this PR:
- CutFilament tuning + error recovery
- introduce register 0x1d (cut filament selector iRun current level)
- optimize setting iRun and iHold currents in the FW
- CutFilament unit test fixed
2022-12-28 12:15:47 +01:00
D.R.racer
b6c3cba396
Refactor CheckFINDAvsEEPROM and setup2
2022-12-27 12:41:29 +01:00
D.R.racer
98daf765af
Separate NoCommand and StartUp (new state machine)
...
The reasons for this change are:
- NoCommand is used during the lifetime of the firmware as a fallback in case an unknown command is received (simplifies command handling code). It must remain not doing anything.
- StartUp became a complex infrastructure which needs to "live" until an error is fixed (if any). That requires a "standard" StateInner() function which waits for the user to resolve the error.
Unit tests renamed as well.
2022-12-27 12:41:29 +01:00
Guðni Már Gilbert
35344f5a5e
If Finda is not pressed, don't report Unload Manually error
2022-12-27 12:41:29 +01:00
Guðni Már Gilbert
8f212a5cb3
Add unit tests
2022-12-27 12:41:29 +01:00
Guðni Már Gilbert
4d38d1f620
PFW-1423 add Retry handling in NoCommand for init error
2022-12-27 12:41:29 +01:00
D.R.racer
3988a9aff0
Improve logging in unit tests' helpers.ipp
...
Based on work from @gudnimg: https://github.com/gudnimg/Prusa-Firmware-MMU-Private/tree/MMU-206
2022-12-20 10:35:59 +01:00
D.R.racer
3e9410c4f9
Fix: make sure VerifyEnvironmentState checks filamentLoaded reliably
...
... and improve unit tests
2022-12-20 06:32:51 +01:00
Guðni Már Gilbert
964ef0ce3d
Merge pull request #250 from gudnimg/Sync-with-MK3
...
Bump prusa3dboards and don't build with debug symbols when using VScode
2022-12-18 17:55:39 +00:00
Guðni Már Gilbert
6818ac3538
Sync with MK3
...
- Bump prusa3dboards package
- Set CMake Build Type to Release, otherwise building with this kit doesn't work (debug symbols don't fit)
- Rename kit to be same as on MK3 firmware
2022-12-18 17:41:22 +00:00
Guðni Már Gilbert
6a4ebdaee6
optimisation: inline functions to reduce size
...
Change in memory:
Flash: -394 bytes
SRAM: 0 bytes
Breakdown:
|------------------------------------------------------------|
| Function name | Flash reduction |
|------------------------------------------| ----------------|
|CommandBase::FinishedOK | 182 bytes |
|MovableBase::InitMovementNoReinitAxis | 60 bytes |
|TMC2130::CheckForErrors | 36 bytes |
|Protocol::UInt16ToHex | 32 bytes |
|AddErrorAxisBit | 24 bytes |
|Application::CheckManualOperation | 22 bytes |
|CommandBase::GoToErrEngagingIdler | 12 bytes |
|Application::PlanCommand | 12 bytes |
|Pulley::FinishHomingAndPlanMoveToParkPos | 8 bytes |
|Pulley::InitAxis | 4 bytes |
|------------------------------------------------------------|
2022-11-19 11:55:46 +01:00
D.R.racer
c0189d81af
Distinguish among different error states when recovering ToolChange
...
Some errors need specific recovery, it seems it is no longer possible to "just" retry.
2022-11-18 22:42:05 +01:00
D.R.racer
c8c39f7b69
Make sure ToolChange moves Selector to desired slot
...
and verify correct behaviour in unit tests - especially when Selector's start position is at a different slot.
2022-11-18 22:29:01 +01:00
Guðni Már Gilbert
2f6e364ad0
optimisation: compiler should not inline SetFilamentLoaded
...
Change in memory:
Flash: -130 bytes
SRAM: 0 bytes
2022-11-18 21:33:46 +01:00
D.R.racer
eba2c298d1
Raise version to 2.1.5
...
because we introduced a new error code
2022-11-17 07:32:38 +01:00
D.R.racer
08f777b5cb
Introduce FINDA_FLICKERS error code
...
Intended for scenarios when FINDA used to be OFF but accidentally became ON without a reason.
The user is obliged to inspect FINDA and tune its switching.
2022-11-17 07:32:38 +01:00
D.R.racer
3f09ba0c16
Unit tests: selector refused to move in ToolChange
...
Revealed all kinds of subtle issues (which is great). All have been fixed in this commit.
2022-11-17 07:32:38 +01:00
D.R.racer
8d992e2706
Report Selector refused to move as FINDA_DIDNT_SWITCH_OFF
...
MMU-176
2022-11-17 07:32:38 +01:00
D.R.racer
c74d418016
Invalidate Idler+Selector homing flags when Retry from ToolChange Error
...
If FSENSOR_DIDNT_SWITCH_ON was caused by misaligned Idler, rehoming it may fix the issue when auto retrying -> no user intervention.
So first invalidate homing flags as the user may have moved the Idler or Selector accidentally.
Beware: we may run into issues when FINDA or FSensor do not work correctly. Selector may rely on the presumed filament position and actually cut it accidentally when trying to rehome.
It is yet to be seen if something like this can actually happen.
MMU-191
2022-11-15 17:42:12 +01:00
Alex Voinea
0e896cae85
Fix bootloader file generation
2022-11-15 10:43:34 +01:00
D.R.racer
299a31b765
Generate exactly 1 userInput event when button pressed (and held)
...
This PR is a different solution to what @gudnimg found in PR#233 / PFW-1404.
The benefit of this approach is the fact, that the button press event is generated when the button is pressed and not after it has been released.
The downside is obvious:
CPUFLASH: +28B
RAM: +1B
2022-11-15 07:19:20 +01:00
VintagePC
8ae82dd6b3
Build bootloader hex too
2022-11-11 16:28:39 +01:00
Alex Voinea
a4463b9734
Selector: use freewheeling
2022-11-11 10:46:21 +01:00
Guðni Már Gilbert
21a3ceb2b2
PFW-1428 Enable UART1 receiver when the MMU is ready to process incoming messages
2022-11-01 06:39:10 +01:00
Guðni Már Gilbert
144725ab11
Merge pull request #232 from gudnimg/fix-firmware-panic-error-report
...
Fix issue where firmware panic error code is overwritten
2022-10-28 10:25:21 +00:00
Guðni Már Gilbert
394f290bfb
Check for ERRInternal in command_base Step()
...
Reduces code size significantly
2022-10-27 15:40:15 +00:00
Guðni Már Gilbert
ef4246dd9a
Fix issue where firmware panic error code is overwritten
...
If QUEUE_FULL error happened, it would be overwritten as INTERNAL
and incorrectly display FW_RUNTIME_ERROR on MK3S.
The fix is to add handling for ERRInternal in every StepInner() and forward the error
to higher application layer
2022-10-26 20:39:28 +00:00
Guðni Már Gilbert
0e625dc551
circular_buffer: implement reset()
...
reset() discards any data in the buffer (head == tail)
Change in memory:
Flash: -116 bytes
SRAM: 0 bytes
2022-10-25 07:21:33 +02:00
Yuri D'Elia
8a0ede668c
Merge pull request #230 from wavexx/abort_tests
...
motion: Add tests for unscheduled moves in AbortPlannedMoves
2022-10-22 18:13:54 +02:00
Alex Voinea
09d3527f90
Merge pull request #225 from leptun/hwSanity_disable_steppers_after_test
...
hwSanity: Disable the steppers after test
2022-10-22 18:04:38 +02:00
Yuri D'Elia
3567a3dcd5
motion: Also test for the simplest case of a single+unplanned move
2022-10-22 17:40:28 +02:00
Yuri D'Elia
7053755b0e
motion: Add tests for unscheduled moves in AbortPlannedMoves
...
This catches the previously untested #228
2022-10-22 17:21:08 +02:00
Guðni Már Gilbert
0506af08ac
Merge pull request #226 from gudnimg/parallel-unit-tests
...
Run unit tests in parallel when possible
2022-10-22 14:50:17 +00:00
Alex Voinea
3b85df297e
hwSanity: Disable the steppers after test
...
flash: -44
RAM: 0
2022-10-22 16:48:48 +02:00
Guðni Már Gilbert
709b616948
Merge pull request #228 from gudnimg/abortplannedmoves-gudni
...
Empty the entire block_index queue when planned moves are aborted
2022-10-22 14:44:24 +00:00
Guðni Már Gilbert
7bbee87a08
Empty the entire block_index queue when planned moves are aborted
2022-10-22 14:10:31 +00:00
Yuri D'Elia
e045225167
Merge pull request #229 from wavexx/catch2_v3_subrepo
...
Update Catch2 to v3.1.1
2022-10-22 16:05:31 +02:00
Guðni Már Gilbert
353affb9f3
Optimise Catch2 V3 includes + fix a few cases of missing includes
2022-10-22 15:41:44 +02:00
Guðni Már Gilbert
45f70e004c
Update CMake integration for Catch v3.1.0
2022-10-22 15:41:44 +02:00
Yuri D'Elia
7ba6850411
Update Catch2 v3.1.1
...
Re-initialize subrepo
2022-10-22 15:41:14 +02:00