본문 바로가기

[NXP]/LPC1k

[LPC1K EVM] PWM 테스트

[LPC1K EVM] PWM 테스트



LPC1111/LPC1112/LPC1113/LPC1114 는 4개의 타이머가 있고 각각 4개의 MATCH 레지스터가 있어 PWM으로 사용할 수 있다.
각 타이머별 PWM채널은 아래와 같다.

PIO1_6/RXD/CT32B0_MAT0
PIO1_7/TXD/CT32B0_MAT1
PO0_1/CLKOUT/CT32B0_MAT2
PIO0_11/AD0/CT32B0_MAT3


PIO1_1/AD2/CT32B1_MAT0
PIO1_2/AD3/CT32B1_MAT1
SWDIO/PIO1_3/AD4/CT32B1_MAT2
PIO1_4/AD5/CT32B1_MAT3/WAKEUP


PIO0_8/MISO0/CT16B0_MAT0
PIO0_9/MOSI0/CT16B0_MAT1
SWCLK/PIO0_10/SCK0/CT16B0_MAT2


PIO1_9/CT16B1_MAT0
PIO1_10/AD6/CT16B1_MAT1






PWM 초기화 및 주기 설정
#define PWM_INTERVAL             48000     //1ms(48000/48M)


    //PWM 초기화
    init_timer32PWM(TIMER_1, PWM_INTERVAL, (1<<PWM_CH2));
    enablePWM(TIMER_1, 1);
   
    //주기 설정
    period = SET_PWM(PWM_INTERVAL, 50);       //   50%
    setMatch_timer32PWM (TIMER_1, PWM_CH2, period);


LPC1113 PWM테스트 예제 소스코드
#include "system.h"
#include "serial.h"
#include "pwm.h"

#define TIME_INTERVAL             48000     //1ms(48000/48M)

int main()
{
    unsigned long period=0;
    unsigned long cnt = 0;
    SystemInit();

    Led1Init();
    Led1Off();
    
    U0_Init(BAUD_115200);
    DebugPrint("LPC1K PWM Test\r\n");
   
    //PWM 초기화
    init_timer32PWM(TIMER_1, PWM_INTERVAL, (1<<PWM_CH2));
 enablePWM(TIMER_1, 1);
   
    //주기 설정
    period = SET_PWM(PWM_INTERVAL, 50);       //   50%
    setMatch_timer32PWM (TIMER_1, PWM_CH2, period);

    while(1)
    {
        switch(U0_GetByte())
        {
        case '+':
            cnt += 1;
            period = SET_PWM(PWM_INTERVAL, cnt);
           
            DebugPrint("CNT= %d, %d\r\n", cnt, period);
            setMatch_timer32PWM (TIMER_1, PWM_CH2, period);
            break;            
           
           
        case '-':
            cnt -= 1;
            period = SET_PWM(PWM_INTERVAL, cnt);
           
            DebugPrint("CNT= %d, %d\r\n", cnt, period);
            setMatch_timer32PWM (TIMER_1, PWM_CH2, period);
            break;             
        }
   
    }
 
    return 0;
}


[LPC1113 EVM] PWM테스트 동영상
ADC값에 따라 PWM출력을 가변하는 예제




PWM초기화 함수 (init_timer32PWM)



PWM 주기 설정 함수 (setMatch_timer32PWM)




반응형