Commit Graph

109 Commits

Author SHA1 Message Date
Todd Fleming
6b1e180e66 $140, $141, $142 current control 2017-01-15 17:09:59 -05:00
Todd Fleming
2b5d6a9871 Flash memory 2017-01-14 23:54:36 -05:00
Todd Fleming
f67c21a431 tuning 2017-01-14 15:12:07 -05:00
Todd Fleming
4e9d5f78b4 spindle pwm 2017-01-12 19:28:38 -05:00
Todd Fleming
6f13d0d18b Tuning 2017-01-11 15:25:19 -05:00
Todd Fleming
9c312eef84 debugging 2017-01-11 11:41:47 -05:00
Todd Fleming
c7a4b77e47 rx buffer size = 1024 2017-01-10 17:03:14 -05:00
Todd Fleming
408d820b9f usb serial 2017-01-09 19:58:14 -05:00
Todd Fleming
a27feeab51 Oops. need part of settings_init(). 2017-01-09 06:38:22 -05:00
Todd Fleming
3ab9e6bd6e Don't error from missing eeprom 2017-01-09 06:26:29 -05:00
Todd Fleming
5eb4fdacdd Fix interrupt enable restore bug 2017-01-09 06:25:52 -05:00
Todd Fleming
5bd05fbe14 stepper bug 2017-01-09 04:06:46 -05:00
Todd Fleming
53ebacb6e4 Set ISR priorities 2017-01-08 20:48:25 -05:00
Todd Fleming
8a28b4d098 Fix stepper cycles calc 2017-01-08 18:46:58 -05:00
Todd Fleming
d4cbac2a5c Port stepper 2017-01-08 16:12:24 -05:00
Todd Fleming
fdf6e31218 delay_us, delay_ms 2017-01-07 23:30:48 -05:00
Todd Fleming
4ec14b6ec6 Current control 2017-01-07 18:31:12 -05:00
Unknown
34a4c93ccc Whoops 2017-01-07 15:55:23 -05:00
Unknown
eabf9d2cfd Made easier to switch uart channels. 2017-01-07 15:51:42 -05:00
Unknown
da6227c27d First cut at serial modification for ARM. Uses a CMSIS driver for now. 2017-01-07 15:47:45 -05:00
Todd Fleming
35aef077c6 motion_control.c: add PARKING_ENABLE condition 2017-01-06 14:46:39 -05:00
Todd Fleming
c00263c5f3 Revert changes to serial.c 2017-01-06 13:32:17 -05:00
Todd Fleming
72dc1c3f9b system.c: preserve interrupt enable 2017-01-05 20:03:54 -05:00
Unknown
c93491fb64 Started serial replacement 2017-01-04 22:07:31 -05:00
Todd Fleming
fb5ba4cfb9 limit pins 2017-01-04 20:48:59 -05:00
Todd Fleming
bbbdb60076 step, dir, enable ports 2017-01-04 19:04:38 -05:00
Todd Fleming
f5a117d0ba Copy DEFAULTS_GENERIC and CPU_MAP_ATMEGA328P 2017-01-04 18:03:07 -05:00
Todd Fleming
c8c76e0e85 Move hacks from smoother/main to grbl/main 2017-01-04 13:50:50 -05:00
Todd Fleming
4ba78b416f Brett's changes 2017-01-04 13:43:06 -05:00
Todd Fleming
03787d2b28 make globals extern 2017-01-02 22:15:41 -05:00
Todd Fleming
137d36cce5 true and false may already be defined 2017-01-02 22:09:05 -05:00
Sonny Jeon
864d1306b9 Fixed homing fail alarm handling. Re-integrated software debouncing.
- [bug] Fixed a homing fail issue, where the alarm was not being set
right, not cleared correctly. It would report the wrong code and enter
an infinite alarm loop. This was due to how alarm codes were altered a
while back. Now updated and fixed to show the right codes.

- [feature] Re-installed optional software debouncing for hard limit
switches. By request.
2016-12-19 22:18:23 -07:00
Sonny Jeon
d5ed3bdb81 Addressed optional PWM min value issue. Updated docs.
- [fix] Spindle PWM minimum value had some typos. Fixed the macros to
compile correctly. Only effects users that enable SPINDLE_MINIMUM_PWM.
The name changed to SPINDLE_PWM_MIN_VALUE for consistency sake.

