mirror of
https://github.com/bdring/Grbl_Esp32.git
synced 2025-09-02 02:42:36 +02:00
- Added validations to user analog pins.
This commit is contained in:
@@ -30,24 +30,24 @@ void grbl_init() {
|
|||||||
WiFi.mode(WIFI_OFF);
|
WiFi.mode(WIFI_OFF);
|
||||||
|
|
||||||
// Setup serial baud rate and interrupts
|
// Setup serial baud rate and interrupts
|
||||||
serial_init();
|
serial_init();
|
||||||
grbl_msg_sendf(
|
grbl_msg_sendf(
|
||||||
CLIENT_SERIAL, MsgLevel::Info, "Grbl_ESP32 Ver %s Date %s", GRBL_VERSION, GRBL_VERSION_BUILD); // print grbl_esp32 verion info
|
CLIENT_SERIAL, MsgLevel::Info, "Grbl_ESP32 Ver %s Date %s", GRBL_VERSION, GRBL_VERSION_BUILD); // print grbl_esp32 verion info
|
||||||
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Compiled with ESP32 SDK:%s", ESP.getSdkVersion()); // print the SDK version
|
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Compiled with ESP32 SDK:%s", ESP.getSdkVersion()); // print the SDK version
|
||||||
// show the map name at startup
|
// show the map name at startup
|
||||||
|
|
||||||
#ifdef MACHINE_NAME
|
#ifdef MACHINE_NAME
|
||||||
report_machine_type(CLIENT_SERIAL);
|
report_machine_type(CLIENT_SERIAL);
|
||||||
#endif
|
#endif
|
||||||
// Load Grbl settings from non-volatile storage
|
// Load Grbl settings from non-volatile storage
|
||||||
settings_init();
|
settings_init();
|
||||||
|
|
||||||
#ifdef USE_I2S_OUT
|
#ifdef USE_I2S_OUT
|
||||||
// The I2S out must be initialized before it can access the expanded GPIO port. Must be initialized _after_ settings!
|
// The I2S out must be initialized before it can access the expanded GPIO port. Must be initialized _after_ settings!
|
||||||
i2s_out_init();
|
i2s_out_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
stepper_init(); // Configure stepper pins and interrupt timers
|
stepper_init(); // Configure stepper pins and interrupt timers
|
||||||
init_motors();
|
init_motors();
|
||||||
system_ini(); // Configure pinout pins and pin-change interrupt (Renamed due to conflict with esp32 files)
|
system_ini(); // Configure pinout pins and pin-change interrupt (Renamed due to conflict with esp32 files)
|
||||||
memset(sys_position, 0, sizeof(sys_position)); // Clear machine position.
|
memset(sys_position, 0, sizeof(sys_position)); // Clear machine position.
|
||||||
|
@@ -775,6 +775,36 @@ PinSetting* PhasePins[4][MAX_N_AXIS][2];
|
|||||||
|
|
||||||
#include "Pin.h"
|
#include "Pin.h"
|
||||||
|
|
||||||
|
bool validateCapabilities(const char* definition, Pin::Capabilities caps) {
|
||||||
|
auto isValid = Pin::validate(definition);
|
||||||
|
if (isValid) {
|
||||||
|
Pin pin = Pin::create(definition);
|
||||||
|
return pin.capabilities().has(caps);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pinHasPWM(char* definition) {
|
||||||
|
validateCapabilities(definition, Pin::Capabilities::PWM);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pinHasUart(char* definition) {
|
||||||
|
validateCapabilities(definition, Pin::Capabilities::UART);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pinIsNative(char* definition) {
|
||||||
|
validateCapabilities(definition, Pin::Capabilities::Native);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pinIsInput(char* definition) {
|
||||||
|
validateCapabilities(definition, Pin::Capabilities::Input);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool pinIsOutput(char* definition) {
|
||||||
|
validateCapabilities(definition, Pin::Capabilities::Input);
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the pin settings
|
// Initialize the pin settings
|
||||||
void make_pin_settings() {
|
void make_pin_settings() {
|
||||||
CoolantFloodPin = new PinSetting("Coolant/Flood/Pin", COOLANT_FLOOD_PIN_DEFAULT);
|
CoolantFloodPin = new PinSetting("Coolant/Flood/Pin", COOLANT_FLOOD_PIN_DEFAULT);
|
||||||
@@ -799,13 +829,13 @@ void make_pin_settings() {
|
|||||||
|
|
||||||
// User pins:
|
// User pins:
|
||||||
UserDigitalPin[0] = new PinSetting("UserDigital/0/Pin", USER_DIGITAL_PIN_0_DEFAULT);
|
UserDigitalPin[0] = new PinSetting("UserDigital/0/Pin", USER_DIGITAL_PIN_0_DEFAULT);
|
||||||
UserAnalogPin[0] = new PinSetting("UserAnalog/0/Pin", USER_ANALOG_PIN_0_DEFAULT);
|
UserAnalogPin[0] = new PinSetting("UserAnalog/0/Pin", USER_ANALOG_PIN_0_DEFAULT, pinHasPWM);
|
||||||
UserDigitalPin[1] = new PinSetting("UserDigital/1/Pin", USER_DIGITAL_PIN_1_DEFAULT);
|
UserDigitalPin[1] = new PinSetting("UserDigital/1/Pin", USER_DIGITAL_PIN_1_DEFAULT);
|
||||||
UserAnalogPin[1] = new PinSetting("UserAnalog/1/Pin", USER_ANALOG_PIN_1_DEFAULT);
|
UserAnalogPin[1] = new PinSetting("UserAnalog/1/Pin", USER_ANALOG_PIN_1_DEFAULT, pinHasPWM);
|
||||||
UserDigitalPin[2] = new PinSetting("UserDigital/2/Pin", USER_DIGITAL_PIN_2_DEFAULT);
|
UserDigitalPin[2] = new PinSetting("UserDigital/2/Pin", USER_DIGITAL_PIN_2_DEFAULT);
|
||||||
UserAnalogPin[2] = new PinSetting("UserAnalog/2/Pin", USER_ANALOG_PIN_2_DEFAULT);
|
UserAnalogPin[2] = new PinSetting("UserAnalog/2/Pin", USER_ANALOG_PIN_2_DEFAULT, pinHasPWM);
|
||||||
UserDigitalPin[3] = new PinSetting("UserDigital/3/Pin", USER_DIGITAL_PIN_3_DEFAULT);
|
UserDigitalPin[3] = new PinSetting("UserDigital/3/Pin", USER_DIGITAL_PIN_3_DEFAULT);
|
||||||
UserAnalogPin[3] = new PinSetting("UserAnalog/3/Pin", USER_ANALOG_PIN_3_DEFAULT);
|
UserAnalogPin[3] = new PinSetting("UserAnalog/3/Pin", USER_ANALOG_PIN_3_DEFAULT, pinHasPWM);
|
||||||
|
|
||||||
// SPI pins:
|
// SPI pins:
|
||||||
SPISSPin = new PinSetting("SPI/SS/Pin", "GPIO.5");
|
SPISSPin = new PinSetting("SPI/SS/Pin", "GPIO.5");
|
||||||
@@ -824,9 +854,9 @@ void make_pin_settings() {
|
|||||||
SpindleForwardPin = new PinSetting("Spindle/Forward/Pin", SPINDLE_FORWARD_PIN_DEFAULT);
|
SpindleForwardPin = new PinSetting("Spindle/Forward/Pin", SPINDLE_FORWARD_PIN_DEFAULT);
|
||||||
SpindleReversePin = new PinSetting("Spindle/Reverse/Pin", SPINDLE_REVERSE_PIN_DEFAULT);
|
SpindleReversePin = new PinSetting("Spindle/Reverse/Pin", SPINDLE_REVERSE_PIN_DEFAULT);
|
||||||
// XXX Move to VFD class
|
// XXX Move to VFD class
|
||||||
VFDRS485TXDPin = new PinSetting("Spindle/VFD/TxD/Pin", VFD_RS485_TXD_PIN_DEFAULT); // VFD_RS485_TXD_PIN
|
VFDRS485TXDPin = new PinSetting("Spindle/VFD/TxD/Pin", VFD_RS485_TXD_PIN_DEFAULT, pinHasUart); // VFD_RS485_TXD_PIN
|
||||||
VFDRS485RXDPin = new PinSetting("Spindle/VFD/RxD/Pin", VFD_RS485_RXD_PIN_DEFAULT); // VFD_RS485_RXD_PIN
|
VFDRS485RXDPin = new PinSetting("Spindle/VFD/RxD/Pin", VFD_RS485_RXD_PIN_DEFAULT, pinHasUart); // VFD_RS485_RXD_PIN
|
||||||
VFDRS485RTSPin = new PinSetting("Spindle/VFD/RTS/Pin", VFD_RS485_RTS_PIN_DEFAULT); // VFD_RS485_RTS_PIN
|
VFDRS485RTSPin = new PinSetting("Spindle/VFD/RTS/Pin", VFD_RS485_RTS_PIN_DEFAULT, pinHasUart); // VFD_RS485_RTS_PIN
|
||||||
|
|
||||||
// Axis:
|
// Axis:
|
||||||
LimitPins[X_AXIS][0] = new PinSetting("X/Limit/Pin", X_LIMIT_PIN_DEFAULT);
|
LimitPins[X_AXIS][0] = new PinSetting("X/Limit/Pin", X_LIMIT_PIN_DEFAULT);
|
||||||
|
Reference in New Issue
Block a user