PIC16F1509는 4개의 10비트 PWM출력이 있다. 20Mhz에서 최대 208khz, 6.5bit 해상도로 출력 가능하다.
PIC16F1509 PWM초기화 코드
void Pwm1Init(void)
{
Cbi(TRISC, BIT5);Cbi(ANSELC, BIT5);
PWM1CON = 0x00;
T2CON = 0b00000111;
PR2 = 255;
PWM1DCH = PWM1DCL = 0x00;
T2CON = 0b00000100;
PWM1DCH = 0b00100000;
PWM1EN = 1;
PWM1OE = 1;
PWM1OUT = 0
PWM1POL = 0;
}void PWM1_SET(unsigned int Duty)
{
PWM1DCH = (Duty >> 2); PWM1DCL = (Duty << 6);
}
PIC16F157x PWM출력 핀맵
PIC16F1509 ADC, PWM테스트 예제 소스코드
ADC 4에 연결되어 있는 VR값에 따라 PWM을 가변하여 출력 하는 예제 코드 이다.
void main(void)
{
unsigned int ad_value;
unsigned int pwm = 0;
SystemInit();
Led1Init();
Led1On();
U0_Init(BAUD_57600);
DebugPrint("PIC16F1509 EVM Test\r\n");
AdcInit();
Pwm1Init();
while(1)
{
ad_value = AdcRead(4);
pwm = ad_value;
PWM1_SET(pwm);
DebugPrint("PWM(ADC)=%d\r\n", pwm);;
Delay(50);
}
}
PIC16F1508 ADC, PWM테스트 동영상
ADC에 연결되 가변저항의 전압값에 따라 PWM을 출력하여 램프 밝기를 조절하는 테스트 동영상