kopia lustrzana https://github.com/Schildkroet/GRBL-Advanced
Fixed backlash errors with soft reset; Code refactoring
rodzic
84df23dd0d
commit
20fbe3b588
|
@ -74,7 +74,7 @@ static void GPIO_InitStepper(void)
|
|||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
/* GPIO Configuration: D13, D12, D11, D7, D8, D2 */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
|
@ -169,7 +169,7 @@ static void GPIO_InitSystem(void)
|
|||
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
|
|
@ -108,12 +108,12 @@ void Spi_Init(SPI_TypeDef *SPIx, SPI_Mode mode)
|
|||
// Periph clock enable
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
|
||||
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_SPI3);
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_SPI3);
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_SPI3);
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_SPI3);
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_SPI3);
|
||||
GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_SPI3);
|
||||
|
||||
// Configure SPI pins: SCK, MOSI
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_5;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_12;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
|
@ -121,7 +121,7 @@ void Spi_Init(SPI_TypeDef *SPIx, SPI_Mode mode)
|
|||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
|
||||
// Configure pins: MISO
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
|
||||
// Reset SPI Interface
|
||||
|
@ -132,10 +132,24 @@ void Spi_Init(SPI_TypeDef *SPIx, SPI_Mode mode)
|
|||
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
|
||||
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
|
||||
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
|
||||
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
|
||||
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
|
||||
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
|
||||
SPI_InitStructure.SPI_CRCPolynomial = 7;
|
||||
SPI_Init(SPIx, &SPI_InitStructure);
|
||||
|
||||
// Initialize chip select
|
||||
RCC_AHB1PeriphClockCmd(SPI3_CS_GPIO_CLK, ENABLE);
|
||||
|
||||
// Configure CS pin
|
||||
GPIO_InitStructure.GPIO_Pin = SPI3_CS_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(SPI3_CS_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// Deselect chip
|
||||
GPIO_SetBits(SPI3_CS_GPIO_PORT, SPI3_CS_PIN);
|
||||
}
|
||||
|
||||
SPI_CalculateCRC(SPIx, DISABLE);
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
#define SPI2_CS_GPIO_CLK RCC_APB2Periph_GPIOB
|
||||
|
||||
// Default SPI3 CS Pins: PA15, PA4(AF)
|
||||
#define SPI3_CS_PIN GPIO_Pin_15
|
||||
#define SPI3_CS_GPIO_PORT GPIOA
|
||||
#define SPI3_CS_GPIO_CLK RCC_APB2Periph_GPIOA
|
||||
#define SPI3_CS_PIN GPIO_Pin_2
|
||||
#define SPI3_CS_GPIO_PORT GPIOD
|
||||
#define SPI3_CS_GPIO_CLK RCC_AHB1Periph_GPIOD
|
||||
|
||||
|
||||
#define SPI_PRESCALER_2 0x0000
|
||||
|
|
|
@ -67,6 +67,7 @@ uint32_t millis(void)
|
|||
return gMillis;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function handles NMI exception.
|
||||
* @param None
|
||||
|
|
468
grbl/GCode.c
468
grbl/GCode.c
Plik diff jest za duży
Load Diff
41
grbl/GCode.h
41
grbl/GCode.h
|
@ -33,22 +33,24 @@
|
|||
// a unique motion. These are defined in the NIST RS274-NGC v3 g-code standard, available online,
|
||||
// and are similar/identical to other g-code interpreters by manufacturers (Haas,Fanuc,Mazak,etc).
|
||||
// NOTE: Modal group define values must be sequential and starting from zero.
|
||||
#define MODAL_GROUP_G0 0 // [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1] Non-modal
|
||||
#define MODAL_GROUP_G1 1 // [G0,G1,G2,G3,G38.2,G38.3,G38.4,G38.5,G80] Motion
|
||||
#define MODAL_GROUP_G2 2 // [G17,G18,G19] Plane selection
|
||||
#define MODAL_GROUP_G3 3 // [G90,G91] Distance mode
|
||||
#define MODAL_GROUP_G4 4 // [G91.1] Arc IJK distance mode
|
||||
#define MODAL_GROUP_G5 5 // [G93,G94] Feed rate mode
|
||||
#define MODAL_GROUP_G6 6 // [G20,G21] Units
|
||||
#define MODAL_GROUP_G7 7 // [G40] Cutter radius compensation mode. G41/42 NOT SUPPORTED.
|
||||
#define MODAL_GROUP_G8 8 // [G43.1,G49] Tool length offset
|
||||
#define MODAL_GROUP_G12 9 // [G54,G55,G56,G57,G58,G59] Coordinate system selection
|
||||
#define MODAL_GROUP_G13 10 // [G61] Control mode
|
||||
#define MODAL_GROUP_G0 0 // [G4,G10,G28,G28.1,G30,G30.1,G53,G92,G92.1] Non-modal
|
||||
#define MODAL_GROUP_G1 1 // [G0,G1,G2,G3,G38.2,G38.3,G38.4,G38.5,G80] Motion
|
||||
#define MODAL_GROUP_G2 2 // [G17,G18,G19] Plane selection
|
||||
#define MODAL_GROUP_G3 3 // [G90,G91] Distance mode
|
||||
#define MODAL_GROUP_G4 4 // [G91.1] Arc IJK distance mode
|
||||
#define MODAL_GROUP_G5 5 // [G93,G94] Feed rate mode
|
||||
#define MODAL_GROUP_G6 6 // [G20,G21] Units
|
||||
#define MODAL_GROUP_G7 7 // [G40] Cutter radius compensation mode. G41/42 NOT SUPPORTED.
|
||||
#define MODAL_GROUP_G8 8 // [G43.1,G49] Tool length offset
|
||||
#define MODAL_GROUP_G12 9 // [G54,G55,G56,G57,G58,G59] Coordinate system selection
|
||||
#define MODAL_GROUP_G13 10 // [G61] Control mode
|
||||
|
||||
#define MODAL_GROUP_G10 11 // [G98, G99] Canned Cycles Return Mode
|
||||
|
||||
#define MODAL_GROUP_M4 11 // [M0,M1,M2,M30] Stopping
|
||||
#define MODAL_GROUP_M7 12 // [M3,M4,M5] Spindle turning
|
||||
#define MODAL_GROUP_M8 13 // [M7,M8,M9] Coolant control
|
||||
#define MODAL_GROUP_M9 14 // [M56] Override control
|
||||
#define MODAL_GROUP_M7 12 // [M3,M4,M5] Spindle turning
|
||||
#define MODAL_GROUP_M8 13 // [M7,M8,M9] Coolant control
|
||||
#define MODAL_GROUP_M9 14 // [M56] Override control
|
||||
|
||||
|
||||
// Define command actions for within execution-type modal groups (motion, stopping, non-modal). Used
|
||||
|
@ -81,6 +83,9 @@
|
|||
#define MOTION_MODE_PROBE_AWAY 142 // G38.4 (Do not alter value)
|
||||
#define MOTION_MODE_PROBE_AWAY_NO_ERROR 143 // G38.5 (Do not alter value)
|
||||
#define MOTION_MODE_NONE 80 // G80 (Do not alter value)
|
||||
#define MOTION_MODE_DRILL 81 // G81
|
||||
#define MOTION_MODE_DRILL_DWELL 82 // G82
|
||||
#define MOTION_MODE_DRILL_PECK 83 // G83
|
||||
|
||||
// Modal Group G2: Plane select
|
||||
#define PLANE_SELECT_XY 0 // G17 (Default: Must be zero)
|
||||
|
@ -129,6 +134,10 @@
|
|||
#define TOOL_LENGTH_OFFSET_CANCEL 0 // G49 (Default: Must be zero)
|
||||
#define TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC 1 // G43.1
|
||||
|
||||
// Modal Group G10: Canned Cycle Return Level
|
||||
#define RETRACT_OLD_Z 0 // G98 (Default: Must be zero)
|
||||
#define RETRACT_SPECIFIED_R 1
|
||||
|
||||
// Modal Group G12: Active work coordinate system
|
||||
// N/A: Stores coordinate system value (54-59) to change to.
|
||||
|
||||
|
@ -146,6 +155,7 @@
|
|||
#define WORD_X 10
|
||||
#define WORD_Y 11
|
||||
#define WORD_Z 12
|
||||
#define WORD_Q 13
|
||||
|
||||
// Define g-code parser position updating flags
|
||||
#define GC_UPDATE_POS_TARGET 0 // Must be zero
|
||||
|
@ -183,6 +193,7 @@ typedef struct {
|
|||
uint8_t feed_rate; // {G93,G94}
|
||||
uint8_t units; // {G20,G21}
|
||||
uint8_t distance; // {G90,G91}
|
||||
uint8_t retract; // {G98,G99}
|
||||
// uint8_t distance_arc; // {G91.1} NOTE: Don't track. Only default supported.
|
||||
uint8_t plane_select; // {G17,G18,G19}
|
||||
// uint8_t cutter_comp; // {G40} NOTE: Don't track. Only default supported.
|
||||
|
@ -201,7 +212,7 @@ typedef struct {
|
|||
uint8_t l; // G10 or canned cycles parameters
|
||||
int32_t n; // Line number
|
||||
float p; // G10 or dwell parameters
|
||||
// float q; // G82 peck drilling
|
||||
float q; // G82 peck drilling
|
||||
float r; // Arc radius
|
||||
float s; // Spindle speed
|
||||
uint8_t t; // Tool selection
|
||||
|
|
|
@ -39,6 +39,20 @@ static float target_prev[N_AXIS] = {0.0};
|
|||
static uint8_t dir_negative[N_AXIS] = {0};
|
||||
|
||||
|
||||
void MC_Init(void)
|
||||
{
|
||||
int32_t current_position[N_AXIS]; // Copy current state of the system position variable
|
||||
|
||||
for(uint8_t i = 0; i < N_AXIS; i++)
|
||||
{
|
||||
dir_negative[i] = 0;
|
||||
}
|
||||
|
||||
memcpy(current_position, sys_position, sizeof(sys_position));
|
||||
System_ConvertArraySteps2Mpos(target_prev, current_position);
|
||||
}
|
||||
|
||||
|
||||
// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second
|
||||
// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in
|
||||
// (1 minute)/feed_rate time.
|
||||
|
@ -305,6 +319,7 @@ void MC_Dwell(float seconds)
|
|||
return;
|
||||
}
|
||||
|
||||
// TODO: DWELL sys.state
|
||||
Protocol_BufferSynchronize();
|
||||
Delay_sec(seconds, DELAY_MODE_DWELL);
|
||||
}
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#define HOMING_CYCLE_Z BIT(Z_AXIS)
|
||||
|
||||
|
||||
void MC_Init(void);
|
||||
|
||||
|
||||
// Execute linear motion in absolute millimeter coordinates. Feed rate given in millimeters/second
|
||||
// unless invert_feed_rate is true. Then the feed_rate means that the motion should be completed in
|
||||
// (1 minute)/feed_rate time.
|
||||
|
|
6
main.c
6
main.c
|
@ -40,9 +40,6 @@ volatile uint8_t sys_rt_exec_accessory_override; // Global realtime executor bit
|
|||
|
||||
int main(void)
|
||||
{
|
||||
// Init SysTick 1ms
|
||||
SysTick_Init();
|
||||
|
||||
// Init formatted output
|
||||
Print_Init();
|
||||
|
||||
|
@ -52,6 +49,9 @@ int main(void)
|
|||
|
||||
System_ResetPosition();
|
||||
|
||||
// Init SysTick 1ms
|
||||
SysTick_Init();
|
||||
|
||||
if(BIT_IS_TRUE(settings.flags, BITFLAG_HOMING_ENABLE))
|
||||
{
|
||||
sys.state = STATE_ALARM;
|
||||
|
|
Ładowanie…
Reference in New Issue