Commit graph

347 commits

Author SHA1 Message Date
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
Scott Lahteine 15fc93d742 Cleanup and consolidate probe conditionals for clarity 2016-05-08 12:59:43 -07:00
Scott Lahteine 6398d497b3 Ultimate followup to Stepper/Planner patch
- Search all symbols and apply prefixes where needed
- Encapsulate some private methods
- Inline some setters
- Make `microstep_mode` a public method
2016-05-03 17:07:37 -07:00
Scott Lahteine 96f51f400f Planner singleton class 2016-04-30 17:26:50 -07:00
Scott Lahteine 5e4e535ce8 Stepper and Endstops as singleton objects 2016-04-30 17:26:50 -07:00
João Brázio bcf1e027bb
Fix the redeclaration of _ENDSTOP_HIT 2016-04-17 18:37:37 +01:00
Scott Lahteine 7c16e774ca Show all endstops on LCD in checkHitEndstops 2016-04-16 20:08:42 -07:00
Scott Lahteine 3e5312f116 CORE support for st_set_position & plan_set_position 2016-04-11 15:13:42 -07:00
Scott Lahteine e087a99a10 Some cleanup of st_get_pos functions 2016-04-11 15:13:42 -07:00
Scott Lahteine dc19b69697 No casting needed for SERIAL_ECHOPAIR 2016-04-07 16:33:21 -07:00
esenapaj 7950b5268a Use SBI macro 2016-03-26 20:17:52 +09:00
Scott Lahteine 5d8036e554 Code cleanup around MOTOR_CURRENT_PWM options 2016-03-25 04:23:46 -07:00
Scott Lahteine 0da744b7b0 Further cleanup of comments, partial Doxygen-style
Following up on #3231
2016-03-25 00:45:56 -07:00
jbrazio 5e5d250832 Added gplv3 header to all Marlin files 2016-03-24 18:01:20 +00:00
Scott Lahteine af32a7d5d6 M120/M121 also set endstops non-homing state 2016-03-24 03:24:23 -07:00
Scott Lahteine c5857f96c8 Merge pull request #3182 from thinkyhead/rcbugfix_printrboard_revf
Add support for Printrboard RevF
2016-03-24 00:12:06 -07:00
Scott Lahteine 59483221d5 Move stepper DAC to a separate file 2016-03-19 19:24:26 -07:00
Scott Lahteine 5d0570cea0 Make digitalPotWrite depend on HAS_DIGIPOTSS 2016-03-19 19:24:26 -07:00
Stephanie 6843b78f99 Add support for Printrboard RevF
The PrintrBoard Rev F utilizes a mcp4728 DAC to set motor current. Printrbot's implementation utilizes 2 new M-codes to set and write the DAC settings to the DAC EEPROM: `M909` (Read DAC) and `M910` (Write DAC). `M907` is re-used to set value, `M908` for direct control.

The Pins file for the RevF board is included.
2016-03-19 16:43:37 -07:00
AnHardt 3f45a1acf9 Check probes only when deployed
Aim: Test probes in update_endstops only when activated

Changes:
Configurations
 Add define for FIX_MOUNTED_PROBE to handle the situation where formerly ENDSTOPS_ONLY_FOR_HOMING had to be set, or lowering the nozzle below Z_PROBE_OFFSET_FROM_EXTRUDER could give an "endstop hit" message.
 Add define for Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN to indicate a common situation, that we have a probe but it is connected to an endstop pin
 Add some comments
 Shift some entries to have related things together.

Conditionals.h
 We have a probe (HAS_Z_MIN_PROBE) if one of the pins is defined AND one of the probes is defined.

SanityCheck.h
 Add some tests if the probe is connected and if we have defined a probe.

stepper.cpp
 Changes to test the probe only when it is deployed (z_probe_is_active).
 Test update_endstops() when the probe is deployed.

MarlinMain.cpp
 a. set and reset z_probe_is_active in deploy_z_probe(), stow_z_probe() and dock_sled()
 b. set and reset z_probe_is_active in the case a z-servo is moved to a defined position. The only remaining unhandled servo move is in M280 where we do not end in a defined position. If you want to handle a probe use M401/402
 c. skip deploying/stowing when already deployed/stowed in the dedicated deploy/stow functions.
 d. Handle the new FIX_MOUNTED_PROBE in parallel to a servo driven probe/endstop.

 To do: In another PR. handle all probes in deploy/stow_z_probe.
 Sort out SERVO_LEVELING vs. HAS_SERVO_ENDSTOPS.
2016-03-19 02:00:08 -07:00
Scott Lahteine 4634feaeab Merge pull request #3012 from thinkyhead/fix_command_injection
Use a serial line buffer to prevent queue corruption
2016-03-19 01:43:54 -07:00
Scott Lahteine e5fd43f343 Implement BABYSTEPPING for COREXY and COREXZ 2016-03-18 18:22:53 -07:00
Scott Lahteine 8fe7420310 Use a separate serial line buffer 2016-03-18 16:46:20 -07:00
Alexander Leisentritt 4338813814 save last extruder and set stepper directions too in case the extruder changed
fixes MarlinFirmware/Marlin#3144 and MarlinFirmware/Marlin#3083
2016-03-16 20:20:34 +01:00
Scott Lahteine 6e1bc03d3b Additional wrapping for #3140 2016-03-15 01:18:58 -07:00
Scott Lahteine 0c48eaf3de Expose motor current in more configs, disable by default 2016-03-11 02:25:36 -08:00
Elijah Snyder e8b10d2836 Adding PWM_MOTOR_CURRENT flag to help expose PWM_MOTOR_CURRENTS in Configuration_adv.h similar to DIGIPOT_MOTOR_CURRENT 2016-03-11 02:25:36 -08:00
Scott Lahteine 3fd31976c3 Reduce code in stepper.cpp with macros 2016-03-10 01:42:58 -08:00
Scott Lahteine ff13070b59 Use _BV macros, patch up others 2016-03-06 05:51:55 -08:00
Scott Lahteine 373e8a1ad4 Fixes for COREXY and COREXZ coordinates 2016-02-15 15:59:24 -08:00
Naruto-kyun 2932602643 Update stepper.cpp
Forgot Z2_MIN_PIN
2016-01-15 16:50:43 +01:00
Richard Wackerbarth 7a670e3911 Improve planner & stepper PR #263 2015-12-10 07:24:37 -06:00
Scott Lahteine 644c376e84 Use binary OR with endstop bits 2015-11-12 00:03:22 -06:00
Scott Lahteine 9bdab4f3a8 Clean up "else" and other spacing 2015-11-12 00:03:21 -06:00