mirror of
https://github.com/grblHAL/core.git
synced 2026-09-23 12:13:53 +08:00
Updates and additions to support driver development
This commit is contained in:
+60
-12
@@ -54,7 +54,46 @@ typedef enum {
|
||||
Input_Aux0,
|
||||
Input_Aux1,
|
||||
Input_Aux2,
|
||||
Input_Aux3
|
||||
Input_Aux3,
|
||||
Input_Aux4,
|
||||
Input_Aux5,
|
||||
Input_Aux6,
|
||||
Input_Aux7,
|
||||
Output_StepX,
|
||||
Output_StepY,
|
||||
Output_StepZ,
|
||||
Output_StepA,
|
||||
Output_StepB,
|
||||
Output_StepC,
|
||||
Output_DirX,
|
||||
Output_DirY,
|
||||
Output_DirZ,
|
||||
Output_DirA,
|
||||
Output_DirB,
|
||||
Output_DirC,
|
||||
Output_StepperEnable,
|
||||
Output_StepperEnableX,
|
||||
Output_StepperEnableY,
|
||||
Output_StepperEnableZ,
|
||||
Output_StepperEnableA,
|
||||
Output_StepperEnableB,
|
||||
Output_StepperEnableC,
|
||||
Output_StepperEnableXY,
|
||||
Output_StepperEnableAB,
|
||||
Output_SpindleOn,
|
||||
Output_SpindleDir,
|
||||
Output_SpindlePWM,
|
||||
Output_CoolantMist,
|
||||
Output_CoolantFlood,
|
||||
Output_SdCardCS,
|
||||
Output_Aux0,
|
||||
Output_Aux1,
|
||||
Output_Aux2,
|
||||
Output_Aux3,
|
||||
Output_Aux4,
|
||||
Output_Aux5,
|
||||
Output_Aux6,
|
||||
Output_Aux7
|
||||
} pin_function_t;
|
||||
|
||||
typedef enum {
|
||||
@@ -65,17 +104,26 @@ typedef enum {
|
||||
} pin_irq_mode_t;
|
||||
|
||||
typedef enum {
|
||||
PinGroup_Control = (1<<0),
|
||||
PinGroup_Limit = (1<<1),
|
||||
PinGroup_Probe = (1<<2),
|
||||
PinGroup_Keypad = (1<<3),
|
||||
PinGroup_MPG = (1<<4),
|
||||
PinGroup_QEI = (1<<5),
|
||||
PinGroup_QEI_Select = (1<<6),
|
||||
PinGroup_SpindlePulse = (1<<7),
|
||||
PinGroup_SpindleIndex = (1<<8),
|
||||
PinGroup_AuxInput = (1<<9),
|
||||
PinGroup_AuxOutput = (1<<10)
|
||||
PinGroup_Control = (1<<0),
|
||||
PinGroup_Limit = (1<<1),
|
||||
PinGroup_Probe = (1<<2),
|
||||
PinGroup_Keypad = (1<<3),
|
||||
PinGroup_MPG = (1<<4),
|
||||
PinGroup_QEI = (1<<5),
|
||||
PinGroup_QEI_Select = (1<<6),
|
||||
PinGroup_SpindleControl = (1<<7),
|
||||
PinGroup_SpindlePWM = (1<<8),
|
||||
PinGroup_Coolant = (1<<9),
|
||||
PinGroup_SpindlePulse = (1<<10),
|
||||
PinGroup_SpindleIndex = (1<<11),
|
||||
PinGroup_StepperEnable = (1<<12),
|
||||
PinGroup_StepperStep = (1<<13),
|
||||
PinGroup_StepperDir = (1<<14),
|
||||
PinGroup_AuxInput = (1<<15),
|
||||
PinGroup_AuxOutput = (1<<16),
|
||||
PinGroup_SdCard = (1<<17),
|
||||
PinGroup_I2C = (1<<18),
|
||||
PinGroup_SPI = (1<<19)
|
||||
} pin_group_t;
|
||||
|
||||
typedef bool (*xbar_get_value_ptr)(void);
|
||||
|
||||
@@ -56,11 +56,11 @@ typedef union {
|
||||
uint8_t telnet :1,
|
||||
websocket :1,
|
||||
http :1,
|
||||
ftp :1,
|
||||
dns :1,
|
||||
mdns :1,
|
||||
ssdp :1,
|
||||
webdav :1,
|
||||
unassigned :1;
|
||||
webdav :1;
|
||||
};
|
||||
} network_services_t;
|
||||
|
||||
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
stepdir_map.h - An embedded CNC Controller with rs274/ngc (g-code) support
|
||||
|
||||
Lookup tables for converting core step and dir signals to physical signals, includes signal inversion.
|
||||
|
||||
May be used by driver code if step and/or dir pins are located to the same port.
|
||||
|
||||
NOT referenced in the core grbl code
|
||||
|
||||
Part of grblHAL
|
||||
|
||||
Copyright (c) 2021 Terje Io
|
||||
|
||||
Grbl is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Grbl is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#if STEP_OUTMODE == GPIO_MAP
|
||||
|
||||
static const uint32_t c_step_outmap[] = {
|
||||
0,
|
||||
X_STEP_BIT,
|
||||
Y_STEP_BIT,
|
||||
Y_STEP_BIT | X_STEP_BIT,
|
||||
Z_STEP_BIT,
|
||||
Z_STEP_BIT | X_STEP_BIT,
|
||||
Z_STEP_BIT | Y_STEP_BIT,
|
||||
Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
#if N_AXIS > 3
|
||||
A_STEP_BIT,
|
||||
A_STEP_BIT | X_STEP_BIT,
|
||||
A_STEP_BIT | Y_STEP_BIT,
|
||||
A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
A_STEP_BIT | Z_STEP_BIT,
|
||||
A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
#endif
|
||||
#if N_AXIS > 4
|
||||
B_STEP_BIT,
|
||||
B_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | Y_STEP_BIT,
|
||||
B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | Z_STEP_BIT,
|
||||
B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
#endif
|
||||
#if N_AXIS > 5
|
||||
C_STEP_BIT,
|
||||
C_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | Z_STEP_BIT,
|
||||
C_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT
|
||||
C_STEP_BIT | B_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | X_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT,
|
||||
C_STEP_BIT | B_STEP_BIT | A_STEP_BIT | Z_STEP_BIT | Y_STEP_BIT | X_STEP_BIT,
|
||||
#endif
|
||||
};
|
||||
|
||||
static uint32_t step_outmap[sizeof(c_step_outmap) / sizeof(uint32_t)];
|
||||
|
||||
#endif
|
||||
|
||||
#if DIRECTION_OUTMODE == GPIO_MAP
|
||||
|
||||
static const uint32_t c_dir_outmap[] = {
|
||||
0,
|
||||
X_DIRECTION_BIT,
|
||||
Y_DIRECTION_BIT,
|
||||
Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
Z_DIRECTION_BIT,
|
||||
Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
#if N_AXIS > 3
|
||||
A_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
#endif
|
||||
#if N_AXIS > 4
|
||||
B_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Y_DIRECTION_BIT, X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
#endif
|
||||
#if N_AXIS > 5
|
||||
C_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT,
|
||||
C_DIRECTION_BIT | B_DIRECTION_BIT | A_DIRECTION_BIT | Z_DIRECTION_BIT | Y_DIRECTION_BIT | X_DIRECTION_BIT,
|
||||
#endif
|
||||
};
|
||||
|
||||
static uint32_t dir_outmap[sizeof(c_dir_outmap) / sizeof(uint32_t)];
|
||||
|
||||
#endif
|
||||
|
||||
#if (STEP_OUTMODE == GPIO_MAP) || (DIRECTION_OUTMODE == GPIO_MAP)
|
||||
|
||||
static void stepdirmap_init (settings_t *settings)
|
||||
{
|
||||
uint_fast8_t i;
|
||||
|
||||
#if STEP_OUTMODE == GPIO_MAP
|
||||
|
||||
i = sizeof(step_outmap) / sizeof(uint32_t);
|
||||
do {
|
||||
i--;
|
||||
step_outmap[i] = c_step_outmap[i ^ settings->steppers.step_invert.value];
|
||||
} while(i);
|
||||
#endif
|
||||
|
||||
#if DIRECTION_OUTMODE == GPIO_MAP
|
||||
i = sizeof(dir_outmap) / sizeof(uint32_t);
|
||||
do {
|
||||
i--;
|
||||
dir_outmap[i] = c_dir_outmap[i ^ settings->steppers.dir_invert.value];
|
||||
} while(i);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user