3#if defined(__arm__) && defined(CORE_TEENSY)
5#include "../../../communication/SimpleFOCDebug.h"
8void _setHighFrequency(
const long freq,
const int pin){
10 analogWriteFrequency(pin, freq);
18 if(!pwm_frequency || !
_isset(pwm_frequency) ) pwm_frequency = _PWM_FREQUENCY;
19 else pwm_frequency =
_constrain(pwm_frequency, 0, _PWM_FREQUENCY_MAX);
20 _setHighFrequency(pwm_frequency,
pinA);
21 TeensyDriverParams*
params =
new TeensyDriverParams {
23 .pwm_frequency = pwm_frequency,
24 .additional_params =
nullptr
34 if(!pwm_frequency || !
_isset(pwm_frequency) ) pwm_frequency = _PWM_FREQUENCY;
35 else pwm_frequency =
_constrain(pwm_frequency, 0, _PWM_FREQUENCY_MAX);
36 _setHighFrequency(pwm_frequency,
pinA);
37 _setHighFrequency(pwm_frequency,
pinB);
38 TeensyDriverParams*
params =
new TeensyDriverParams {
40 .pwm_frequency = pwm_frequency,
41 .additional_params =
nullptr
48__attribute__((weak))
void* _configureCenterAligned3PMW(
long pwm_frequency,
const int pinA,
const int pinB,
const int pinC) {
56 if(!pwm_frequency || !
_isset(pwm_frequency) ) pwm_frequency = _PWM_FREQUENCY;
57 else pwm_frequency =
_constrain(pwm_frequency, 0, _PWM_FREQUENCY_MAX);
60 void* p = _configureCenterAligned3PMW(pwm_frequency,
pinA,
pinB,
pinC);
64 SIMPLEFOC_DEBUG(
"TEENSY-DRV: Configuring 3PWM with fast pwm. Please consider using center aligned pwm for better performance!");
65 _setHighFrequency(pwm_frequency,
pinA);
66 _setHighFrequency(pwm_frequency,
pinB);
67 _setHighFrequency(pwm_frequency,
pinC);
68 TeensyDriverParams*
params =
new TeensyDriverParams {
70 .pwm_frequency = pwm_frequency,
71 .additional_params =
nullptr
81 if(!pwm_frequency || !
_isset(pwm_frequency) ) pwm_frequency = _PWM_FREQUENCY;
82 else pwm_frequency =
_constrain(pwm_frequency, 0, _PWM_FREQUENCY_MAX);
83 _setHighFrequency(pwm_frequency,
pinA);
84 _setHighFrequency(pwm_frequency,
pinB);
85 _setHighFrequency(pwm_frequency,
pinC);
86 _setHighFrequency(pwm_frequency, pinD);
87 TeensyDriverParams*
params =
new TeensyDriverParams {
89 .pwm_frequency = pwm_frequency,
90 .additional_params =
nullptr
129 TeensyDriverParams* p = (TeensyDriverParams*)
params;
130 if(p->additional_params !=
nullptr){
131 _writeCenterAligned3PMW(dc_a,
dc_b,
dc_c, p);
#define SIMPLEFOC_DEBUG(msg,...)
const int const int const int pinC
GenericCurrentSenseParams * params
void * _configure4PWM(long pwm_frequency, const int pin1A, const int pin1B, const int pin2A, const int pin2B)
void * _configure2PWM(long pwm_frequency, const int pinA, const int pinB)
void _writeDutyCycle2PWM(float dc_a, float dc_b, void *params)
void _writeDutyCycle1PWM(float dc_a, void *params)
#define SIMPLEFOC_DRIVER_INIT_FAILED
void _writeDutyCycle4PWM(float dc_1a, float dc_1b, float dc_2a, float dc_2b, void *params)
void * _configure3PWM(long pwm_frequency, const int pinA, const int pinB, const int pinC)
void * _configure1PWM(long pwm_frequency, const int pinA)
void _writeDutyCycle3PWM(float dc_a, float dc_b, float dc_c, void *params)
analogWrite(((GenericDriverParams *) params) ->pins[1], 255.0f *dc_b)
__attribute__((weak)) float _sin(float a)
#define _constrain(amt, low, high)