335 Commits (e94f79cceabc4b13f4447260227d6db837dcaf02)

Author SHA1 Message Date
Scott Lahteine e94f79ccea Patch some serial macros 8 years ago
Scott Lahteine 04b07a6ecc Unused var in Stepper 8 years ago
Scott Lahteine e4937b0285 Cleanup of spacing and formatting 8 years ago
Scott Lahteine df91346188 Account for dual XYZ in pulse delay cycles estimate 8 years ago
Scott Lahteine 081bf1f879 Patch #else / #endif comments 8 years ago
Scott Lahteine ff35b11d08 Resolve compiler complaint about memset volatile * 8 years ago
Scott Lahteine 5512130d6c Only set Compare Mode for channel A
Fixes #6445
8 years ago
Scott Lahteine 2823bf0874 Update fastio.h with special handling for Timer 2 8 years ago
Scott Lahteine ee46ce1743 Add and apply interrupt helper macros 8 years ago
Scott Lahteine 6131c62499 General cleanup 8 years ago
Scott Lahteine f4685c28b7 Reorder Conditionals_post.h and add comments 8 years ago
Scott Lahteine 0ac2b5c045 Additional 5 extruders support (solenoids, microstepping) 8 years ago
Scott Lahteine ea734f910b Use direct pin manipulation whenever possible 8 years ago
Scott Lahteine ac96ae89f9 Apply `const` in Stepper::isr 8 years ago
Scott Lahteine 6a9b008044 Fix MINIMUM_STEPPER_PULSE maths 8 years ago
Scott Lahteine 68773f4486 Simplify stepper macros by renaming enable/disable macros 8 years ago
Scott Lahteine c54f6cf23d Updates to support 5 extruders 8 years ago
Scott Lahteine d6db7a9b03 patch "step_remaining" 8 years ago
Scott Lahteine 9217e4b8ec Various UBL cleanups and bug fixes 8 years ago
Scott Lahteine d1e6b0e21a Reduce STEP_PULSE_CYCLES code slightly 8 years ago
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.
8 years ago
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.
8 years ago
Sebastianv650 80830919dc Add MINIMUM_STEPPER_PULSE ability to babystepping 8 years ago
Scott Lahteine 45f949d833 TMC2130 Library: @teemuatlut replaces @makertum 8 years ago
Scott Lahteine fea0d3f20f Endstop and temp-isr general cleanup 8 years ago
Scott Lahteine bfb0007573 Patch DISTINCT_E_FACTORS bug 8 years ago
Scott Lahteine 97b6fb6381 Reduce / optimize LIN_ADVANCE code 8 years ago
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
8 years ago
Scott Lahteine 92dbeebf40 Define ADV_NEVER, ADV_RATE 8 years ago
Sebastianv650 84c685f8b5 First draft of Unified Stepper / E Advance ISR 8 years ago
esenapaj 069c6b38dd Remove unnecessary tabs and spaces 8 years ago
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.
8 years ago
Scott Lahteine 3f4c02e42f Merge pull request #5259 from Sebastianv650/Allow_UART-ISR_inside_Stepper
Allow UART ISRs inside the stepper ISR
8 years ago
Scott Lahteine 092e949b58 Merge pull request #5169 from thinkyhead/rc_core_inverted
Support for COREYX, COREZX, COREZY
8 years ago
Scott Lahteine e9e4208ff1 Merge pull request #5274 from Sebastianv650/improve_smooth_moves
Improvement for ENSURE_SMOOTH_MOVES
8 years ago
Scott Lahteine 14b74181f5 Merge pull request #5179 from thinkyhead/rc_TMC2130
TMC2130 "Silent StepStick" support
8 years ago
Scott Lahteine 9b96a4a53b Merge pull request #5246 from thinkyhead/rc_some_cleanup
Minor stepper cleanup
8 years ago
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.
8 years ago
Moritz d67c1d825f Add TMC2130 support 8 years ago
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.
8 years ago
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.
8 years ago
Scott Lahteine eb120e518c Followup to new endstop interrupts feature
- Fix typos, verbiage
- Fix naming of `setup_endstop_interrupts`
- Some formatting, indentation, spacing
8 years ago
Scott Lahteine 98600e1433 Minor stepper cleanup 8 years ago
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.
8 years ago
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..
8 years ago
Scott Lahteine 1864b282c5 Implement reversed CORE options 8 years ago
Scott Lahteine 00662b8635 Minor babystep cleanup patches 8 years ago
Scott Lahteine b23d255491 Move macros above Stepper::babystep 8 years ago
Scott Lahteine cc57d46158 Fix set_position for CoreYZ 8 years ago
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.
8 years ago