Commit Graph

380 Commits

Author SHA1 Message Date
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
Scott Lahteine
f8199b2cc1 Merge pull request #4982 from thinkyhead/rc_abl_bugfix
Fix planner with kinematics, delta ABL
2016-10-10 13:24:22 -05:00
esenapaj
cfb5c24bc9 Small fix for the PR #4980 (LIN_ADVANCE bug fix and optimization)
・Fix a comment about timer
2016-10-10 07:48:42 +09:00
Scott Lahteine
c5cac486f5 Use a, b, c instead of lx, ly, lz 2016-10-09 14:34:24 -05:00
Scott Lahteine
3752d9aca8 Fix timer comments 2016-10-09 12:11:00 -05:00
Sebastianv650
a448cedbc5 LIN_ADVANCE bug fix and optimization
.) long to int: Extruder stalls at 10kHz / 20kHz step limits with long.
.) Take the delta_adv_steps calculation out of the step_loops loop. Wasted calculation performance if done inside.
.) >> 2 replaced by 3: Is divide by 8. Reason: Timer 0 runs at 16/8=2MHz, Timer 1 at 16/64=0.25MHz. ==> 2/0.25=8.
2016-10-09 11:55:02 -05:00
esenapaj
f8df88f271 Move routine of direction signal of ADVANCE and LIN_ADVANCE from Stepper::isr() to Stepper::advance_isr() 2016-10-07 02:01:29 +09:00
Scott Lahteine
ecf7cdde65 Augment planner/stepper getters/setters 2016-09-29 01:27:37 -05:00
Scott Lahteine
5fff8d148b Clean up digital pots and microsteps 2016-09-25 11:16:22 -05:00
Scott Lahteine
cb48292338 Use fastio for literal pins 2016-09-25 06:33:38 -05:00
Scott Lahteine
eabff30e75 Improve MINIMUM_STEPPER_PULSE 2016-09-24 02:23:43 -05:00
Scott Lahteine
cc639d7d9c Less indentation in Stepper::isr 2016-09-23 03:03:14 -05:00
Scott Lahteine
7dec8071b2 Always synchronize in Stepper::set_position 2016-09-23 03:03:14 -05:00
esenapaj
954563d603 Adjust spacing 2016-09-20 19:35:44 +09:00
esenapaj
7e9576dc5b Extend the e_steps[] from int to long for allowing more than 32,767 E steps
Probably needed for long straight lines when using high microstepping
2016-09-20 19:35:44 +09:00
esenapaj
b04ed8f9c3 Fix inverted stepper signal of ADVANCED and LIN_ADVANCED 2016-09-20 19:35:44 +09:00
esenapaj
8692748ecd Fix broken direction signal of ADVANCED and LIN_ADVANCED
Remove a setting proccess of E direction in advance_isr()
2016-09-20 19:35:44 +09:00
Scott Lahteine
edfaf1c582 Stepper::report_positions patch 2016-09-18 12:58:42 -05:00
Scott Lahteine
6f71bd7372 Merge pull request #4754 from thinkyhead/rc_mixing_regression
Unify counter_m and counter_M
2016-09-02 12:27:43 -05:00
Scott Lahteine
9bf78ef465 Fix capitalization of counter_m 2016-09-02 11:31:45 -05:00
Scott Lahteine
42b5616327 Try bool for direction instead of long 2016-09-02 11:28:48 -05:00
Scott Lahteine
d07a913f21 Tweak to stepper advance e_steps update 2016-09-02 02:06:17 -05:00
Scott Lahteine
426f662586 Apply MINIMUM_STEPPER_PULSE in stepper advance_isr 2016-08-30 14:31:48 -05:00
Scott Lahteine
8c7ee4599e Optimize stepper advance_isr 2016-08-30 14:31:48 -05:00
Scott Lahteine
9725bcd099 Minor "optimizations" in stepper ISR 2016-08-30 14:21:43 -05:00
Scott Lahteine
4ec3d1ea58 Add some commentary to stepper ISR 2016-08-30 14:21:15 -05:00
Scott Lahteine
d9bcc7bb45 Set a bool when a stepper block is done 2016-08-30 14:20:48 -05:00
Scott Lahteine
08f717e5f7 Use bit-size typedefs for some stepper vars 2016-08-30 14:19:49 -05:00
Scott Lahteine
759234af60 MINIMUM_STEPPER_PULSE option 2016-08-27 23:58:40 -05:00
Scott Lahteine
a28e15399f Patch stepper.cpp to allow omitting steppers 2016-08-27 20:11:17 -05:00
Scott Lahteine
2f223b8c79 Use ABC and XYZ for "3" 2016-08-21 00:10:08 -05:00
Scott Lahteine
d8f2876753 Replace some float division with multiplication 2016-07-24 13:27:50 -07:00
Scott Lahteine
f8b5749235 Replace division in planner with multiplication 2016-07-24 13:27:49 -07:00
Scott Lahteine
176b9627c7 Some cleanup ahead of BLTOUCH support 2016-07-17 13:55:38 -07:00
Scott Lahteine
05da02f0a2 Implement MIXING_EXTRUDER and SWITCHING_EXTRUDER 2016-07-17 10:53:10 -07:00
Scott Lahteine
4b4a582c4f X_DUAL_STEPPER_DRIVERS implementation 2016-07-11 10:22:19 -07:00
Scott Lahteine
bd491818d6 Reduce storage requirements for strings, make some PGM 2016-06-27 20:36:18 -07:00
Scott Lahteine
61f34eec03 Merge pull request #4125 from jbrazio/bugfix/planner-warning
Fixes some compiler warnings
2016-06-22 19:34:37 -07:00
João Brázio
664232140d
Fixes somes compiler warnings 2016-06-23 03:12:55 +01:00
Sebastianv650
0c5192b288 Patch LIN_ADVANCE timing issue
Also the extruder stepper ISR has to keep an eye on step_loops count.
2016-06-22 19:05:14 -07:00
Scott Lahteine
8d8180e028 Parse M905 args in Marlin_main.cpp 2016-06-13 19:25:28 -07:00
Scott Lahteine
2b340f5acb patch LIN_ADVANCE to use code_value_float 2016-06-13 18:54:25 -07:00
Scott Lahteine
aad9c0ed8d Apply updated ISR timing code 2016-06-09 21:03:27 -07:00
Scott Lahteine
506d78b2f8 Run the advance_isr faster instead of doing multiple e-steps per interrupt 2016-06-09 21:03:27 -07:00
Scott Lahteine
6d62a4ffc8 Patch LIN_ADVANCE for style and forward-compatibility 2016-06-09 21:03:27 -07:00
Sebastianv650
fb8e880734 Add LIN_ADVANCE 2016-06-09 21:03:27 -07:00
Scott Lahteine
72c6f2923f axis_steps_per_unit => axis_steps_per_mm 2016-06-09 17:04:51 -07:00
Scott Lahteine
e2a8961635 Use e_steps[EXTRUDERS] instead of e_steps[4] 2016-06-05 01:44:53 -07:00
Scott Lahteine
668d50f68e Keep Stepper encapsulation, use static data and methods 2016-05-30 16:24:04 -07:00
Scott Lahteine
5172d4ba40 COREYZ stepper, planner, endstop, babysteps 2016-05-23 13:58:40 -07:00
Scott Lahteine
07c9a11c3c Automatically set X2 stepper pins 2016-05-18 19:09:09 -07:00