Pushed bug fixes. Updated readme.

- G18 plane select fix from XZ-plane to ZX-plane per right hand rule.

- Added volatile declaration for rx_buffer_tail in serial.c. No real
effect to operation as avr-gcc adds this upon compilation. Helps with
porting issues when using a different compiler.
This commit is contained in:
Sonny Jeon 2013-12-07 10:10:36 -07:00
parent cc3212d54a
commit d00525d384
3 changed files with 18 additions and 12 deletions

View File

@ -3,7 +3,7 @@
Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC milling. It will run on a vanilla Arduino (Duemillanove/Uno) as long as it sports an Atmega 328. Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC milling. It will run on a vanilla Arduino (Duemillanove/Uno) as long as it sports an Atmega 328.
The controller is written in highly optimized C utilizing every clever feature of the AVR-chips to achieve precise timing and asynchronous operation. It is able to m aintain more than 30kHz of stable, jitter free control pulses. The controller is written in highly optimized C utilizing every clever feature of the AVR-chips to achieve precise timing and asynchronous operation. It is able to maintain up to 30kHz of stable, jitter free control pulses.
It accepts standards-compliant G-code and has been tested with the output of several CAM tools with no problems. Arcs, circles and helical motion are fully supported, as well as, other basic functional g-code commands. Functions and variables are not currently supported, but may be included in future releases in a form of a pre-processor. It accepts standards-compliant G-code and has been tested with the output of several CAM tools with no problems. Arcs, circles and helical motion are fully supported, as well as, other basic functional g-code commands. Functions and variables are not currently supported, but may be included in future releases in a form of a pre-processor.
@ -11,11 +11,15 @@ Grbl includes full acceleration management with look ahead. That means the contr
##Downloads (Right-Click and Save-Link-As): ##Downloads (Right-Click and Save-Link-As):
_**Master Branch:**_ _**Master Branch:**_
* [Grbl v0.8c Atmega328p 16mhz 9600baud](http://bit.ly/SSdCJE) Last updated: 2013-04-05 (Line buffer increased and overflow feedback added.) * [Grbl v0.8c Atmega328p 16mhz 9600baud](http://bit.ly/SSdCJE) (Last updated: 2013-12-07)
- 2013-12-07: G18 and serial volatile fixes.
- 2013-04-05: Line buffer increased and overflow feedback added.
_**Edge/Development Branch:**_ _**Edge/Development Branch:**_
* [Grbl v0.9a Build 2013-03-19](http://bit.ly/Y0tMHo) : Updated g-code G10. * [Grbl v0.9a Build 2013-03-19](http://bit.ly/Y0tMHo) : Edge Branch
* [Grbl v0.9a Build 2012-12-21](http://bit.ly/VWe4VW) : For testing only. New experimental stepper algorithm. Smoother. Axes acceleration and maximum velocity limits. Automatic arc segment scaling by tolerance setting, leading to much faster feedrates about them. 30kHz step rate absolute max. CAUTION: Bugs still exist. Settings WILL be over-written. Please let us know of any lingering bugs (except with homing). - New experimental stepper algorithm. Smoother. Axes acceleration and maximum velocity limits. Automatic arc segment scaling by tolerance setting, leading to much faster feedrates about them. Updated g-code G10. 30kHz step rate absolute max. CAUTION: Bugs still exist. Settings WILL be over-written. Please let us know of any lingering bugs (except with homing).
* [Grbl v0.9b Build 2013-12-07](http://bit.ly/1jxQIFg) : Dev Branch (Baudrate: 115200)
- Developmental branch build. Protected planner buffer and new step segment buffer allow performance increases over 4x in limited testing. No more racing conditions when jogging. Fearlessly drive at the maximum speeds of your machine. New soft limits feature that will safely prevent your machine exceed its travel limits and retain true positioning (only works with homing enabled). CAUTION: Bugs still exist and fixes will be pushed Settings WILL be over-written. Please let us know of any lingering bugs.
_**Archives:**_ _**Archives:**_
* [Grbl v0.8a Atmega328p 16mhz 9600baud](http://bit.ly/TVCTVv) * [Grbl v0.8a Atmega328p 16mhz 9600baud](http://bit.ly/TVCTVv)

View File

@ -131,7 +131,7 @@ uint8_t gc_execute_line(char *line)
case 4: non_modal_action = NON_MODAL_DWELL; break; case 4: non_modal_action = NON_MODAL_DWELL; break;
case 10: non_modal_action = NON_MODAL_SET_COORDINATE_DATA; break; case 10: non_modal_action = NON_MODAL_SET_COORDINATE_DATA; break;
case 17: select_plane(X_AXIS, Y_AXIS, Z_AXIS); break; case 17: select_plane(X_AXIS, Y_AXIS, Z_AXIS); break;
case 18: select_plane(X_AXIS, Z_AXIS, Y_AXIS); break; case 18: select_plane(Z_AXIS, X_AXIS, Y_AXIS); break;
case 19: select_plane(Y_AXIS, Z_AXIS, X_AXIS); break; case 19: select_plane(Y_AXIS, Z_AXIS, X_AXIS); break;
case 20: gc.inches_mode = true; break; case 20: gc.inches_mode = true; break;
case 21: gc.inches_mode = false; break; case 21: gc.inches_mode = false; break;

View File

@ -30,7 +30,7 @@
uint8_t rx_buffer[RX_BUFFER_SIZE]; uint8_t rx_buffer[RX_BUFFER_SIZE];
uint8_t rx_buffer_head = 0; uint8_t rx_buffer_head = 0;
uint8_t rx_buffer_tail = 0; volatile uint8_t rx_buffer_tail = 0;
uint8_t tx_buffer[TX_BUFFER_SIZE]; uint8_t tx_buffer[TX_BUFFER_SIZE];
uint8_t tx_buffer_head = 0; uint8_t tx_buffer_head = 0;
@ -122,12 +122,14 @@ ISR(SERIAL_UDRE)
uint8_t serial_read() uint8_t serial_read()
{ {
if (rx_buffer_head == rx_buffer_tail) { uint8_t tail = rx_buffer_tail; // Temporary rx_buffer_tail (to optimize for volatile)
if (rx_buffer_head == tail) {
return SERIAL_NO_DATA; return SERIAL_NO_DATA;
} else { } else {
uint8_t data = rx_buffer[rx_buffer_tail]; uint8_t data = rx_buffer[tail];
rx_buffer_tail++; tail++;
if (rx_buffer_tail == RX_BUFFER_SIZE) { rx_buffer_tail = 0; } if (tail == RX_BUFFER_SIZE) { tail = 0; }
rx_buffer_tail = tail;
#ifdef ENABLE_XONXOFF #ifdef ENABLE_XONXOFF
if ((get_rx_buffer_count() < RX_BUFFER_LOW) && flow_ctrl == XOFF_SENT) { if ((get_rx_buffer_count() < RX_BUFFER_LOW) && flow_ctrl == XOFF_SENT) {