Files
2025-02-MPX/ccs/pwm.c
2025-12-10 02:26:47 +09:00

31 lines
790 B
C

#include "pwm.h"
void pwm_init_for_motors(uint16_t period) {
P2->DIR |= 0xc0;
P2->SEL0 |= 0xc0;
P2->SEL1 &= ~0xc0;
// 전체 주기 설정
TIMER_A0->CCTL[0] = 0x0080;
TIMER_A0->CCR[0] = period;
TIMER_A0->EX0 = 0x00000;
// 세부 주기 및 출력 설정
TIMER_A0->CCTL[3] = 0x0040;
TIMER_A0->CCR[3] = 0; // set duty left
TIMER_A0->CCTL[4] = 0x0040;
TIMER_A0->CCR[4] = 0; // set duty right
// 모드
TIMER_A0->CTL = 0x02f0;
// SMCLK 12MHz, divide by 8, up-down mode
}
void pwm_set_duty_right(uint16_t duty) {
if (duty > TIMER_A0->CCR[0]) duty = TIMER_A0->CCR[0];
TIMER_A0->CCR[3] = duty;
}
void pwm_set_duty_left(uint16_t duty) {
if (duty > TIMER_A0->CCR[0]) duty = TIMER_A0->CCR[0];
TIMER_A0->CCR[4] = duty;
}