1
0
mirror of https://github.com/bdring/Grbl_Esp32.git synced 2025-09-02 19:02:35 +02:00

Fixed a few bugs. Build-all runs now.

This commit is contained in:
Stefan de Bruijn
2020-10-20 20:33:53 +02:00
parent 5d6052dc3c
commit 3cbe138cb8
10 changed files with 120 additions and 75 deletions

View File

@@ -15,7 +15,7 @@
TODO
Make sure public/private/protected is cleaned up.
Only a few Unipolar axes have been setup in init()
Get rid of Z_SERVO, just reply on ServoPins[Z_AXIS][0]->get()
Get rid of Z_SERVO, just reply on ServoPins[Z_AXIS][0]
Deal with custom machine ... machine_trinamic_setup();
Class is ready to deal with non SPI pins, but they have not been needed yet.
It would be nice in the config message though
@@ -473,7 +473,7 @@ uint8_t motors_set_homing_mode(uint8_t homing_mask, bool isHoming) {
void motors_step(uint8_t step_mask, uint8_t dir_mask) {
auto n_axis = number_axis->get();
//grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "motors_DirectionPins[set_AXIS][0]->get()s:0x%02X", onMask);
//grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "motors_set_direction_pins:0x%02X", onMask);
// Set the direction pins, but optimize for the common
// situation where the direction bits haven't changed.

View File

@@ -25,7 +25,7 @@
// Override default function and insert a short delay
void TMC2130Stepper::switchCSpin(bool state) {
_pinCS.write(state);
digitalWrite(_pinCS, state);
i2s_out_delay();
}
#endif

View File

@@ -64,7 +64,7 @@ bool Pin::parse(String str, Pins::PinDetail*& pinImplementation, int& pinNumber)
} else if (prefix == "undef") {
pinImplementation = new Pins::VoidPinDetail(parser);
}
#ifdef USE_I2S_OUT
#ifdef ESP_32
else if (prefix == "i2s") {
pinImplementation = new Pins::I2SPinDetail(uint8_t(pinNumber), parser);
}

View File

@@ -138,6 +138,47 @@ const char* DYNAMIXEL_RXD_DEFAULT = DYNAMIXEL_RXD;
#endif
const char* DYNAMIXEL_RTS_DEFAULT = DYNAMIXEL_RTS;
#ifndef USER_DIGITAL_PIN_0
# define USER_DIGITAL_PIN_0 UNDEFINED_PIN
#endif
const char* USER_DIGITAL_PIN_0_DEFAULT = USER_DIGITAL_PIN_0;
#ifndef USER_DIGITAL_PIN_1
# define USER_DIGITAL_PIN_1 UNDEFINED_PIN
#endif
const char* USER_DIGITAL_PIN_1_DEFAULT = USER_DIGITAL_PIN_1;
#ifndef USER_DIGITAL_PIN_2
# define USER_DIGITAL_PIN_2 UNDEFINED_PIN
#endif
const char* USER_DIGITAL_PIN_2_DEFAULT = USER_DIGITAL_PIN_2;
#ifndef USER_DIGITAL_PIN_3
# define USER_DIGITAL_PIN_3 UNDEFINED_PIN
#endif
const char* USER_DIGITAL_PIN_3_DEFAULT = USER_DIGITAL_PIN_3;
#ifndef USER_ANALOG_PIN_0
# define USER_ANALOG_PIN_0 UNDEFINED_PIN
#endif
const char* USER_ANALOG_PIN_0_DEFAULT = USER_ANALOG_PIN_0;
#ifndef USER_ANALOG_PIN_1
# define USER_ANALOG_PIN_1 UNDEFINED_PIN
#endif
const char* USER_ANALOG_PIN_1_DEFAULT = USER_ANALOG_PIN_1;
#ifndef USER_ANALOG_PIN_2
# define USER_ANALOG_PIN_2 UNDEFINED_PIN
#endif
const char* USER_ANALOG_PIN_2_DEFAULT = USER_ANALOG_PIN_2;
#ifndef USER_ANALOG_PIN_3
# define USER_ANALOG_PIN_3 UNDEFINED_PIN
#endif
const char* USER_ANALOG_PIN_3_DEFAULT = USER_ANALOG_PIN_3;
#ifndef SPINDLE_OUTPUT_PIN
# define SPINDLE_OUTPUT_PIN "undef"
#endif
@@ -827,25 +868,25 @@ void make_pin_settings() {
DynamixelRTSPin = new PinSetting("Pins/DynamixelRTS", DYNAMIXEL_RTS_DEFAULT);
// User pins:
UserDigitalPin[0] = new PinSetting("Pins/UserDigital/0", USER_DIGITAL_PIN_0);
UserAnalogPin[0] = new PinSetting("Pins/UserAnalog/0", USER_ANALOG_PIN_0);
UserDigitalPin[1] = new PinSetting("Pins/UserDigital/1", USER_DIGITAL_PIN_1);
UserAnalogPin[1] = new PinSetting("Pins/UserAnalog/1", USER_ANALOG_PIN_1);
UserDigitalPin[2] = new PinSetting("Pins/UserDigital/2", USER_DIGITAL_PIN_2);
UserAnalogPin[2] = new PinSetting("Pins/UserAnalog/2", USER_ANALOG_PIN_2);
UserDigitalPin[3] = new PinSetting("Pins/UserDigital/3", USER_DIGITAL_PIN_3);
UserAnalogPin[3] = new PinSetting("Pins/UserAnalog/3", USER_ANALOG_PIN_3);
UserDigitalPin[0] = new PinSetting("Pins/UserDigital/0", USER_DIGITAL_PIN_0_DEFAULT);
UserAnalogPin[0] = new PinSetting("Pins/UserAnalog/0", USER_ANALOG_PIN_0_DEFAULT);
UserDigitalPin[1] = new PinSetting("Pins/UserDigital/1", USER_DIGITAL_PIN_1_DEFAULT);
UserAnalogPin[1] = new PinSetting("Pins/UserAnalog/1", USER_ANALOG_PIN_1_DEFAULT);
UserDigitalPin[2] = new PinSetting("Pins/UserDigital/2", USER_DIGITAL_PIN_2_DEFAULT);
UserAnalogPin[2] = new PinSetting("Pins/UserAnalog/2", USER_ANALOG_PIN_2_DEFAULT);
UserDigitalPin[3] = new PinSetting("Pins/UserDigital/3", USER_DIGITAL_PIN_3_DEFAULT);
UserAnalogPin[3] = new PinSetting("Pins/UserAnalog/3", USER_ANALOG_PIN_3_DEFAULT);
// Spindes:
SpindleOutputPin = new PinSetting("Pins/Spindle/Output", SPINDLE_OUTPUT_PIN);
SpindleEnablePin = new PinSetting("Pins/Spindle/Enable", SPINDLE_ENABLE_PIN);
SpindleDirectionPin = new PinSetting("Pins/Spindle/Direction", SPINDLE_DIRECTION_PIN);
SpindleForwardPin = new PinSetting("Pins/Spindle/Forward", SPINDLE_FORWARD_PIN);
SpindleReversePin = new PinSetting("Pins/Spindle/Reverse", SPINDLE_REVERSE_PIN);
VFDRS485TXDPin = new PinSetting("Pins/Spindle/RS485TXD", VFD_RS485_TXD_PIN); // VFD_RS485_TXD_PIN
VFDRS485RXDPin = new PinSetting("Pins/Spindle/RS485RXD", VFD_RS485_RXD_PIN); // VFD_RS485_RXD_PIN
VFDRS485RTSPin = new PinSetting("Pins/Spindle/RS485RTS", VFD_RS485_RTS_PIN); // VFD_RS485_RTS_PIN
SpindleOutputPin = new PinSetting("Pins/Spindle/Output", SPINDLE_OUTPUT_PIN_DEFAULT);
SpindleEnablePin = new PinSetting("Pins/Spindle/Enable", SPINDLE_ENABLE_PIN_DEFAULT);
SpindleDirectionPin = new PinSetting("Pins/Spindle/Direction", SPINDLE_DIRECTION_PIN_DEFAULT);
SpindleForwardPin = new PinSetting("Pins/Spindle/Forward", SPINDLE_FORWARD_PIN_DEFAULT);
SpindleReversePin = new PinSetting("Pins/Spindle/Reverse", SPINDLE_REVERSE_PIN_DEFAULT);
VFDRS485TXDPin = new PinSetting("Pins/Spindle/RS485TXD", VFD_RS485_TXD_PIN_DEFAULT); // VFD_RS485_TXD_PIN
VFDRS485RXDPin = new PinSetting("Pins/Spindle/RS485RXD", VFD_RS485_RXD_PIN_DEFAULT); // VFD_RS485_RXD_PIN
VFDRS485RTSPin = new PinSetting("Pins/Spindle/RS485RTS", VFD_RS485_RTS_PIN_DEFAULT); // VFD_RS485_RTS_PIN
// Axis:
LimitPins[X_AXIS][0] = new PinSetting("Pins/X/Limit", X_LIMIT_PIN_DEFAULT);

View File

@@ -13,13 +13,15 @@ namespace Pins {
switch (index) {
case 0: // Outputs PWM signal at boot
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::Output | PinCapabilities::PullUp |
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::PWM | PinCapabilities::ISR;
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::PWM | PinCapabilities::ISR |
PinCapabilities::UART;
case 1: // TX pin of Serial0. Note that Serial0 also runs through the Pins framework!
return PinCapabilities::Native | PinCapabilities::Output | PinCapabilities::Input;
return PinCapabilities::Native | PinCapabilities::Output | PinCapabilities::Input | PinCapabilities::UART;
case 3: // RX pin of Serial0. Note that Serial0 also runs through the Pins framework!
return PinCapabilities::Native | PinCapabilities::Output | PinCapabilities::Input | PinCapabilities::ISR;
return PinCapabilities::Native | PinCapabilities::Output | PinCapabilities::Input | PinCapabilities::ISR |
PinCapabilities::UART;
case 5:
case 16:
@@ -31,7 +33,7 @@ namespace Pins {
case 23:
case 29:
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::Output | PinCapabilities::PullUp |
PinCapabilities::PullDown | PinCapabilities::PWM | PinCapabilities::ISR;
PinCapabilities::PullDown | PinCapabilities::PWM | PinCapabilities::ISR | PinCapabilities::UART;
case 2: // Normal pins
case 4:
@@ -43,12 +45,14 @@ namespace Pins {
case 32:
case 33:
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::Output | PinCapabilities::PullUp |
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::PWM | PinCapabilities::ISR;
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::PWM | PinCapabilities::ISR |
PinCapabilities::UART;
case 25:
case 26:
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::Output | PinCapabilities::PullUp |
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::DAC | PinCapabilities::PWM | PinCapabilities::ISR;
PinCapabilities::PullDown | PinCapabilities::ADC | PinCapabilities::DAC | PinCapabilities::PWM |
PinCapabilities::ISR | PinCapabilities::UART;
case 6: // SPI flash integrated
case 7:
@@ -57,13 +61,13 @@ namespace Pins {
case 10:
case 11:
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::Output | PinCapabilities::PWM |
PinCapabilities::ISR;
PinCapabilities::ISR | PinCapabilities::UART;
case 34: // Input only pins
case 35:
case 36:
case 39:
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::ADC | PinCapabilities::ISR;
return PinCapabilities::Native | PinCapabilities::Input | PinCapabilities::ADC | PinCapabilities::ISR | PinCapabilities::UART;
break;
default: // Not mapped to actual GPIO pins

View File

@@ -7,7 +7,7 @@ namespace Pins {
uint8_t _index;
PinCapabilities _capabilities;
PinAttributes _attributes;
int _readWriteMask;
int _readWriteMask;
static PinCapabilities GetDefaultCapabilities(uint8_t index);

View File

@@ -2,11 +2,14 @@
# include "I2SPinDetail.h"
# include "../I2SOut.h"
# include "../Assert.h"
# ifdef USE_I2S_OUT
extern "C" void __digitalWrite(uint8_t pin, uint8_t val);
namespace Pins {
I2SPinDetail::I2SPinDetail(uint8_t index, const PinOptionsParser& options) : _index(index) {
I2SPinDetail::I2SPinDetail(uint8_t index, const PinOptionsParser& options) :
_index(index), _capabilities(PinCapabilities::Output | PinCapabilities::I2S), _attributes(Pins::PinAttributes::Undefined),
_readWriteMask(0) {
// User defined pin capabilities
for (auto opt : options) {
if (opt.is("pu")) {
@@ -53,8 +56,7 @@ namespace Pins {
// just check for conflicts above...
}
String I2SPinDetail::toString() { return String("I2S_") + int(_index); }
String I2SPinDetail::toString() const { return String("I2S_") + int(_index); }
}
# endif
#endif

View File

@@ -1,15 +1,14 @@
#pragma once
#ifdef ESP32
#include "PinDetail.h"
#ifdef USE_I2S_OUT
# include "PinDetail.h"
namespace Pins {
class I2SPinDetail : public PinDetail {
uint8_t _index;
PinCapabilities _capabilities;
PinAttributes _attributes;
int _readWriteMask;
public:
I2SPinDetail(uint8_t index, const PinOptionsParser& options);
@@ -21,11 +20,10 @@ namespace Pins {
int read() override;
void setAttr(PinAttributes value) override;
String toString() override;
String toString() const override;
~I2SPinDetail() override {}
};
}
#endif
#endif

View File

@@ -104,7 +104,7 @@ namespace Spindles {
if (_gpio_ok) {
auto outputNative = _output_pin.getNative(Pin::Capabilities::DAC);
dacWrite(outputNative, (uint8_t)duty);
dacWrite(outputNative, static_cast<uint8_t>(duty));
}
}
}

View File

@@ -51,42 +51,42 @@ void system_ini() { // Renamed from system_init() due to conflict with esp32 fi
ControlSafetyDoorPin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
ControlSafetyDoorPin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
#ifdef CONTROL_SAFETY_DOOR_PIN
pinMode(CONTROL_SAFETY_DOOR_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CONTROL_SAFETY_DOOR_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef CONTROL_RESET_PIN
pinMode(CONTROL_RESET_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CONTROL_RESET_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef CONTROL_FEED_HOLD_PIN
pinMode(CONTROL_FEED_HOLD_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CONTROL_FEED_HOLD_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef CONTROL_CYCLE_START_PIN
pinMode(CONTROL_CYCLE_START_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(CONTROL_CYCLE_START_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_0_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 0");
pinMode(MACRO_BUTTON_0_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_0_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_1_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 1");
pinMode(MACRO_BUTTON_1_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_1_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_2_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 2");
pinMode(MACRO_BUTTON_2_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_2_PIN), isr_control_inputs, CHANGE);
#endif
#ifdef MACRO_BUTTON_3_PIN
grbl_msg_sendf(CLIENT_SERIAL, MsgLevel::Info, "Macro Pin 3");
pinMode(MACRO_BUTTON_3_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(MACRO_BUTTON_3_PIN), isr_control_inputs, CHANGE);
#endif
if (ControlResetPin->get() != Pin::UNDEFINED) {
ControlResetPin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
ControlResetPin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (ControlFeedHoldPin->get() != Pin::UNDEFINED) {
ControlFeedHoldPin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
ControlFeedHoldPin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (ControlCycleStartPin->get() != Pin::UNDEFINED) {
ControlCycleStartPin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
ControlCycleStartPin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (MacroButton0Pin->get() != Pin::UNDEFINED) {
MacroButton0Pin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
MacroButton0Pin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (MacroButton1Pin->get() != Pin::UNDEFINED) {
MacroButton1Pin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
MacroButton1Pin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (MacroButton2Pin->get() != Pin::UNDEFINED) {
MacroButton2Pin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
MacroButton2Pin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
if (MacroButton3Pin->get() != Pin::UNDEFINED) {
MacroButton3Pin->get().setAttr(Pin::Attr::Input | Pin::Attr::PullUp);
MacroButton3Pin->get().attachInterrupt(isr_control_inputs, CHANGE);
}
#ifdef ENABLE_CONTROL_SW_DEBOUNCE
// setup task used for debouncing
control_sw_queue = xQueueCreate(10, sizeof(int));