[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 초기화 및 주기 설정
LPC1113 PWM테스트 예제 소스코드
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)
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);
//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");
#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);
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)
반응형