Mark Uckermann / DtPWM
Committer:
dontknowhow
Date:
Sat Mar 25 17:26:48 2017 +0000
Revision:
0:f4cf8380dbee
Child:
2:1ef7ff2f120e
With interrupts at MR0 and MR5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dontknowhow 0:f4cf8380dbee 1 #include "mbed.h"
dontknowhow 0:f4cf8380dbee 2
dontknowhow 0:f4cf8380dbee 3 #ifndef DTPWM_H
dontknowhow 0:f4cf8380dbee 4 #define DTPWM_H
dontknowhow 0:f4cf8380dbee 5
dontknowhow 0:f4cf8380dbee 6 /** Library for fast and high resolution opposite PWM output with
dontknowhow 0:f4cf8380dbee 7 * controllable dead times
dontknowhow 0:f4cf8380dbee 8 */
dontknowhow 0:f4cf8380dbee 9
dontknowhow 0:f4cf8380dbee 10 class DtPWM{
dontknowhow 0:f4cf8380dbee 11 public:
dontknowhow 0:f4cf8380dbee 12 /**
dontknowhow 0:f4cf8380dbee 13 * Create a dtPWM object connected to channel 2 and 4, optionally to LED 2&4
dontknowhow 0:f4cf8380dbee 14 *
dontknowhow 0:f4cf8380dbee 15 * @param led - false does not connect LEDs (default)
dontknowhow 0:f4cf8380dbee 16 */
dontknowhow 0:f4cf8380dbee 17 DtPWM(bool led = false);
dontknowhow 0:f4cf8380dbee 18 ~DtPWM();
dontknowhow 0:f4cf8380dbee 19
dontknowhow 0:f4cf8380dbee 20 /**
dontknowhow 0:f4cf8380dbee 21 * Set the period, duty cycle, and dead time.
dontknowhow 0:f4cf8380dbee 22 *
dontknowhow 0:f4cf8380dbee 23 * @param p_us - period in micro seconds
dontknowhow 0:f4cf8380dbee 24 * @param d - duty cycle from 0-1 as float
dontknowhow 0:f4cf8380dbee 25 * @param dt_us - dead time between switching in micro seconds
dontknowhow 0:f4cf8380dbee 26 */
dontknowhow 0:f4cf8380dbee 27 void setDtPWM(double p_us, float d, double dt_us);
dontknowhow 0:f4cf8380dbee 28
dontknowhow 0:f4cf8380dbee 29 /**
dontknowhow 0:f4cf8380dbee 30 * Value for maximum duty cycle that fulfils minimum dead times
dontknowhow 0:f4cf8380dbee 31 */
dontknowhow 0:f4cf8380dbee 32 float d_max;
dontknowhow 0:f4cf8380dbee 33
dontknowhow 0:f4cf8380dbee 34 /**
dontknowhow 0:f4cf8380dbee 35 * Fast way to change the duty cycle.
dontknowhow 0:f4cf8380dbee 36 *
dontknowhow 0:f4cf8380dbee 37 * @param d - duty cycle from 0-1 as float no checking is done in this function
dontknowhow 0:f4cf8380dbee 38 */
dontknowhow 0:f4cf8380dbee 39 void setD(float d);
dontknowhow 0:f4cf8380dbee 40
dontknowhow 0:f4cf8380dbee 41 private:
dontknowhow 0:f4cf8380dbee 42 unsigned int p_tcks; // clock ticks in period
dontknowhow 0:f4cf8380dbee 43 unsigned int dt_tcks; // dead time ticks
dontknowhow 0:f4cf8380dbee 44 };
dontknowhow 0:f4cf8380dbee 45 #endif