pwm.h
Go to the documentation of this file.00001
00045 #ifndef DRV_PWM_H
00046 #define DRV_PWM_H
00047
00048 #include <cpu/attr.h>
00049
00050 #include <cfg/compiler.h>
00051 #include "cfg/cfg_pwm.h"
00052
00056 #define PWM_MAX_DUTY ((pwm_duty_t)0xFFFF)
00057 #define PWM_MAX_PERIOD 0xFFFF
00058 #define PWM_MAX_PERIOD_LOG2 16
00059
00065 typedef uint16_t pwm_duty_t;
00066
00071 typedef uint32_t pwm_freq_t;
00072
00073 #if !CFG_PWM_ENABLE_OLD_API || defined(__doxygen__)
00074
00094 typedef enum PwmPolarity
00095 {
00097 PWM_POL_HIGH_PULSE,
00099 PWM_POL_POSITIVE = PWM_POL_HIGH_PULSE,
00101 PWM_POL_LOW_PULSE,
00103 PWM_POL_NEGATIVE = PWM_POL_LOW_PULSE,
00104 } PwmPolarity;
00105
00106 struct PwmHardware;
00107
00111 typedef struct Pwm
00112 {
00113 unsigned ch;
00114 pwm_duty_t duty;
00115 PwmPolarity pol;
00116 bool enabled;
00117 struct PwmHardware *hw;
00118 } Pwm;
00119
00120 void pwm_setDuty(Pwm *ctx, pwm_duty_t duty);
00121 void pwm_setFrequency(Pwm *ctx, pwm_freq_t freq);
00122 void pwm_setPolarity(Pwm *ctx, PwmPolarity pol);
00123 void pwm_enable(Pwm *ctx, bool state);
00124 void pwm_init(Pwm *ctx, unsigned channel);
00126 #endif
00127
00128
00129 #if CFG_PWM_ENABLE_OLD_API
00130
00141 #include CPU_HEADER(pwm)
00142 #include "hw/pwm_map.h"
00143
00152 INLINE void pwm_setPolarity(PwmDev dev, bool pol)
00153 {
00154 pwm_hw_setPolarity(dev, pol);
00155 }
00156
00157 void pwm_setDuty(PwmDev dev, pwm_duty_t duty);
00158 void pwm_setFrequency(PwmDev dev, pwm_freq_t freq);
00159 void pwm_enable(PwmDev dev, bool state);
00160 void pwm_init(void);
00162 #endif
00163
00164
00165
00166
00167
00168
00169 void pwm_testRun(void);
00170 int pwm_testSetup(void);
00171
00172 #define pwm_testSetUp() pwm_testSetup()
00173 int pwm_testTearDown(void);
00174
00175
00177
00178 #endif