BeRTOS
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; //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 */