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 #include "appconfig.h" 00052 00053 #define PWM_HW_MAX_PRESCALER_STEP 10 00054 #define PWM_HW_MAX_PERIOD 0xFFFF 00055 00059 typedef uint16_t pwm_period_t; 00060 00064 typedef struct PwmChannel 00065 { 00066 bool duty_zero; 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 pwm_period_t pwm_hw_getPeriod(PwmDev dev); 00082 00083 #endif /* DRV_ADC_AT91_H */