- Updated the laser documentation.
2016-12-18 19:17:55 -07:00
Sonny Jeon
91d6de90bd Updated documentation. Cleaned up a bit.
- [doc] Updated the markdown documents for the v1.1 release.

- [doc] Removed references to classic GUI mode.
2016-12-10 23:13:28 -07:00
Sonny Jeon
490d3f1220 Removed classic GUI interface. Fixed typo with line number support.
- [config] Permanently removed classic GUI interface support. This
unintentionally created a problem where some users/GUI devs used this
compatibility mode and did not update to the new interface. So, there
were two interfaces in use, rather than just one like it was intended.
This removal should help everyone by forcing all GUIs to update and
updated GUI not having to support yet another interface.

- Fixed typo with line number support in jog mode.
2016-12-08 23:17:45 -07:00
chamnit
94083e8314 Fixed unintended laser mode pausing. Updated documentation. Min SS OVR lowered to 10%.
- [laser] Tested a working version and pushed the wrong one for the
last! 20161203 was pausing upon every spindle speed change. That’s not
right. Fixed so nearly all motions are passed through and does not stop.

- Minimum spindle speed override lower from 50% to 10%. Lasers could
use the lower speeds.

- Fixed a very minor bug related to G80 error checking. Allowed no
error with non-modal motions with axis words. Not correct and fixed.

- Fixed a compile error when disabling VARIABLE_SPINDLE

- [doc] Updated some obsolete documentation.

- [doc] Started a “Laser Mode” document that summarizes how Grbl’s new
laser mode works.
2016-12-04 23:49:48 -07:00
Sonny Jeon
b753c542c7 v1.1e: New laser features. G-code parser refactoring. CoreXY homing fix.
- Increment to v1.1e due to new laser features.

- After several discussions with some prominent laser people, a few
tweaks to the new laser mode has been installed.

- LASER: M3 behaves in a constant power mode.

- LASER: M4 behaves in a dynamic power mode, where the laser power is
automatically adjusted based on how fast Grbl is moving relative to the
programmed feed rate. This is the same as the  CONSTANT_POWER_PER_RATE
config.h option in the last version. NOTE: When not in motion in M4,
Grbl automatically turns off the laser. Again, it only operates while
moving!

- LASER: Only G1, G2, and G3 motion modes will turn on the laser. So,
this means that G0, G80 motion modes will always keep the laser
disabled. No matter if M3/M4 are active!

- LASER: A spindle stop override is automatically invoked when a laser
is put in a feed hold. This behavior may be disabled by a config.h
option.

- Lots of little tweaks to the g-code parser to help streamline it a
bit. It should no effect how it operates. Generally just added a parser
flag to track and execute certain scenarios a little more clearly.

- Jog motions now allow line numbers to be passed to it and will be
displayed in the status reports.

- Fixed a CoreXY homing bug.

- Fixed an issue when $13 is changed, WCO isn’t sent immediately.

- Altered how spindle PWM is set in the stepper ISR. Updated on a step
segment basis now. May need to change this back if there are any
oddities from doing this.

- Updated some documentation. Clarified why M0 no longer showing up in
$G and why a `1.` floating point values are shown with no decimals,
like so `1`.
2016-12-03 18:02:45 -07:00
Sonny Jeon
998f23b9ce PWM calculation correction.
- The PWM calculation was a little bit off and has been corrected.

- Edited the unused settings strings to be smaller and just show what
the settings are, rather than include units. May include this in the
master build, if it fits.

- The minimum spindle PWM define in config.h needed to be update for
cpu map compatibilty.
2016-11-12 20:54:38 -07:00
Sonny Jeon
1161056bf2 Fixed a g-code parser issue caused by last commit.
- G-code parser refactoring in the last commit wasn’t tested. Found and
fixed issues with G28.1/30.1 and G38.x probe commands. They were not
being accepted due to a borked mantissa check.
2016-11-04 10:50:28 -06:00
Sonny Jeon
6e3fb6bd13 Improved constant laser power per rate mode. Re-factored for flash size. Minor bug fixes.
- NOTE: This commit has largely been untested.

- Constant laser power per rate mode has been improved. Altered its
implementation to be more responsive and accurate.

