Commit graph

203 commits

Author SHA1 Message Date
Giuliano e85feb2545 [2.0.x] Better timing handling (#11461) 2018-08-06 23:13:36 -05:00
Scott Lahteine aa4cd2e861 Eliminate stepper.* signed/unsigned warnings 2018-06-27 23:10:51 -05:00
Eduardo José Tagle edb21f349a Fix stepper/planner block handling, race conditions (#11098)
- Allow planner to alter the deceleration phase of the currently executing block.
- Remove BUSY flag, as it is NON ATOMIC to set bits in the Stepper ISR and Planner at the same time.
2018-06-27 18:11:16 -05:00
etagle 5b49fccf80 Add stepper driver DIR delay configuration option
...and recommended pulse width configuration for A4988
2018-06-26 13:28:04 -05:00
Scott Lahteine 99591dc20c
Filter endstops state at all times (#11066) 2018-06-21 20:14:16 -05:00
etagle a215725df6 Fix stepper pulse timing
Always honor minimum period on stepper pulse generation, and fix timing calculations

Signed-off-by: etagle <ejtagle@hotmail.com>
2018-06-12 21:34:24 -05:00
Scott Lahteine 0d79128c8d Localize stepper-specific defines 2018-06-12 21:16:54 -05:00
Scott Lahteine 4dbec774b5 HAL_*_TIMER_RATE => *_TIMER_RATE 2018-06-12 16:39:12 -05:00
etagle 6f14bcaa3e Add MAXIMUM_STEPPER_RATE, enforce in multi-stepping
The timing value should be properly set for ALL boards. The compiler will check and set maximum step rate calculations based on those values.
2018-06-10 16:02:47 -05:00
etagle 39a7e7720d Adaptive multiaxis step smoothing
- Stepper bugs fixed
- Support MIXING_EXTRUDER with Linear Advance
- Miscellaneous cleanup
2018-06-10 16:02:47 -05:00
Scott Lahteine 3701869e6c Add HAL_timer_start for AVR, use stepper timer to time pulses 2018-06-09 22:30:13 -05:00
Scott Lahteine ad8d3150aa Cleanup for dual endstops homing 2018-06-03 00:34:29 -05:00
Eduardo José Tagle d3c02410a8 [2.0.x] Small assorted collection of fixes and improvements (#10911)
* Misc fixes and improvements

- Get rid of most critical sections on the Serial port drivers for AVR and DUE. Proper usage of FIFOs should allow interrupts to stay enabled without harm to queuing and dequeuing.
  Also, with 8-bit indices (for AVR) and up to 32-bit indices (for ARM), there is no need to protect reads and writes to those indices.
- Simplify the XON/XOFF logic quite a bit. Much cleaner now (both for AVR and ARM)
- Prevent a race condition (edge case) that could happen when estimating the proper value for the stepper timer (by reading it) and writing the calculated value for the time to the next ISR by disabling interrupts in those critical and small sections of the code - The problem could lead to lost steps.
- Fix dual endstops not properly homing bug (maybe).

* Set position immediately when possible
2018-06-01 19:02:22 -05:00
Scott Lahteine 4299e5dc8b
Modify E-stepping macros for use in LINEAR_ADVANCE (#10885) 2018-05-28 19:34:08 -05:00
Scott Lahteine 0ca9db7051 Correct HOTENDS for SWITCHING_EXTRUDER 2018-05-27 23:22:48 -05:00
Eduardo José Tagle 7b9f0302d4 Fix Bresenham rounding errors, add link to article (#10871) 2018-05-27 01:49:59 -05:00
Scott Lahteine 2566342979 Adjust some commentary 2018-05-27 00:10:25 -05:00
Scott Lahteine 6775a16c97 Fix switching extruder stepping with LA 2018-05-26 19:07:01 -05:00
Scott Lahteine aaaf09bda2 BEZIER_JERK_CONTROL => S_CURVE_ACCELERATION 2018-05-26 18:33:51 -05:00
Scott Lahteine 01d37e00af
Fix up stepper ISR with linear advance timing (#10853)
Co-Authored-By: ejtagle <ejtagle@hotmail.com>
2018-05-26 01:00:13 -05:00
Scott Lahteine 7261f48872 Fix reset of endstops and move state 2018-05-24 19:33:36 -05:00
Scott Lahteine 50fa8e01c1 Minor optimization of axis_did_move bits 2018-05-24 19:08:07 -05:00
Scott Lahteine f28e366b77 Followup for core endstops 2018-05-24 03:02:57 -05:00
Scott Lahteine 9644d56b42 Patches for core motion tests 2018-05-24 00:49:01 -05:00
Scott Lahteine 3e3789da85
Regression: Endstops Core compatibility (#10823)
Co-Authored-By: ejtagle <ejtagle@hotmail.com>
2018-05-23 03:45:25 -05:00
Scott Lahteine 4b2f6e3b2b
[2.0.x] Add endstop noise filter (#10796) 2018-05-21 15:51:38 -05:00
Scott Lahteine 435ecb6b67 Followup to stepper/planner refactor 2018-05-20 23:13:38 -05:00
etagle 569df3fc0c Fix interrupt-based endstop detection
- Also implemented real endstop reading on interrupt.
2018-05-20 07:10:24 -05:00
etagle a11eb50a3e Refactor and optimize Stepper/Planner
Better encapsulation and considerably reduce stepper jitter
2018-05-20 06:23:58 -05:00
Scott Lahteine 7dc03ce721 Simplified fix for babystep pulse width
Alternative to the apparently superfluous double delay
2018-05-19 21:00:08 -05:00
Scott Lahteine 65270d6a96 Fix LIN_ADVANCE + SWITCHING_EXTRUDER
Followup to #10656
2018-05-19 18:32:00 -05:00
Bob Kuhn 9ad42d6617 add delay between pulse edges (#10778) 2018-05-19 17:12:16 -05:00
Scott Lahteine ba4c32eec5 Followup to _AXIS patch 2018-05-13 10:43:35 -05:00
Scott Lahteine d9154ebdf6 Followup to math patch 2018-05-13 09:30:27 -05:00
Scott Lahteine 883b0c9880
Convert custom maths to inlines (#10728) 2018-05-13 08:10:08 -05:00
Scott Lahteine 08e36e264e Apply _AXIS macro 2018-05-13 06:51:01 -05:00
Scott Lahteine 8f8c6a9bc4
Move get_axis_position_mm to Planner (#10718) 2018-05-12 09:59:11 -05:00
Scott Lahteine a1062eec5b
Better handling of DELAY_NS and DELAY_US (#10716)
Co-Authored-By: ejtagle <ejtagle@hotmail.com>
2018-05-12 08:34:04 -05:00
Scott Lahteine 3614e6ce0f Fix Switching Extruder with Linear Advance 2018-05-12 02:26:14 -05:00
Scott Lahteine 306f0f2135
Move Stepper::synchronize to Planner (#10713)
Co-Authored-By: ejtagle <ejtagle@hotmail.com>
2018-05-12 01:38:02 -05:00
Scott Lahteine 722aba77f3
Fix LIN_ADVANCE + SWITCHING_EXTRUDER stepper directions (#10656) 2018-05-09 14:36:09 -05:00
Scott Lahteine 0436e16fb2 Apply shorthand Assembler macros 2018-05-08 10:08:54 -05:00
Scott Lahteine af1950a63e Improve sync of stepper positions 2018-05-06 01:24:14 -05:00
Scott Lahteine 0c23792344 Apply int32_t to stepper 2018-05-05 18:21:03 -05:00
Eduardo José Tagle 0c428a66d9 Proper AVR preemptive interrupt handling (#10496)
Also simplify logic on all ARM-based interrupts. Now, it is REQUIRED to properly configure interrupt priority. USART should have highest priority, followed by Stepper, and then all others.
2018-04-23 22:05:07 -05:00
Scott Lahteine 36b97bde9f clear_block_buffer, kill_current_block in quick_stop 2018-04-13 22:04:53 -05:00
Eduardo José Tagle 57a899a412 [2.0.x] 6th-order jerk-controlled motion planning in real-time for AVR (#10373) 2018-04-11 18:13:42 -05:00
etagle a29adde5c0 Implement BEZIER_JERK_CONTROL
Enable 6th-order jerk-controlled motion planning in real-time.
Only for 32bit MCUs. (AVR simply does not have enough processing power for this!)
2018-04-07 21:03:28 -05:00
Scott Lahteine 7d8a46519f Output ABC for delta stepper counts 2018-03-31 20:13:32 -05:00
Scott Lahteine 1cb810ff1c
[2.0.x] Automatically reset stepper timeout (#10179)
* Automatically reset stepper timeout in manage_inactivity

Any code that adds moves to the planner can skip resetting the stepper timeout. We can let `idle` / `manage_inactivity` reset the timer whenever it detects any moves in the planner.

* blocks_queued => has_blocks_queued
2018-03-21 19:30:06 -05:00
Scott Lahteine 48d7036874 Consolidate smart stepper driver initialization 2018-03-19 22:05:16 -05:00
Scott Lahteine eaefc1e410
Add CorePQ support for BABYSTEPPING (#10155) 2018-03-19 02:51:40 -05:00
Scott Lahteine 51bf3c9503 Fix E direction for MK2_MULTIPLEXER with LIN_ADVANCE 2018-03-14 07:56:18 -05:00
Scott Lahteine e7570f3195 Improve TMC config organization, naming 2018-03-14 00:18:41 -05:00
Scott Lahteine 751785fc97 Followup to recent patches
- `M666` is static, not inline
- Disambiguate some stepper macros
2018-03-10 21:41:17 -06:00
Scott Lahteine 16a8edc5f0 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:26:29 -06:00
Scott Lahteine 98d48fc731 Followup to HAL_timer_restrain
Followup to #9985
2018-03-07 22:18:37 -06:00
Chris Pepper a1a88ebabc HAL function to ensure min stepper interrupt interval (#9985) 2018-03-07 17:53:25 -06:00
Scott Lahteine e5ec793f7e Wrap stepper indirection macros 2018-03-07 05:42:45 -06:00
Sebastianv650 5b85464791 Fix for LA (#9964)
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:33:13 -06:00
Scott Lahteine ca0def766e LIN_ADVANCE single stepper optimization 2018-03-06 19:26:54 -06:00
Scott Lahteine 8291ae34f2 Support duplication mode in LIN_ADVANCE 2018-03-06 19:12:23 -06:00
Scott Lahteine 0dd1c4458d
Put more code between pulse start and stop (#9959) 2018-03-05 23:06:57 -06:00
Scott Lahteine 07ae23fe14 No pulse delay on last e_steps in advance isr 2018-03-04 15:06:31 -06:00
Scott Lahteine ed758de80d tweak comment in stepper.cpp 2018-03-04 04:03:23 -06:00
Scott Lahteine 6d7f4f84e2
Add board MKS_BASE_HEROIC (#9926)
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:52 -06:00
Sebastianv650 cb4cb86d80 Useless line removed (#9814)
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:20:37 -06:00
UtterlyD 813f9f3082 [bugfix_2.0.x] - LIN_ADVANCE V1.5 stepper.cpp (#9797)
Removal of obsolete (i) from port of LIN_ADVANCE from V1.1.x to V2..0.x.
2018-02-24 16:37:23 -06:00
Scott Lahteine 2bd252b501
[2.0.x] LIN_ADVANCE v1.5 (#9712) 2018-02-23 00:53:29 -06:00
Scott Lahteine 3d1692d1fd Fix X2 enable with X_DUAL_STEPPER_DRIVERS
From #9286
2018-02-18 22:50:47 -06:00
Scott Lahteine 03d790451f
[2.0.x] HAL timer set/get count => set/get compare (#9581)
To reduce confusion over the current timer count vs. the compare (aka "top") value. Caution: this re-uses the function name, changing its meaning.
2018-02-10 20:42:00 -06:00
Scott Lahteine d168ee9bed Drop leveling include from steppers.cpp 2018-02-08 01:32:19 -06:00
Scott Lahteine 887664aa61 Restore broken Dual X Carriage 2018-01-20 15:08:50 -06:00
Scott Lahteine 50366b00d5 Tweak cleaning buffer / SD finished command 2017-12-24 20:35:05 -06:00
Scott Lahteine 8df5955da4 Revert "Reset timer count before first block step"
This reverts commit 5cf6a062e3.
2017-12-17 02:37:35 -06:00
teemuatlut 0cd1e91056 [2.0.x] TMC driver update (#8769) 2017-12-15 15:03:14 -06:00
Scott Lahteine cf2193c07f Comment, fix filament width sensor 2017-12-13 02:32:34 -06:00
Scott Lahteine 73e32925e4 References are better for array args 2017-12-11 00:27:06 -06:00
Scott Lahteine 5cf6a062e3 Reset timer count before first block step 2017-12-10 18:38:53 -06:00
Scott Lahteine 82ef6b5242 Add an option to specify "pulse" timer 2017-12-10 18:38:53 -06:00
Scott Lahteine 4fa65a5c25 TCNT0 => HAL_timer_get_current_count
Fix #8710
2017-12-08 22:35:28 -06:00
Scott Lahteine 85c6ffbe0d Discard all "continued" blocks on interrupted move 2017-12-08 02:32:58 -06:00
Scott Lahteine 9898b96992 No lcd_map_control flag in quick_stop 2017-12-06 22:23:34 -06:00
Scott Lahteine 840289e7cc Use block cleaning instead of split flag 2017-12-06 22:22:58 -06:00
Scott Lahteine 2fde60da12 Changes for parity with 1.1.x 2017-12-06 21:50:54 -06:00
Scott Lahteine 6040d4080e Cleanup stepper ISR. Allow cleaning for endstops. 2017-12-06 21:23:37 -06:00
Scott Lahteine 000b3b3117 Comment/cleanup of motion code 2017-12-02 01:09:55 -06:00
Scott Lahteine 1d4571b88d Dependency adjustments 2017-11-19 15:43:38 -06:00
Scott Lahteine 2246316605 Fix name collision. timer_t => hal_timer_t 2017-11-05 19:31:07 -06:00
Scott Lahteine 723f2a77f6 Implement support for Dual X and Y endstops 2017-10-29 18:56:04 -05:00
Thomas Moore 9e699811d2 Make LPC1768 pinmapping not specific to Re-ARM (#8063)
* Merging early because of build failures.  See #8105

* Make LPC1768 pinmapping not specific to Re-ARM

* Add HAL_PIN_TYPE and LPC1768 pin features

* M43 Updates

* Move pin map into pinsDebug_LPC1768.h

* Incorporate comments and M226

* Fix persistent store compilation issues

* Update pin features

* Update MKS SBASE pins

* Use native LPC1768 pin numbers in M42, M43, and M226
2017-10-26 13:37:26 -05:00
Roxy-3D 6cb26c98c8 Fix Baby Stepping on 32-Bit platforms (#8001)
Also, Max7219 debug code was used for this effort.   It has been
improved and hardened.
2017-10-16 16:29:37 -05:00
Scott Lahteine 03f4891fb9 Remove legacy ADVANCE feature 2017-10-09 04:25:18 -05:00
Chris Pepper 46b2773e13 General fixes for LPC1768 (#7834)
* fixed some include paths

* LPC1768: Fix Serial API

Add missing serial methods used if TX_BUFFER_SIZE is set
Change return value of HalSerial:read to match Arduino API

* LPC1768: add filters to ADC

This is to try and compensate for hardware issue and oversensitivity to noise

* LPC1768: remove the polling section of delayMicroseconds

* LPC1768: lock usb mass storage device while device accesses it.

Currently only applicable to persistent store,
The device always has priority and will unmount the sd card from the host, Windows then tries to automount again so it can look like the explorer window freezes. Linux Mint, by default, just closes the Nemo window.

* Add timeout to make sure if Serial never connects that Marlin still boots

* Remove unneeded ifdef CPU_32_BIT

In general the need for ifdef CPU_32_BIT blocks means that something is missing from the HAL API or a Platform, in this case HAL_TICKS_PER_US was missing from the AVR Platform

* LPC1768: relocate RE-ARM debug_extra_script.py
2017-10-04 15:40:54 -05:00
Scott Lahteine 965b0ab53e Spacing adjustments 2017-10-01 21:58:50 -05:00
Scott Lahteine ac41eb5871 Merge pull request #7722 from tcm0116/2.0.x-warnings
Cleanup 2.0.x compiler warnings
2017-10-01 21:56:54 -05:00
Thomas Moore 0cb00f52d9 Cleanup warnings 2017-09-30 16:47:17 -05:00
Bob-the-Kuhn 1beaef0452 fix 3S hang & enable SPLIT 2017-09-30 10:27:41 -05:00
Dave Johnson f58ba3a64e Improve AVR arch detection
Replace ARDUINO_ARCH_AVR with __AVR__ to better detect architecture for non-Arduino dev environments.  Resolves compile failure in PIO for 8-bit Teensduino targets

More info:
https://forum.pjrc.com/threads/33234-Using-Teensyduino-Selecting-Teensy-3-2-3-1-board-has-incorrect-platform-define
http://www.atmel.com/webdoc/avrlibcreferencemanual/using_tools_1using_avr_gcc_mach_opt.html
2017-09-23 21:36:40 -07:00
Scott Lahteine 551752eac7 Consolidate "bedlevel" code 2017-09-21 16:26:47 -05:00
Scott Lahteine 722786966a Add gcode.cpp, motion.*, queue.* - Apply to some G-codes. 2017-09-21 16:26:45 -05:00
Scott Lahteine 3d8a0ab4b2 Module updates 2017-09-21 16:26:42 -05:00
Scott Lahteine 0c9231fd04 Move 'module' files 2017-09-12 14:51:05 -05:00
Renamed from Marlin/stepper.cpp (Browse further)