pwm_at91.h
Go to the documentation of this file.00001 00041 #ifndef DRV_PWM_AT91_H 00042 #define DRV_PWM_AT91_H 00043 00044 #include "hw/pwm_map.h" 00045 00046 #include <cfg/compiler.h> 00047 #include <cfg/macros.h> 00048 00049 #include <io/arm.h> 00050 00051 00052 #define PWM_HW_MAX_PRESCALER_STEP 10 00053 #define PWM_HW_MAX_PERIOD 0xFFFF 00054 00058 typedef uint16_t pwm_period_t; 00059 00063 typedef struct PwmChannel 00064 { 00065 bool duty_zero; 00066 bool pol; 00067 int pwm_pin; 00068 reg32_t *mode_reg; 00069 reg32_t *duty_reg; 00070 reg32_t *period_reg; 00071 reg32_t *update_reg; 00072 00073 } PwmChannel; 00074 00075 00076 void pwm_hw_init(void); 00077 void pwm_hw_setFrequency(PwmDev dev, uint32_t freq); 00078 void pwm_hw_setDutyUnlock(PwmDev dev, uint16_t duty); 00079 void pwm_hw_disable(PwmDev dev); 00080 void pwm_hw_enable(PwmDev dev); 00081 void pwm_hw_setPolarity(PwmDev dev, bool pol); 00082 pwm_period_t pwm_hw_getPeriod(PwmDev dev); 00083 00084 #endif /* DRV_ADC_AT91_H */