- Based on LaserWeb dev feedback, only G1, G2, and G3 moves operate
with constant laser power mode. Meaning that G0, G38.x, and $J jogging
motions operate without it and will keep a constant power output. This
was specifically requested as a way to focus the laser by keeping the
laser on when not moving. Operationally, this shouldn’t alter how the
laser mode operates.

- Re-factored parts of the g-code parser and g-code state reports to
save a few hundred bytes of flash. What was done makes the code a bit
more unreadable (bad), but the flash space was in dire need. So, I’m
willing to live with it for now.

- Fixed a problem with $G g-code state reports. Showed `M0` program
pause during a run state. Now fixed to show nothing during a run state.
Also, `M30` program end was shown as `M2`. This was also corrected.

- Improved spindle stop override responsiveness by removing the
enforced spindle restoring delay. It’s not needed for a feature that is
user controlled.

- Fixed a bug with G2/3 arcs in inverse time mode.

- Updated the interface.md document to make it more clear how WPos: or
MPos: can be calculated from WCO:. Some GUI devs have failed to catch
this in the documentation.
2016-11-04 09:15:34 -06:00
Sonny Jeon
e8b717604b Spindle speed overrides behavior tweak. New experimental laser dynamic power mode.
- Spindle speed overrides now update immediately if they are changed
while in a HOLD state. Previously, they would update after exiting the
HOLD, which isn’t correct.

- New experimental dynamic laser power mode that adjusts laser power
based on current machine speed. Enabled by uncommenting
LASER_CONSTANT_POWER_PER_RATE in config.h

  - It assumes the programmed rate is the intended power/rate for the
motion.
  - Feed rate overrides (FRO) do not effect the power/rate. Meaning
that spindle PWM will automatically lower with lower FRO and increase
with higher FRO to keep it the same.
  - Spindle speed overrides (SSO) will directly increase and decrease
the power/rate. So 150% SSO will increase the PWM output by 150% for
the same speed.
  - The combination of FRO and SSO behaviors should allow for subtle
and highly flexible tuning of how the laser cutter is operating in
real-time and during the job.

- Re-factored planner block rapid rate handling for the dynamic laser
power feature. Should have had no effect on how Grbl operates.
2016-10-27 09:11:59 -06:00
Sonny Jeon
cb916a996a Add high-frequency spindle output option. Minor parking motion re-factoring.
- Some laser controllers were reported to need a very high PWM
frequency. Added a line to enable this in cpu_map.h, if needed.

- Cleaned up some of the parking code. Mostly just editing the comments.

- Moved the accessory state resetting after the initial parking
retract. Should ensure the accessory state is properly handled upon an
aborted parking restore. Not certain if this was a problem before
though. Just to be sure.
2016-10-26 08:42:45 -06:00
chamnit
3854d200bb Mandate all probe cycles ignore feed overrides.
- For repeatability reasons, all G38.x probe cycles ignore feed rate
overrides and move at their programmed speed.

- The mandate can be removed with a new config.h option.

- Updated the documentation to reflect the change.
2016-10-25 20:03:30 -06:00
chamnit
a6f6431515 Resolved parking accessory handling issue.
- Yikes. Totally borked the last parking “fix”. Testing shows that all
accessories are now properly handled when retracting and restoring. It
was caused by not accounting for the planner re-factoring correctly in
the parking code.
2016-10-25 19:43:06 -06:00
Sonny Jeon
f8ca08ad66 Minor re-factoring. Fix an issue with parking and spindle restore.
- Altered the report counters to be count down, rather than count up.
Simplified some of the logic.

- Fixed an issue with parking restore. The spindle state would disable
then reenable.

- Clarified some of the config.h descriptions.

- Moved the compile-time checks from config.h to grbl.h. They don’t
belong in the config.h file.

- Refactored the initialization of the system variables in main.c.
System position and probe position were undefined when power cycled,
but were zero anyway. Added clear vector code to make it explicit.
2016-10-24 22:18:13 -06:00
Sonny Jeon
498dd62572 Spindle speed close to minimum fix.
- When spindle speed is close to the minimum rpm, the PWM value would
be zero or lower than allowed. The computation error was caused by
setting the minimum PWM value to zero, when it should have been 1.

- Added a compiler check for minimum PWM to be greater than zero.

