| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef _PWM_H__
- #define _PWM_H__
- #include "bsp/bsp.h"
- #include "libs/os.h"
- #include "bsp/dma.h"
- #define TIMxCCER_MASK_CH012 ((uint16_t) (TIMER_CHCTL2_CH0EN|TIMER_CHCTL2_CH0NEN|\
- TIMER_CHCTL2_CH1EN|TIMER_CHCTL2_CH1NEN|\
- TIMER_CHCTL2_CH2EN|TIMER_CHCTL2_CH2NEN))
- #define pwm_enable_channel() {TIMER_CHCTL2(pwm_timer) |= TIMxCCER_MASK_CH012;}
- #define pwm_disable_channel() {TIMER_CHCTL2(pwm_timer) &= ~TIMxCCER_MASK_CH012;}
- #define ch0_update_duty(duty) TIMER_CH0CV(pwm_timer) = (uint32_t)duty
- #define ch1_update_duty(duty) TIMER_CH1CV(pwm_timer) = (uint32_t)duty
- #define ch2_update_duty(duty) TIMER_CH2CV(pwm_timer) = (uint32_t)duty
- #define update_adc_trigger(time) TIMER_CH3CV(adc_timer) = (uint32_t)time
- #define pwm_update_duty(dutyA, dutyB, dutyC, time) \
- do {\
- ch0_update_duty(dutyA);\
- ch1_update_duty(dutyB);\
- ch1_update_duty(dutyC);\
- update_adc_trigger(time);\
- }while(0)
- #define update_sample_time(samp1, samp2) do{adc_timer_dma_buf[2] = samp1; adc_timer_dma_buf[0] = samp2;}while(0)
- #define update_distort_chxcv(duty) do {pwm_timer_dma_buf[1] = duty;}while(0)
- #define enable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) |= (uint32_t) TIMER_DMA_CH3D
- #define disable_pwm_timer_dma() TIMER_DMAINTEN(pwm_timer) &= ~((uint32_t) TIMER_DMA_CH3D)
- #define enable_sample_timer_dma() TIMER_DMAINTEN(adc_timer) |= (uint32_t) TIMER_DMA_CH0D
- #define disable_sample_timer_dma() TIMER_DMAINTEN(adc_timer) &= ~((uint32_t) TIMER_DMA_CH0D)
- void pwm_3phase_init(void);
- void pwm_start(void);
- void pwm_stop(void);
- void pwm_turn_on_low_side(void);
- #endif /*_PWM_H__*/
|