mirror of
https://github.com/bdring/Grbl_Esp32.git
synced 2025-09-02 19:02:35 +02:00
Swag at handling PWM invert in hardware
TODO: 1. if it works, do the same for other users of LEDC 2. Remove invert_pwm
This commit is contained in:
@@ -28,6 +28,8 @@
|
|||||||
#include "../GCode.h" // gc_state.modal
|
#include "../GCode.h" // gc_state.modal
|
||||||
#include "../Logging.h"
|
#include "../Logging.h"
|
||||||
|
|
||||||
|
extern "C" void __pinMode(uint8_t pin, uint8_t mode);
|
||||||
|
|
||||||
// ======================= PWM ==============================
|
// ======================= PWM ==============================
|
||||||
/*
|
/*
|
||||||
This gets called at startup or whenever a spindle setting changes
|
This gets called at startup or whenever a spindle setting changes
|
||||||
@@ -62,7 +64,14 @@ namespace Spindles {
|
|||||||
auto outputNative = _output_pin.getNative(Pin::Capabilities::PWM);
|
auto outputNative = _output_pin.getNative(Pin::Capabilities::PWM);
|
||||||
|
|
||||||
ledcSetup(_pwm_chan_num, (double)_pwm_freq, _pwm_precision); // setup the channel
|
ledcSetup(_pwm_chan_num, (double)_pwm_freq, _pwm_precision); // setup the channel
|
||||||
ledcAttachPin(outputNative, _pwm_chan_num); // attach the PWM to the pin
|
|
||||||
|
// This is equivalent to ledcAttachPin with the addition of
|
||||||
|
// using the hardware inversion function in the GPIO matrix.
|
||||||
|
// We use that to apply the active low function in hardware.
|
||||||
|
__pinMode(outputNative, OUTPUT);
|
||||||
|
uint8_t function = ((_pwm_chan_num / 8) ? LEDC_LS_SIG_OUT0_IDX : LEDC_HS_SIG_OUT0_IDX) + (_pwm_chan_num % 8);
|
||||||
|
bool isActiveLow = _output_pin.getAttr().has(Pin::Attr::ActiveLow);
|
||||||
|
pinMatrixOutAttach(outputNative, function, isActiveLow, false);
|
||||||
|
|
||||||
_enable_pin.setAttr(Pin::Attr::Output);
|
_enable_pin.setAttr(Pin::Attr::Output);
|
||||||
_direction_pin.setAttr(Pin::Attr::Output);
|
_direction_pin.setAttr(Pin::Attr::Output);
|
||||||
|
Reference in New Issue
Block a user