[dsPIC MotorDriver] PWM테스트
dspic33_mcpwm.pdf
dspic의 PWM출력 핀은 GPIO와 공통으로 사용할 수 있도록 되어 있으므로 PWM기능으로 설정할 필요가 있다. PWMCON1레지스터의 PMODx, PENxH, PENxL 비트를 설정하면 된다.
PWM1CON1
PMODx : PWM 출력모드 설정
dspic의 PWM출력 핀은 GPIO와 공통으로 사용할 수 있도록 되어 있으므로 PWM기능으로 설정할 필요가 있다. PWMCON1레지스터의 PMODx, PENxH, PENxL 비트를 설정하면 된다.
PWM1CON1
PMODx : PWM 출력모드 설정
1 = 개별모드
0 = Complementray
PENxH : PWMxH I/O 동작설정
1 = PWM핀으로 사용
0 = I/O용으로 사용
PENxL : PWMxL I/O설정
1 = PWM핀으로 사용
0 = I/O용으로 사용
OVCON
OVCON 레지스터는 각각의 PWM출력핀을 임의로 제어할 수 있는 오브라이드 기능을 설정하기 위한 레지스터이다.
1일때 PWM active상태.
dspic PWM출력 설정 소스코드
void InitMCPWM(void)
{
PTPER = FCY/FPWM - 1; //40Mhz/10K 10Khz
//enable PWMs, PWM1,2,3 : Independent 모드로 사용
PWMCON1 = PWM1L_PEN|PWM1H_PEN|PWM1_MOD_IND|PWM2_MOD_IND|PWM3_MOD_IND;
OVDCON = PWM1L_EN|PWM1H_EN;
SEVTCMP = PTPER;
PWMCON2 = 0x0F00; // 16회 마다 Special Event Triger 발생 --> ADC 수행
PTCON = 0x8000; // start PWM . PWM Time Base: free running 모드
return;
}
//PWM 출력
#define SetPwm1(Value) PDC1 = (Value)
OVCON
OVCON 레지스터는 각각의 PWM출력핀을 임의로 제어할 수 있는 오브라이드 기능을 설정하기 위한 레지스터이다.
1일때 PWM active상태.
dsPIC33-SM EVM의 PWM 핀맵
RB14->PWM1H1
RB15->PWM1L1
RB12->PWM1H2
RB13->PWM1L2
dspic PWM출력 설정 소스코드
void InitMCPWM(void)
{
PTPER = FCY/FPWM - 1; //40Mhz/10K 10Khz
//enable PWMs, PWM1,2,3 : Independent 모드로 사용
PWMCON1 = PWM1L_PEN|PWM1H_PEN|PWM1_MOD_IND|PWM2_MOD_IND|PWM3_MOD_IND;
OVDCON = PWM1L_EN|PWM1H_EN;
SEVTCMP = PTPER;
PWMCON2 = 0x0F00; // 16회 마다 Special Event Triger 발생 --> ADC 수행
PTCON = 0x8000; // start PWM . PWM Time Base: free running 모드
return;
}
//PWM 출력
#define SetPwm1(Value) PDC1 = (Value)
반응형