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