Busan IT/ARM Controller2015. 9. 11. 17:36

==================================Outline====================================

PWM(Pulse Width Modulation Controller)

----------------------------------------------------------------------------

 

PWM(Pulse Width Modulation Controller)

 

 

비교기를 활용하여 펄스의 폭을 조절하는 것이 pwm이다.

 


 

PWM_SR(PWM status register) - PWMon/off 상태를 담고 있는 레지스터이다.

PWM_ENA(PWM Enable) - PWM을 작동시키는 레지스터

PWM_DIS(PWM Disable) - PWM을 작동을 멈추는 레지스터

PWM_CPRD - PWM의 삼각형 모양을 제어한다.

PWM_CLTY - 펄스의 넓이를 제어한다.

 

즉 펄스의 넓이는 PWM_CPRDPWM_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
Posted by newind2000