Update teensy4_mcu.cpp _writeDutyCycle6PWM to handle phase_state to allow disabling the motor
Handles phase_state on Teensy 4.1 so that PWM pins will be disabled when motor.disable() is called.
Description
This is only for Teensy 4. This enables coasting the motor on drivers where the enable pin does not fully disable the driver and all 6 PWM pins must be disabled. Without this, the motor would lock up when calling motor.disable() due to PWM pins still being active when using driver board: https://www.sparkfun.com/sparkfun-brushless-motor-driver-3-phase-tmc6300.html
Type of change
Bug fix (non-breaking change which fixes an issue)
How Has This Been Tested?
Motor spins freely when calling motor.disable()
Test Configuration/Setup:
- Hardware: https://www.sparkfun.com/sparkfun-brushless-motor-driver-3-phase-tmc6300.html
- IDE: Platformio
- MCU package version: Teensy 4.1
Very nice, thank you for this contribution!
Do you know when the phase-state setting takes effect? Is it right away, or is it also related to the line in write_pwm_pair():
flexpwm->MCTRL |= FLEXPWM_MCTRL_LDOK (1<<submodule) ; // signal new values
If its immediate I would have said its better to pre-compute the changes for all three phases and set them at the same time?
This could probably be optimised further as @runger1101001 said, but I think its ok for the moment I think. It is already a very nice addition.