본문 바로가기

[Microchip]/dsPIC33E

dsPIC33E - PWM 테스트 (HIGH-SPEED PWM MODULE)

dsPIC33E - PWM 테스트 (HIGH-SPEED PWM MODULE)



dsPIC33EPXXXMC20X/50X 시리즈는 모터제어를 위해 3채널(6 PWM)의 HIGH-SPEED PWM MODULE 이 있다.

70Mhz에서 7.14 ns의 듀티폭을 제어할 수 있다.


dsPIC33E PWM 핀맵

26-PWM1L/T5CK/RB15

25-PWM1H/T3CK/RB14


24-PWM2L/CTPLS/RB13

23-PWM2H/RB12


22-PWM3L/RB11

21-PWM3H/RB10




dsPIC33E PWM 블록도




dsPIC33E PWM 초기화 코드

void InitMCPWM(void)

{

    PTCON = 0x0000;

    PTPER = 16000; //1000

    PHASE1 = 0;

    PDC1 = 16000;


    DTR1 = 0;

    ALTDTR1 = 0;


    PWMKEY = 0xABCD;

    PWMKEY = 0x4321;


    IOCON1 = 0xCC00;

    PWMCON1 = 0x0000;


    PWMKEY = 0xABCD;

    PWMKEY = 0x4321;


    FCLCON1 = 0x0003;

    PTCON2 = 0x0003; //clock prescaler

    PTCON = 0x8000;

}




dsPIC33EP PWM 테스트 동영상

dsPIC33EP32 의 PWM을 이용하여 가변저항의 전압값에 따라 3색 컬러 LED의 밝기를 출력하는 테스트




dsPIC33E - PWM 테스트 예제 코드

int main(void)

{

unsigned int gPwm1Value = MAX_PWM_VALUE;

float adc = 0.0;


//Init System

SystemInit();


DebugInit(BAUD_115200);

DebugPrint("PWM Test\r\n");


//Init LED

Led1Init();

Led1Off();


AdcInit();


InitMCPWM();


while(1)

{

gAdcData[0] = AdcRead(0);

adc = (float)gAdcData[0]*(float)(MAX_PWM_VALUE/MAX_ADC_VALUE);

SetPwm1(adc);

}

}





반응형