Busan IT/ARM Controller2015. 9. 14. 17:30

#include <project.h>

void PWM2_Init()
{
  *AT91C_PMC_PCER = 1<<(AT91C_ID_PWMC);  //clock into PWM
  *AT91C_PIOA_PPUDR = (AT91C_PA25_PWM2);//pull-up register disable
  *AT91C_PIOA_PDR = (AT91C_PA25_PWM2);  //PIOA pin disable
  *AT91C_PIOA_BSR = (AT91C_PA25_PWM2);  //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
  *AT91C_PWMC_CH2_CPRDR = MAXDUTY;    //Channel Period Register
  *AT91C_PWMC_CH2_CDTYR = DEF_DUTY;      //Channel Duty Cycle Register  
  *AT91C_PWMC_ENA = AT91C_PWMC_CHID2;  //PWMC Enable Register  
}
//타이밍도 486
//파형의 왼쪽을 늘이고 줄이는 레지스터 CDTY
//파형의 오른쪽을 조절하는 레지스터 CPRD
void Set_Duty(int iDuty)  //duty rate 조절 
{
  if(iDuty > MAXDUTY)
    iDuty = MAXDUTY;
  else if0 > iDuty)
    iDuty = 0;
  //파형 중간에 듀티비를 수정할 수 없음으로 update register를 사용한다.
  *AT91C_PWMC_CH2_CUPDR = iDuty;//Channel Update Register
  

}


동영상 - https://www.youtube.com/watch?v=a9irzMGpZFc&feature=youtu.be


반응형

'Busan IT > ARM Controller' 카테고리의 다른 글

ADC 전압측정  (0) 2015.09.18
Analogue to Digital Converter  (0) 2015.09.17
PWM(Pulse Width Modulation Controller)  (0) 2015.09.11
초음파 센서 동작  (0) 2015.09.10
초음파 센서  (0) 2015.09.09
Posted by newind2000