Alex Voinea
0a1290102c
Actually fix retract filament from finda
2021-10-12 18:11:05 +02:00
Alex Voinea
6071257973
Fix unloading state machine
2021-10-12 18:11:05 +02:00
3d-gussner
221f40c7a1
Fix issue that all tool changes after first one fail to change to planned slot
...
Update Filament Load state
2021-10-12 18:11:05 +02:00
3d-gussner
33b467f1bc
Add debug to retract from finda
2021-10-12 18:11:05 +02:00
3d-gussner
62116b1283
Update debug
2021-10-12 18:11:05 +02:00
3d-gussner
d9134b16fc
Update Filament Load state order
2021-10-12 18:11:05 +02:00
3d-gussner
82f2e8ec54
fix some debug output
2021-10-12 18:11:05 +02:00
3d-gussner
f9561e6cf7
Remove double operations
...
- feed to finda engages the idler so no need to do that before
- retract from finda disengages the idler, again avoid double operation
LEDs set mostly by feed to finda and retract from finda
2021-10-12 18:11:05 +02:00
3d-gussner
5cfb0887d0
Disengage Idler after retracted from FINDA
...
Add some dbg_logic output
2021-10-12 18:11:05 +02:00
3d-gussner
b752c5c4e7
Set FilamentLoaded state to InSelector if FINDA triggers
2021-10-12 18:11:05 +02:00
3d-gussner
fa50462929
Add InFSensor state
2021-10-12 18:11:05 +02:00
3d-gussner
67657329d1
Correct debug messages for state
2021-10-12 18:11:05 +02:00
3d-gussner
f99adae31e
Use config.h
2021-10-12 18:11:05 +02:00
3d-gussner
abf875bda0
After Load Filament is compeleted the slot LED should be off
2021-10-12 18:11:05 +02:00
3d-gussner
28c8e09bcf
Use config.h to define DEBUGS
2021-10-12 18:11:05 +02:00
3d-gussner
dbf26d13ac
Make search for error codes easier
2021-10-12 18:11:05 +02:00
D.R.racer
c26cc30185
Add finer filament loaded states and improve unit tests
...
We need to know better where the filament is, a simple "filament loaded true/false"
does not correspond to the reality.
2021-10-12 18:11:05 +02:00
D.R.racer
5af0125672
LoadFilament should not set filament loaded (surprisingly)
...
because of the change of semantics of LoadFilament operation.
LoadFilament pushes the filament into FINDA and then retracts it back just to keep the
filament ready to be grabbed by the idler and pulley and loaded into the printer's nozzle.
So the selector is not blocked by the filament -> filament NOT loaded
2021-10-12 18:11:05 +02:00
D.R.racer
b13214b7f5
Fix debug sprintf variant
2021-10-12 18:11:05 +02:00
D.R.racer
5cf4a496e3
Introduce checking for enabled/disabled Pulley axis in unit tests
2021-10-12 18:11:05 +02:00
D.R.racer
f18ff63cf7
Fix PROGMEM addressing in debug.h
...
I hate when the compiler doesn't check something what it normally does:
`pgm_read_byte` is more than happy with a parameter (*str), which reads
an address at a location where *str points to - which is obviously not the intent.
2021-10-12 18:11:05 +02:00
D.R.racer
236a40c6ef
Use dbg_logic logging
...
and improve the variadic version used to print formatted
text at some spots in previous commits
2021-10-12 18:11:05 +02:00
D.R.racer
bbd14ed217
Fix ToolChange operation + unit tests
2021-10-12 18:11:05 +02:00
D.R.racer
505930c576
Explain better final Idler state in FeedToFinda and FeedToBondtech
2021-10-12 18:11:05 +02:00
D.R.racer
e0d1fe3b73
Extract common ErrDisengagingIdler state's implementation
2021-10-12 18:11:05 +02:00
D.R.racer
6426295e32
Change the semantics of load filament
...
Load filament performs feed to FINDA and retract:
- engage idler
- feed normal to FINDA with config::feedToFinda distance until FINDA triggers
- retract normal and as soon FINDA un-triggers move back to PTFE config::cuttingEdgeToFindaMidpoint
- disengage the idler
That implied introducing another substate machine - RetractFromFinda, which does the opposite
of FeedToFinda while also checking for the FINDA switching off while retracting filament.
Still, ToolChange and CutFilament need fixing with this change
2021-10-12 18:11:05 +02:00
D.R.racer
5eedeb0968
Remove redundant ::Color and ::Mode for LED colors and modes
...
makes the code shorter and more readable, no identifier clashes revealed
2021-10-12 18:11:05 +02:00
D.R.racer
53b329941f
Keep constants start with lowercase letter
...
and remove a few warnings from the build
2021-10-12 18:11:05 +02:00
D.R.racer
ac1f13672a
Fix format config.h
2021-10-12 18:11:05 +02:00
3d-gussner
0bead533df
clang-format
2021-10-12 18:11:05 +02:00
3d-gussner
15adeaa180
Add DEBUG_LOGIC
2021-10-12 18:11:05 +02:00
3d-gussner
b8259ac555
Fix some LED status
2021-10-12 18:11:05 +02:00
3d-gussner
b1f50d8789
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
645d0b55ed
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
c0938e41d5
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
ddcf24af43
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
5c44cf9ee0
Add UnloadingToFinda
2021-10-12 18:11:05 +02:00
3d-gussner
afe732d3ff
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
64bd2bb894
Use constants
2021-10-12 18:11:05 +02:00
3d-gussner
2f2f4d7be3
Add some distances and put axis settings together
2021-10-12 18:11:05 +02:00
D.R.racer
1a5cd52d58
Fix some doxygen comments
2021-09-29 13:28:34 +02:00
D.R.racer
1402fb3dd6
Add 'F' and 'f' decoding + unit tests where necessary
2021-09-29 13:28:34 +02:00
D.R.racer
4900dd0222
Change FilamentSensor msg code from 'F' to 'f'
...
to avoid clash with Filament Type msg (which is not handled yet)
2021-09-29 13:28:34 +02:00
D.R.racer
e277ca75ee
Support F0 in response decoder
2021-09-29 13:28:34 +02:00
D.R.racer
dc3f5764a6
Add filament sensor status reporting from printer into MMU
2021-09-29 13:28:34 +02:00
D.R.racer
e59e7e3884
Make protocol decoder tolerant to leading whitespace
2021-09-29 13:28:34 +02:00
D.R.racer
ee353cd98c
Report "Reset finished" after MMU FW start
...
kudos to @leptun for this original and actually a very clean idea.
For the start we report "Reset finished" which in fact corresponds with the MMU state pretty closely
and plays nicely even with the protocol implementation.
And, since the default startup command is the noCommand, which always returns "Finished"
the implementation is clean and straightforward - the response to the first Q0 messages
will look like "X0 F" until a command (T, L, U ...) has been issued.
2021-09-29 13:28:34 +02:00
D.R.racer
89dcafbcef
Add internal protocol decoding reset
2021-09-29 13:28:34 +02:00
D.R.racer
8a5614844c
Add more error codes for the printer's perspective
2021-09-29 13:28:34 +02:00
D.R.racer
43c953b7f1
Fix appending newline character in puts* methods
2021-09-27 11:15:20 +02:00
D.R.racer
304988fc6c
Simple debug logging via USART1
...
Encapsulates the #define macros and AVR implementation of dumping strings
(RAM and PROGMEM) onto USART1.
2021-09-27 11:15:20 +02:00
D.R.racer
c896031a62
Merge branch 'lufa-cmake' of github.com:DRracer/Prusa-Firmware-MMU-Private into lufa-cmake
2021-09-23 13:40:34 +02:00
D.R.racer
10e08021fb
Another fix format
2021-09-23 13:40:15 +02:00
Alex Voinea
77e0f56142
Merge branch 'main' into lufa-cmake
2021-09-23 04:31:11 -07:00
Alex Voinea
e35ae30470
Remove some debug code
2021-09-23 14:24:07 +03:00
D.R.racer
cddc16dc2e
Tune USB CDC class + doc
2021-09-23 13:14:28 +02:00
D.R.racer
b6d630d1c9
Clean up the code + introduce USB CDC module
...
... and tune some more namespaces
2021-09-23 13:06:36 +02:00
3d-gussner
d3d992da5b
Cheange LED modes to be consistent.
2021-09-23 10:04:50 +02:00
Alex Voinea
4f6ea16515
Functional USB reset
2021-09-20 19:01:08 +02:00
Alex Voinea
9f0f7bc33b
Fix limits.h naming conflict
2021-09-20 18:18:52 +02:00
Alex Voinea
6346dd3989
USB reset initial
2021-09-20 17:31:45 +02:00
Alex Voinea
29018671b5
Reduce verbosity
2021-09-20 17:31:45 +02:00
Alex Voinea
a8b1725dfe
Line encoding update
2021-09-20 17:31:45 +02:00
Alex Voinea
9611db9f53
Fix formatting and 🐑
2021-09-20 17:31:45 +02:00
Alex Voinea
895671aeb2
Fix descriptors
2021-09-20 17:31:45 +02:00
Alex Voinea
26fd53251b
Checkpoint
2021-09-20 17:31:45 +02:00
3d-gussner
c0b776375d
Fix right button issue on some hardware
...
My MM-control-board v0.3 has following ADC readings in DEBUG_BUTTONS
- none = 1023
- left = 169
- mid = 91-92
- right = 0
As the comparison was larger than 0 MY MMU2 right button wasn't detected.
2021-09-20 17:22:49 +02:00
D.R.racer
b9811e3c21
Fix indentation
2021-09-20 17:18:46 +02:00
Alex Voinea
fbe8d3d6cd
Simplify logic
2021-09-20 17:10:10 +02:00
Alex Voinea
89a2bdc7e4
Fix configuration compute() math
2021-09-20 17:10:10 +02:00
Alex Voinea
0e9802c4cd
watchdog configuration
2021-09-20 17:10:10 +02:00
Alex Voinea
e86def99f9
Add Disable and use the avrlibc wdt functions
2021-09-20 17:09:54 +02:00
Alex Voinea
954ef2fb8d
Reset the board using the cpu hal instead of the watchdog hal
...
Also some naming changes
2021-09-20 17:09:54 +02:00
D.R.racer
4ba6c6e679
Add handling of the X0 message (restart the MMU) via Watchdog
2021-09-20 17:09:09 +02:00
D.R.racer
a23ed5e1bf
Add watchdog implementation + use it in main()
2021-09-20 17:09:09 +02:00
Alex Voinea
d1fd815e0c
Quick and dirty workaround
2021-09-20 16:36:44 +02:00
Alex Voinea
7fe6f6c9eb
Simplify logic
2021-09-20 16:28:53 +02:00
Alex Voinea
cf636ec095
Fix configuration compute() math
2021-09-20 16:28:53 +02:00
Alex Voinea
06b959bb66
watchdog configuration
2021-09-20 16:28:53 +02:00
Alex Voinea
a433db5648
Add Disable and use the avrlibc wdt functions
2021-09-20 16:28:42 +02:00
Alex Voinea
56eee8dcfb
Reset the board using the cpu hal instead of the watchdog hal
...
Also some naming changes
2021-09-20 16:28:42 +02:00
D.R.racer
3b46c35595
Add handling of the X0 message (restart the MMU) via Watchdog
2021-09-20 16:28:17 +02:00
D.R.racer
324ced6807
Add watchdog implementation + use it in main()
2021-09-20 16:28:17 +02:00
Alex Voinea
82a9eaae43
Fix selector noise. IRUN=31(VS=1), MRES=x8
2021-09-16 10:30:27 +02:00
Alex Voinea
bec3f73864
Fix typo
...
typo
2021-09-16 10:30:27 +02:00
Alex Voinea
91f622fcdc
Tighter TPWMTHRS at standstill
2021-09-16 10:30:27 +02:00
Alex Voinea
e0babfa4ba
Updated motor currents and added freewheeling
2021-09-16 10:30:27 +02:00
Yuri D'Elia
ad096c9d14
Motion: make Motion::Step finally inline
2021-09-07 15:09:49 +02:00
Yuri D'Elia
b7fcfa5cb5
Add tests for single and multi-axis AbortPlannedMoves()
...
This introduces a new #define UNITTEST_MOTION which is used to control
the testing scenario:
- Normal tests, we allow the stub to override the built-in definition.
- For motion tests, we stub the lower-level classes and test the
effective implementation
We also repeat the prototype of the function, which IMHO is more
readable and more flexible: we need to use inline for the real
definition, which would require even more macros otherwise.
2021-09-07 15:09:49 +02:00
D.R.racer
a6800d491d
Leverage the capability of aborting a move on just one axis
2021-09-07 15:03:36 +02:00
D.R.racer
b1b5b9db84
Set better planned moves for homing + abort moves at StallGuard
2021-09-07 15:03:36 +02:00
D.R.racer
52a6d57704
Remove Motion::Home completely
2021-09-07 15:03:36 +02:00
D.R.racer
dea41738a5
Add homing capability to Idler and Selector
...
MMU-73
2021-09-07 15:03:36 +02:00
Yuri D'Elia
d18032b729
Motion: allow to abort movement on a single axis
...
This can be useful for things like faster homing in the future and comes
at no expense.
2021-09-07 14:48:06 +02:00
D.R.racer
a380a698d9
Remove unnecessary #include
2021-09-07 14:17:03 +02:00
D.R.racer
3646b8b1c0
Change M0/M1 into a command
...
That implies changing motor's mode from SpreadCycle into StealtMode (or vice versa)
requires a stand still MMU with no other command (i.e. motor moves) being performed.
This elegantly solves the synchronization problem of TMC2130 mode change, as it results
in severe jerking while a motor is moving.
The change in protocol is minimal - M0/M1 first return `M0 A` (accepted) and another `Q0` then
returns `M0 F` (finished). The MK4 counterpart may ignore the additional report if necessary
as the mode change is done immediately (shortly after responding with `M0 A`)
2021-09-07 14:17:03 +02:00
D.R.racer
09f81f8b33
Leverage the ability of motion to SetMode to all know axes
2021-09-02 12:27:41 +02:00
D.R.racer
852ca37e8f
Add stealtMode flag into the global storage hive
...
May be used elsewhere to return to the desired motors' mode e.g. after homing
(which requires switching to normal mode)
2021-09-02 12:27:41 +02:00
D.R.racer
1e6194a9b9
Add support for M0/M1 messages
...
... route the messages into modules::motion's SetMode of all axes.
2021-09-02 12:27:41 +02:00
D.R.racer
5a53acd802
Force Tool Change to load the filament if same slot but not loaded
...
MMU-63
2021-09-02 12:15:55 +02:00