1
0
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:
Stefan de Bruijn
2020-12-17 22:32:24 +01:00
parent 3f73f5214b
commit d307642d30
2 changed files with 42 additions and 12 deletions

View File

@@ -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.

View File

@@ -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);