SimpleFOClibrary  2.1
teensy_mcu.cpp
Go to the documentation of this file.
1 #include "../hardware_api.h"
2 
3 #if defined(__arm__) && defined(CORE_TEENSY)
4 
5 // configure High PWM frequency
6 void _setHighFrequency(const long freq, const int pin){
7  analogWrite(pin, 0);
8  analogWriteFrequency(pin, freq);
9 }
10 
11 
12 // function setting the high pwm frequency to the supplied pins
13 // - Stepper motor - 2PWM setting
14 // - hardware speciffic
15 void _configure2PWM(long pwm_frequency, const int pinA, const int pinB) {
16  if(!pwm_frequency || !_isset(pwm_frequency) ) pwm_frequency = 50000; // default frequency 50khz
17  else pwm_frequency = _constrain(pwm_frequency, 0, 50000); // constrain to 50kHz max
18  _setHighFrequency(pwm_frequency, pinA);
19  _setHighFrequency(pwm_frequency, pinB);
20 }
21 
22 // function setting the high pwm frequency to the supplied pins
23 // - BLDC motor - 3PWM setting
24 // - hardware speciffic
25 void _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const int pinC) {
26  if(!pwm_frequency || !_isset(pwm_frequency) ) pwm_frequency = 50000; // default frequency 50khz
27  else pwm_frequency = _constrain(pwm_frequency, 0, 50000); // constrain to 50kHz max
28  _setHighFrequency(pwm_frequency, pinA);
29  _setHighFrequency(pwm_frequency, pinB);
30  _setHighFrequency(pwm_frequency, pinC);
31 }
32 
33 // function setting the high pwm frequency to the supplied pins
34 // - Stepper motor - 4PWM setting
35 // - hardware speciffic
36 void _configure4PWM(long pwm_frequency,const int pinA, const int pinB, const int pinC, const int pinD) {
37  if(!pwm_frequency || !_isset(pwm_frequency) ) pwm_frequency = 50000; // default frequency 50khz
38  else pwm_frequency = _constrain(pwm_frequency, 0, 50000); // constrain to 50kHz max
39  _setHighFrequency(pwm_frequency, pinA);
40  _setHighFrequency(pwm_frequency, pinB);
41  _setHighFrequency(pwm_frequency, pinC);
42  _setHighFrequency(pwm_frequency, pinD);
43 }
44 
45 // function setting the pwm duty cycle to the hardware
46 // - Stepper motor - 2PWM setting
47 // - hardware speciffic
48 void _writeDutyCycle2PWM(float dc_a, float dc_b, int pinA, int pinB){
49  // transform duty cycle from [0,1] to [0,255]
50  analogWrite(pinA, 255.0*dc_a);
51  analogWrite(pinB, 255.0*dc_b);
52 }
53 // function setting the pwm duty cycle to the hardware
54 // - BLDC motor - 3PWM setting
55 // - hardware speciffic
56 void _writeDutyCycle3PWM(float dc_a, float dc_b, float dc_c, int pinA, int pinB, int pinC){
57  // transform duty cycle from [0,1] to [0,255]
58  analogWrite(pinA, 255.0*dc_a);
59  analogWrite(pinB, 255.0*dc_b);
60  analogWrite(pinC, 255.0*dc_c);
61 }
62 
63 // function setting the pwm duty cycle to the hardware
64 // - Stepper motor - 4PWM setting
65 // - hardware speciffic
66 void _writeDutyCycle4PWM(float dc_1a, float dc_1b, float dc_2a, float dc_2b, int pin1A, int pin1B, int pin2A, int pin2B){
67  // transform duty cycle from [0,1] to [0,255]
68  analogWrite(pin1A, 255.0*dc_1a);
69  analogWrite(pin1B, 255.0*dc_1b);
70  analogWrite(pin2A, 255.0*dc_2a);
71  analogWrite(pin2B, 255.0*dc_2b);
72 }
73 
74 
75 // Configuring PWM frequency, resolution and alignment
76 // - BLDC driver - 6PWM setting
77 // - hardware specific
78 int _configure6PWM(long pwm_frequency, float dead_zone, const int pinA_h, const int pinA_l, const int pinB_h, const int pinB_l, const int pinC_h, const int pinC_l){
79  return -1;
80 }
81 
82 // Function setting the duty cycle to the pwm pin (ex. analogWrite())
83 // - BLDC driver - 6PWM setting
84 // - hardware specific
85 void _writeDutyCycle6PWM(float dc_a, float dc_b, float dc_c, float dead_zone, int pinA_h, int pinA_l, int pinB_h, int pinB_l, int pinC_h, int pinC_l){
86  return;
87 }
88 #endif
_configure3PWM
void _configure3PWM(long pwm_frequency, const int pinA, const int pinB, const int pinC)
Definition: drivers/hardware_specific/generic_mcu.cpp:31
_configure4PWM
void _configure4PWM(long pwm_frequency, const int pin1A, const int pin1B, const int pin2A, const int pin2B)
Definition: drivers/hardware_specific/generic_mcu.cpp:40
_constrain
#define _constrain(amt, low, high)
Definition: foc_utils.h:9
_isset
#define _isset(a)
Definition: foc_utils.h:11
_writeDutyCycle3PWM
void _writeDutyCycle3PWM(float dc_a, float dc_b, float dc_c, int pinA, int pinB, int pinC)
Definition: drivers/hardware_specific/generic_mcu.cpp:64
_writeDutyCycle2PWM
void _writeDutyCycle2PWM(float dc_a, float dc_b, int pinA, int pinB)
Definition: drivers/hardware_specific/generic_mcu.cpp:55
_writeDutyCycle4PWM
void _writeDutyCycle4PWM(float dc_1a, float dc_1b, float dc_2a, float dc_2b, int pin1A, int pin1B, int pin2A, int pin2B)
Definition: drivers/hardware_specific/generic_mcu.cpp:74
_writeDutyCycle6PWM
void _writeDutyCycle6PWM(float dc_a, float dc_b, float dc_c, float dead_zone, int pinA_h, int pinA_l, int pinB_h, int pinB_l, int pinC_h, int pinC_l)
Definition: drivers/hardware_specific/generic_mcu.cpp:86
_configure6PWM
int _configure6PWM(long pwm_frequency, float dead_zone, const int pinA_h, const int pinA_l, const int pinB_h, const int pinB_l, const int pinC_h, const int pinC_l)
Definition: drivers/hardware_specific/generic_mcu.cpp:47
_configure2PWM
void _configure2PWM(long pwm_frequency, const int pinA, const int pinB)
Definition: drivers/hardware_specific/generic_mcu.cpp:23