- Moved some of the spindle PWM macros to a more appropriate place in
the cpu_map.h.
2016-10-23 13:55:50 -06:00
Will Winder
8e638f0054 Minor VARIABLE_SPINDLE feature toggle refactoring (#16)
* Modify code CSV format.

- Wrap value in quotes to avoid issue with embedded commas. This occurs
  in one of the alarm codes.

- Change header row format to allow same parsing code as data rows.

* VARIABLE_SPINDLE feature flag experiment.

- Use a macro for 'spindle_set_speed' and 'spindle_sync' to reduce the
  number of required VARIABLE_SPINDLE checks.
2016-10-22 13:28:05 -06:00
Sonny Jeon
8b76a39d5d Improved option for v0.9 GUI compatibility.
- Addressed an issue with backward compatibility with Grbl v0.9-style
GUIs.

- It still may not work due to new data and states coming back from
Grbl v1.1. Regardless, DO NOT TRY TO USE THE COMPATIBILITY MODE UNTIL
THERE IS A REALLY GOOD REASON TO.

- v0.9 GUI compatibility mode will be removed in future versions.
You’ve been warned. It’s highly recommended for GUIs to update to the
new v1.1 interface.

- Compability mode will only fit on an Arduino Uno due to size
increases.

- Removed the REPORT_GUI_MODE compile option since it’s part of the
v1.1 interface standard.

- Updated the documentation to better describe the compatibility mode
build option.
2016-10-18 22:58:52 -06:00
Sonny Jeon
ed790c9fa2 v1.1d: Tweaked interface a bit. Added realtime spindle speed and build option data. Minor bug fixes.
- Increment to v1.1d due to interface tweaks.

- Based on GUI dev feedback, the toggle overrides report was removed
and replace with showing “accessory state”. This shows a character if a
particular accessory is enabled, like the spindle or flood coolant.
These can be directly altered by the toggle overrides, so when they
execute, a GUI will be able to observe the state altering as feedback.

- Altered the real-time feed rate to show real-time spindle speed as
well. It was an over-sight on my part. It’s needed because it’s hard to
know what the current spindle speed is when overrides are altering it.
Especially during something like a laser cutting job when its important
to know how spindle speed overrides are effecting things.

- Real-time spindle speed is not shown if VARIABLE_SPINDLE is disabled.
The old real-time feed rate data field will show instead.

- Compile-time option data is now included in another message
immediately following the build info version string, starting with
`[OPT:`. A character code follows the data type name with each
indicating a particular option enabled or disabled. This will help
immensely with debugging Grbl as well as help GUIs know exactly how
Grbl was compiled.

- These interface changes are detailed in the updated documentation.

- Reduced the default planner buffer size from 17 to 16. Needed to free
up some memory…

- For increasing the serial TX buffer size from 90 to 104 bytes. The
addition of real-time spindle speeds and accessory enable data required
a bigger buffer. This is to ensure Grbl is performing at optimal levels.

- Refactored parts of the spindle and coolant control code to make it
more consistent to each other and how it was called. It was a little
messy. The changes made it easier to track what each function call was
doing based on what was calling it.

- Created a couple of new get_state functions for the spindle and
coolant. These are called by the accessory state report to look
directly at the pin state, rather than track how it was set. This
guarantees that the state is reported correctly.

- Updated the g-code parser, parking motion, sleep mode, and spindle
stop calls to refactored spindle and coolant code.

- Added a compile-time option to enable homing individual axes, rather
than having only the main homing cycle. The actual use case for this is
pretty rare. It’s not recommended you enable this, unless you have a
specific application for it. Otherwise, just alter the homing cycle
itself.

- Refactored the printFloat() function to not show a decimal point if
there are no trailing values after it. For example, `1.` now shows `1`.

- Fixed an issue regarding spindle speed overrides no being applied to
blocks without motions.

- Removed the toggle_ovr_mask system variable and replaced with
spindle_stop_ovr system variable. Coolant toggles don’t need to be
tracked.

- Updated README
2016-10-17 23:48:25 -06:00
chamnit
a0e96eb11a Added settings documentation. Very minor bug fix to step direction handling.
- Added v1.1 settings documentation to the markdown folder.

- Fixed a very minor bug in the step direction handling upon wakeup.
The direction mask would temporarily go back to default mask for about
a millisecond when moving in the same non-default direction. It did not
effect Grbl behavior before, but fixed for consistency.
2016-10-12 19:18:05 -06:00