Change A4988 optional microstep pin selection

This commit is contained in:
Theo Arends 2020-10-02 17:09:09 +02:00
parent 330109d67c
commit d07fa4b492
4 changed files with 58 additions and 15 deletions

View File

@ -65,5 +65,6 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota
- Change redesigning ESP8266 GPIO internal representation in line with ESP32
- Change new IR Raw compact format (#9444)
- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103)
- Change A4988 optional microstep pin selection
- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237)
- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353)

View File

@ -8,6 +8,7 @@
- Change redesigning ESP8266 GPIO internal representation in line with ESP32
- Change new IR Raw compact format (#9444)
- Change MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103)
- Change A4988 optional microstep pin selection
- Add optional support for Mitsubishi Electric HVAC by David Gwynne (#9237)
- Add optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353)

View File

@ -100,8 +100,9 @@ enum UserSelectablePins {
GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface
GPIO_RDM6300_RX, // RDM6300 RX
GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface
GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface
GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep
GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, GPIO_A4988_MS1, // A4988 interface
GPIO_SPARE1, // Do not use
GPIO_SPARE2, // Do not use
GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface
GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface
GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller
@ -212,7 +213,9 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|"
D_SENSOR_RDM6300_RX "|"
D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|"
D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|"
D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|"
"s1|"
"s2|"
D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|"
D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|"
D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|"
@ -261,6 +264,7 @@ const char kSensorNamesFixed[] PROGMEM =
D_SENSOR_USER;
#define MAX_MAX31865S 6
#define MAX_A4988_MSS 3
#define MAX_WEBCAM_DATA 8
#define MAX_WEBCAM_HSD 3
@ -293,10 +297,16 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif
AGPIO(GPIO_LEDLNK), // Link led
AGPIO(GPIO_LEDLNK_INV), // Inverted link led
/*-------------------------------------------------------------------------------------------*\
* Protocol specifics
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_I2C
AGPIO(GPIO_I2C_SCL), // I2C SCL
AGPIO(GPIO_I2C_SDA), // I2C SDA
#endif
#ifdef USE_SPI
AGPIO(GPIO_SPI_MISO), // SPI MISO
AGPIO(GPIO_SPI_MOSI), // SPI MOSI
@ -320,6 +330,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_TXD), // Serial interface
AGPIO(GPIO_RXD), // Serial interface
/*-------------------------------------------------------------------------------------------*\
* Single wire sensors
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_DHT
AGPIO(GPIO_DHT11), // DHT11
AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321
@ -334,7 +348,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO
#endif
// Light
/*-------------------------------------------------------------------------------------------*\
* Light
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_LIGHT
#ifdef USE_WS2812
AGPIO(GPIO_WS2812), // WS2812 Led string
@ -368,13 +385,16 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif
#endif // USE_LIGHT
/*-------------------------------------------------------------------------------------------*\
* Transmission sensors
\*-------------------------------------------------------------------------------------------*/
#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL)
AGPIO(GPIO_IRSEND), // IR remote
#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL)
AGPIO(GPIO_IRRECV), // IR receiver
#endif
#endif
#ifdef USE_RC_SWITCH
AGPIO(GPIO_RFSEND), // RF transmitter
AGPIO(GPIO_RFRECV), // RF receiver
@ -396,7 +416,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data
#endif
// Energy sensors
/*-------------------------------------------------------------------------------------------*\
* Energy sensors
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_ENERGY_SENSOR
#ifdef USE_HLW8012
AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage)
@ -466,7 +489,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif
#endif // USE_ENERGY_SENSOR
// Serial
/*-------------------------------------------------------------------------------------------*\
* Serial sensors
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_SERIAL_BRIDGE
AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface
AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface
@ -543,6 +569,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_BOILER_OT_RX),
#endif
/*-------------------------------------------------------------------------------------------*\
* Other sensors
\*-------------------------------------------------------------------------------------------*/
#ifdef USE_MGC3130
AGPIO(GPIO_MGC3130_XFER),
AGPIO(GPIO_MGC3130_RESET),
@ -561,9 +591,7 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_A4988_STP), // A4988 step pin
// folowing are not mandatory
AGPIO(GPIO_A4988_ENA), // A4988 enabled pin
AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1
AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2
AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3
AGPIO(GPIO_A4988_MS1) + MAX_A4988_MSS, // A4988 microstep pin1 to pin3
#endif
#ifdef USE_DEEPSLEEP
AGPIO(GPIO_DEEPSLEEP),
@ -590,6 +618,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin
#endif
/*-------------------------------------------------------------------------------------------*\
* ESP32 specifics
\*-------------------------------------------------------------------------------------------*/
#ifdef ESP32
#ifdef USE_WEBCAM
AGPIO(GPIO_WEBCAM_PWDN),
@ -610,6 +642,11 @@ const uint16_t kGpioNiceList[] PROGMEM = {
AGPIO(GPIO_ETH_PHY_MDC),
AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
#endif // USE_ETHERNET
/*-------------------------------------------------------------------------------------------*\
* ESP32 multiple Analog / Digital converter inputs
\*-------------------------------------------------------------------------------------------*/
AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs
AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor
AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor
@ -621,6 +658,10 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#endif // ESP32
};
/*-------------------------------------------------------------------------------------------*\
* ESP8266 single Analog / Digital converter input
\*-------------------------------------------------------------------------------------------*/
#ifdef ESP8266
const uint16_t kAdcNiceList[] PROGMEM = {
GPIO_NONE, // Not used
@ -1151,8 +1192,8 @@ const uint16_t kGpioConvert[] PROGMEM = {
AGPIO(GPIO_A4988_STP), // A4988 step pin
AGPIO(GPIO_A4988_ENA), // A4988 enabled pin
AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1
AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2
AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3
AGPIO(GPIO_A4988_MS1) +1, // A4988 microstep pin2
AGPIO(GPIO_A4988_MS1) +2, // A4988 microstep pin3
AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface
AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface
AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface

View File

@ -45,8 +45,8 @@ void A4988Init(void)
A4988_stp_pin = Pin(GPIO_A4988_STP);
A4988_ena_pin = Pin(GPIO_A4988_ENA);
A4988_ms1_pin = Pin(GPIO_A4988_MS1);
A4988_ms2_pin = Pin(GPIO_A4988_MS2);
A4988_ms3_pin = Pin(GPIO_A4988_MS3);
A4988_ms2_pin = Pin(GPIO_A4988_MS1, 1);
A4988_ms3_pin = Pin(GPIO_A4988_MS1, 2);
A4988_spr = 200;
A4988_rpm = 30;
A4988_mis = 1;
@ -93,7 +93,7 @@ void CmndDoTurn(void) {
}
void CmndSetMIS(void) {
if (PinUsed(GPIO_A4988_MS1) && PinUsed(GPIO_A4988_MS2) && PinUsed(GPIO_A4988_MS3) && (XdrvMailbox.data_len > 0)) {
if (PinUsed(GPIO_A4988_MS1) && PinUsed(GPIO_A4988_MS1, 1) && PinUsed(GPIO_A4988_MS1, 2) && (XdrvMailbox.data_len > 0)) {
short newMIS = strtoul(XdrvMailbox.data,nullptr,10);
myA4988->setMIS(newMIS);
ResponseCmndDone();