==================================Outline====================================
PWM(Pulse Width Modulation Controller)
----------------------------------------------------------------------------
PWM(Pulse Width Modulation Controller)
비교기를 활용하여 펄스의 폭을 조절하는 것이 pwm이다.
PWM_SR(PWM status register) - PWM의 on/off 상태를 담고 있는 레지스터이다.
PWM_ENA(PWM Enable) - PWM을 작동시키는 레지스터
PWM_DIS(PWM Disable) - PWM을 작동을 멈추는 레지스터
PWM_CPRD - PWM의 삼각형 모양을 제어한다.
PWM_CLTY - 펄스의 넓이를 제어한다.
즉 펄스의 넓이는 PWM_CPRD와 PWM_CLTY를 사용하여 조절해야 한다.
피라미드형의 파형은 펄스의 넓이를 중간으로부터 양쪽으로 늘여줄 수 있고, 톱니형의 경우에는 우측 끝을 기준으로 좌측으로 넓이를 늘여줄 수 있다.
파형의 한 주기마다 인터럽트가 발생함으로 타이머/카운터의 성질을 가지고 있음을 알 수 있다.
Peripheral B를 선택하여 25번 핀에 있는 PWM2를 선택하자.
/*** pwm.c ***/
#include <project.h>
void PWM2_Init()
{
*AT91C_PMC_PCER = 1<<(AT91C_ID_PWMC); //clock into PWM
*AT91C_PIOA_PPUDR = 1<<(AT91C_ID_PWMC);//pull-up register disable
*AT91C_PIOA_PDR = 1<<(AT91C_ID_PWMC); //PIOA pin disable
*AT91C_PIOA_BSR = 1<<(AT91C_ID_PWMC); //Prepheral B 25(PWM2) enable
*AT91C_PWMC_MR = (30 << DIVA) |(0x03<< PREA)
| (30 << DIVB) |(0x03<< PREB); //200,000hz
*AT91C_PWMC_CH2_CMR = AT91C_PWMC_CPRE_MCKA & (~AT91C_PWMC_CALG)
& (~AT91C_PWMC_CPOL) & (~AT91C_PWMC_CPD) //channel mode register
}
'Busan IT > ARM Controller' 카테고리의 다른 글
Analogue to Digital Converter (0) | 2015.09.17 |
---|---|
PWM(Pulse Width Modulation) (0) | 2015.09.14 |
초음파 센서 동작 (0) | 2015.09.10 |
초음파 센서 (0) | 2015.09.09 |
ARM 타이머/카운터 소스, 초음파 센서 거리측정식 (0) | 2015.09.09 |