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