BeRTOS
|
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; //Fwd declaration 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); //defgroup pwm_api 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); //defgroup pwm_old_api 00162 #endif 00163 00164 /* 00165 * Test function prototypes. 00166 * 00167 * See pwm_test.c for implemntation of these functions. 00168 */ 00169 void pwm_testRun(void); 00170 int pwm_testSetup(void); 00171 /* For backward compatibility */ 00172 #define pwm_testSetUp() pwm_testSetup() 00173 int pwm_testTearDown(void); 00174 00175 //defgroup pwm_driver 00177 00178 #endif /* DRV_PWM_H */