Commit Graph

430 Commits

Author SHA1 Message Date
Scott Lahteine
c57545ee08 blocks_queued => has_blocks_queued 2018-03-21 19:08:02 -05:00
Scott Lahteine
a03502080e Consolidate smart stepper driver initialization 2018-03-19 22:06:04 -05:00
Scott Lahteine
a66ae52234
Add CorePQ support for BABYSTEPPING (#10074) 2018-03-19 02:51:30 -05:00
Scott Lahteine
e38307355e Fix E direction for MK2_MULTIPLEXER and LIN_ADVANCE 2018-03-14 07:57:19 -05:00
Scott Lahteine
738a8495ad Improve TMC config organization, naming 2018-03-13 21:43:43 -05:00
Scott Lahteine
b0abce5a7e Disambiguate 'else' in stepper code 2018-03-10 21:47:08 -06:00
Scott Lahteine
3c6d2d7711 Add more delay before pulse off in Linear Advance ISR
A capital idea from https://github.com/MarlinFirmware/Marlin/pull/9914#issuecomment-371614153
2018-03-09 05:24:10 -06:00
Scott Lahteine
63d6dddae1 Wrap stepper_indirection macros 2018-03-07 05:45:30 -06:00
Sebastianv650
e5d69d313c Fix for LA (#9965)
Missed in the original LA 1.5 PR: eISR has to use a local copy of
current_block->use_advance_lead because it might still run wenn the last
block has been set to NULL.
2018-03-07 05:32:49 -06:00
Scott Lahteine
73aa7ffff9 LIN_ADVANCE single stepper optimization 2018-03-06 19:27:43 -06:00
Scott Lahteine
50ad30259f Support duplication mode in LIN_ADVANCE 2018-03-06 19:12:54 -06:00
Scott Lahteine
3bae28a5e1
Put more code between pulse start and stop (#9956) 2018-03-05 23:05:42 -06:00
Scott Lahteine
d77be210c1 Fix EXTRA_CYCLES_E handling in LIN_ADVANCE 2018-03-04 15:03:31 -06:00
Scott Lahteine
1f488292cd
Add board MKS_BASE_HEROIC (#9924)
Followup to #9008

- Don't define micro-stepping pins for boards that lack them.
- Allow setting of 128 microsteps with `M350`.
2018-03-03 23:14:28 -06:00
Sebastianv650
72d5029f42 Useless line removed (#9813)
nextAdvanceISR is set in the next if structure in every possible
situation, so it's useless to set it once more before.
2018-02-25 21:21:15 -06:00
Sebastianv650
9c65890644 [1.1.x] LIN_ADVANCE v1.5 (#9700) 2018-02-23 00:53:41 -06:00
Scott Lahteine
252ae1b52d Drop ubl.h include from steppers.cpp 2018-02-07 22:16:07 -06:00
cprund
0527090a31 Minor bugfix to the code that enables the 2nd X stepper. It needs to be enabled for X_DUAL_STEPPER_DRIVERS. (#9286) 2018-01-22 01:32:09 -06:00
Scott Lahteine
fb636db61a Patch to restore broken Dual X Carriage 2018-01-20 15:07:40 -06:00
Bob-the-Kuhn
ba9aa47260
Revert "[1.1.x] Fix missing deceleration steps" 2018-01-16 11:31:27 -06:00
Sebastianv650
4fa0937a55 Fix missing deceleration steps
Marlin never reached final_speed after deceleration.
2018-01-14 17:09:47 +01:00
Scott Lahteine
e47316c9d3 Tweak cleaning buffer / SD finished command 2017-12-24 20:33:58 -06:00
Scott Lahteine
56d355f8de Revert "[Bugfix-1.1.x] initial step correction (#8735)"
This reverts commit ec028bf747.
2017-12-17 02:04:44 -06:00
teemuatlut
0ac0324af2 [1.1.x] TMC driver update (#8712) 2017-12-15 15:02:39 -06:00
Scott Lahteine
8519451161 Comment, improve filament width sensor 2017-12-13 02:35:23 -06:00
Scott Lahteine
bb33a26e62 Apply const to axis args 2017-12-11 00:20:29 -06:00
Bob-the-Kuhn
ec028bf747 [Bugfix-1.1.x] initial step correction (#8735)
* tested

* forgot one item
2017-12-09 18:20:25 -06:00
Scott Lahteine
55acb65e27 Updates for stepper parity with 2.0.x
Matching changes from #8725
2017-12-08 23:07:52 -06:00
Scott Lahteine
75eb93140f Discard all CONTINUED blocks on interrupted move 2017-12-08 02:13:51 -06:00
Scott Lahteine
574153a810 No lcd_map_control needed in quick_stop 2017-12-06 21:43:26 -06:00
Scott Lahteine
3b30cc90f1 Clean on trigger instead of split_first_move flag 2017-12-06 21:43:26 -06:00
Scott Lahteine
93560836de Allow buffer clean without release command 2017-12-06 21:12:55 -06:00
Scott Lahteine
1d0ee83e18 Split first move to planner for better chaining
Address #8573, #8595
2017-12-03 01:44:33 -06:00
Scott Lahteine
8b7c274db5 Comment/cleanup motion code 2017-12-02 01:42:37 -06:00
Scott Lahteine
99b71c1dde Move lcd_map_control to UBL
For parity with bugfix-2.0.x
2017-11-22 18:45:55 -06:00
Scott Lahteine
318c419f77 Implement support for Dual X and Y endstops 2017-10-29 03:49:45 -05:00
Scott Lahteine
cbfcce09fa Remove legacy ADVANCE feature 2017-10-09 04:27:45 -05:00
Scott Lahteine
b0173ccdb9 Drop extra initializers for vars initialized by EEPROM code 2017-07-20 22:57:49 -05:00
Tannoo
e927941c06 Bugfix (#7265)
Fix compile error when UBL is enabled but there is no LCD Panel.
2017-07-08 09:44:50 -05:00
Tannoo
aaacef9441 Corrections (#7231)
20x4 map integration.    Also some minor changes to the UBL Menu layout.     Both 20x4 LCD's and Graphical LCD panels should have similar functionality now.
2017-07-07 11:05:08 -05:00
Scott Lahteine
5b11b33854 Add support for Průša MK2 Multiplexer 2017-06-27 04:55:30 -05:00
dot-bob
b3c36c98fd Edit digipot currents via LCD, save to EEPROM 2017-06-25 01:02:36 -05:00
Scott Lahteine
3c7bfe798d Various cleanups ahead of digipot save 2017-06-24 23:56:24 -05:00
Ross Allan
cfcd069501 Fix #5699 - LIN_ADVANCE freeze when ADV_RATE returns 0 2017-06-19 14:02:17 -05:00
Scott Lahteine
8d5a37fb3d Support for a 5th stepper in stepper code 2017-06-15 15:25:23 -05:00
Scott Lahteine
e94f79ccea Patch some serial macros 2017-06-09 17:17:23 -05:00
Scott Lahteine
04b07a6ecc Unused var in Stepper 2017-06-04 17:25:16 -05:00
Scott Lahteine
e4937b0285 Cleanup of spacing and formatting 2017-06-04 11:31:43 -05:00
Scott Lahteine
df91346188 Account for dual XYZ in pulse delay cycles estimate 2017-05-31 12:23:28 -05:00
Scott Lahteine
081bf1f879 Patch #else / #endif comments 2017-05-09 12:37:23 -05:00
Scott Lahteine
ff35b11d08 Resolve compiler complaint about memset volatile * 2017-04-30 22:24:03 -05:00
Scott Lahteine
5512130d6c Only set Compare Mode for channel A
Fixes #6445
2017-04-25 23:14:16 -05:00
Scott Lahteine
2823bf0874 Update fastio.h with special handling for Timer 2 2017-04-24 16:58:22 -05:00
Scott Lahteine
ee46ce1743 Add and apply interrupt helper macros 2017-04-20 16:04:29 -05:00
Scott Lahteine
6131c62499 General cleanup 2017-04-20 16:04:29 -05:00
Scott Lahteine
f4685c28b7 Reorder Conditionals_post.h and add comments 2017-04-14 18:18:21 -05:00
Scott Lahteine
0ac2b5c045 Additional 5 extruders support (solenoids, microstepping) 2017-04-14 18:18:20 -05:00
Scott Lahteine
ea734f910b Use direct pin manipulation whenever possible 2017-04-14 16:55:35 -05:00
Scott Lahteine
ac96ae89f9 Apply const in Stepper::isr 2017-04-13 06:20:36 -05:00
Scott Lahteine
6a9b008044 Fix MINIMUM_STEPPER_PULSE maths 2017-04-11 11:11:17 -05:00
Scott Lahteine
68773f4486 Simplify stepper macros by renaming enable/disable macros 2017-04-11 11:10:26 -05:00
Scott Lahteine
c54f6cf23d Updates to support 5 extruders 2017-04-09 03:49:16 -05:00
Scott Lahteine
d6db7a9b03 patch "step_remaining" 2017-04-08 18:13:20 -05:00
Scott Lahteine
9217e4b8ec Various UBL cleanups and bug fixes 2017-03-30 17:09:49 -05:00
Scott Lahteine
d1e6b0e21a Reduce STEP_PULSE_CYCLES code slightly 2017-03-24 00:50:05 -05:00
Roxy-3D
b8e4a6970b Get UBL up and running again
All the changes to get the code into compliance with Marlin coding
standards made UBL sick.   This pretty much gets UBL back up and
running.
2017-03-23 16:08:37 -05:00
Sebastianv650
bf57eb2447 Protect Babystepping against other ISRs
Especialy against stepper ISR.
This is even more important when a minimum pulse width is set,
increasing the runtime of a babystep.
2017-03-21 18:05:44 +01:00
Sebastianv650
80830919dc Add MINIMUM_STEPPER_PULSE ability to babystepping 2017-03-21 17:50:38 +01:00
Scott Lahteine
45f949d833 TMC2130 Library: @teemuatlut replaces @makertum 2017-03-07 04:22:06 -06:00
Scott Lahteine
fea0d3f20f Endstop and temp-isr general cleanup 2017-03-06 02:07:07 -06:00
Scott Lahteine
bfb0007573 Patch DISTINCT_E_FACTORS bug 2017-03-05 23:19:31 -06:00
Scott Lahteine
97b6fb6381 Reduce / optimize LIN_ADVANCE code 2017-02-14 07:52:03 -06:00
Bob-the-Kuhn
0369f97ec1 guaranteed BLTouch detection
To guarantee that the 5mS pulse from a BLTouch is recognized you need to
have the endstops.update() routine run twice in that 5mS period.

At 200 steps per mm, my system has problems  below a feedrate of 120 mm
per minute.

Two things were done to guarantee the two updates within 5mS:
1) In interrupt mode, a check was added to the temperature ISR.  If the
endstop interrupt flag/counter is active then it'll kick off the endstop
update routine every 1mS until the flag/counter is zero.  This
flag/counter is decremented by the temperature ISR AND by the stepper
ISR.

2) In poling mode, code was added to the stepper ISR that will make sure
the ISR runs about every 1.5mS.  The "extra" ISR runs only check the
endstops.  This was done by grabbing the intended ISR delay and, if it's
over 2.0mS, splitting the intended delay into multiple smaller delays.
The first delay can be up to 2.0mS, the next ones 1.5mS (as needed) and
the last no less than 0.5mS.

=========================================

BLTouch error state recovery

If BLTouch already active when deploying the probe then try to reset it
& clear the probe.

If that doesn't fix it then declare an error.

Also added BLTouch init routine to startup section
2017-02-11 12:01:34 -06:00
Scott Lahteine
92dbeebf40 Define ADV_NEVER, ADV_RATE 2016-12-23 18:43:23 -08:00
Sebastianv650
84c685f8b5 First draft of Unified Stepper / E Advance ISR 2016-12-21 01:34:39 -08:00
esenapaj
069c6b38dd Remove unnecessary tabs and spaces 2016-12-16 00:21:32 +09:00
AnHardt
d0e24e0876 Adaptive screen updates for all kinds of displays
The target here is to update the screens of graphical and char base
displays as fast as possible, without draining the planner buffer too much.

For that measure the time it takes to draw and transfer one
(partial) screen to the display. Build a max. value from that.
Because ther can be large differences, depending on how much the display
updates are interrupted, the max value is decreased by one ms/s. This way
it can shrink again.
On the other side we keep track on how much time it takes to empty the
planner buffer.
Now we draw the next (partial) display update only then, when we do not
drain the planner buffer to much. We draw only when the time in the
buffer is two times larger than a update takes, or the buffer is empty anyway.

When we have begun to draw a screen we do not wait until the next 100ms
time slot comes. We draw the next partial screen as fast as possible, but
give the system a chance to refill the buffers a bit.

When we see, during drawing a screen, the screen contend has changed,
we stop the current draw and begin to draw the new content from the top.
2016-12-13 18:44:34 +01:00
Scott Lahteine
3f4c02e42f Merge pull request #5259 from Sebastianv650/Allow_UART-ISR_inside_Stepper
Allow UART ISRs inside the stepper ISR
2016-12-01 23:17:42 -06:00
Scott Lahteine
092e949b58 Merge pull request #5169 from thinkyhead/rc_core_inverted
Support for COREYX, COREZX, COREZY
2016-11-28 02:26:41 -06:00
Scott Lahteine
e9e4208ff1 Merge pull request #5274 from Sebastianv650/improve_smooth_moves
Improvement for ENSURE_SMOOTH_MOVES
2016-11-28 02:22:08 -06:00
Scott Lahteine
14b74181f5 Merge pull request #5179 from thinkyhead/rc_TMC2130
TMC2130 "Silent StepStick" support
2016-11-21 14:10:52 -06:00
Scott Lahteine
9b96a4a53b Merge pull request #5246 from thinkyhead/rc_some_cleanup
Minor stepper cleanup
2016-11-21 13:55:25 -06:00
Sebastianv650
8190483eeb Improvement for ENSURE_SMOOTH_MOVES
Instead of waiting for a single long block, compare the complete block
buffer runtime for the long_move() check.
2016-11-21 17:58:24 +01:00
Moritz
d67c1d825f Add TMC2130 support 2016-11-21 00:17:45 -06:00
Sebastianv650
50059690e0 Allow UART ISRs inside the stepper ISR
If the stepper ISR takes too long, chars are lost which leads to serial
communication errors like "Line number not +1" or "Wrong checksum". In
worst case, the printer can even do crazy moves.

With this changes, UART interrupts are handled inside the stepper ISR.
This way, no chars should be lost.
2016-11-20 13:09:12 +01:00
AnHardt
88b38eafd8 Endstop interrupt refinement
At the start of a move, check if the endstops are already triggered.
The 'change' interrupts will not see a change if already triggered.
2016-11-19 13:30:49 +01:00
Scott Lahteine
eb120e518c Followup to new endstop interrupts feature
- Fix typos, verbiage
- Fix naming of `setup_endstop_interrupts`
- Some formatting, indentation, spacing
2016-11-18 21:53:45 -06:00
Scott Lahteine
98600e1433 Minor stepper cleanup 2016-11-18 01:15:57 -06:00
AnHardt
f3eee02596 Introduce endstop interrupts
If ENDSTOP_INTERRUPTS_FEATURE is enabled this tries to set up interrupt routines
for all used endstop pins. If this worked without errors, `endstops.update()` is called
only if one of the endstops changed its state.

The new interrupt routines do not really check the endstops and react upon them. All what they
do, is to set a flag if it makes sense to call the endstop test we are used to.

This can be used on:
* ARM (DUE) based boards - all pins can raise interrupts,
* RAMPS - all 6 endstop pins plus some other on EXT-2 can raise interrupts,
* RAMPS based boards - as long the designers did not change the pins for the endstops or at least left enough,
* all boards, if there are enough pins that can raise interrupts, and you are willing/able to swap with pins dedicated to other purpose.
2016-11-15 12:07:41 +01:00
Sebastianv650
cdc18f8c22 Remove useless line from stepper ISR
The flag is already set inside planner.get_current_block(). Doing it
twice isn't making it better..
2016-11-11 19:35:03 +01:00
Scott Lahteine
1864b282c5 Implement reversed CORE options 2016-11-05 23:47:51 -05:00
Scott Lahteine
00662b8635 Minor babystep cleanup patches 2016-11-03 23:31:45 -05:00
Scott Lahteine
b23d255491 Move macros above Stepper::babystep 2016-11-03 23:31:45 -05:00
Scott Lahteine
cc57d46158 Fix set_position for CoreYZ 2016-11-03 23:31:45 -05:00
Sebastianv650
f9bea7968f BugFix for incorrect E-speed calculation
The extrusion speed was wrong due to a not high enough precision of
esteps to XY steps, therefore now the target float values are used to
calculate the ratio between XY movement and extrusion speed.
The e_speed_multiplier8 was replaced by an absolute multiplier called
abs_adv_steps_multiplier8, therefore one multiplication and bitshift can
be saved inside the stepper ISR. Due to this, also extruder_advance_k is
better suited inside the planner and not the stepper files any more.
2016-11-01 08:08:47 +01:00
Scott Lahteine
43df9ace4e Merge pull request #5110 from thinkyhead/rc_z2_min_allowed
Support Z2 min in M119 report
2016-10-31 07:59:45 -05:00
Scott Lahteine
75dbb71dd7 Replace block.busy with a block.flag bit 2016-10-30 16:16:28 -05:00
Scott Lahteine
8cebd2a7db Arrange Z2 min before Z2 max 2016-10-29 01:54:19 -05:00
Scott Lahteine
083d41a2c2 Remove redundant estep rate code from LIN_ADVANCE
As noted by https://github.com/MarlinFirmware/Marlin/pull/4971#issuecomment-252503295
2016-10-22 02:19:14 -05:00
Scott Lahteine
2cb5df8a56 Merge pull request #4984 from esenapaj/Small-fix-for-PR-#4980
Small fix for the PR #4980 (LIN_ADVANCE bug fix and optimization)
2016-10-10 13:30:47 -05:00