newind2000 2015. 5. 18. 13:30

16 bit PC PWM

 

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

16bit PC PWM

- LED를 활용한 dimming

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

Duty rate를 변경하여 LED를 제어해보자.

GPIO를 버튼 2개에 활용하여 updown을 설정하고 LED의 불 밝기를 조절해 보자.

 

 

/*** 소스 ***/

 

<main.c>


#include "SMART.h"

int main(void)
{
  /*** 변수 선언 ***/
  int duty=0;
  char i=0;
  
  /*** 포트 설정 ***/
  DDRB = 0xFF;  //PORT B의 모든 핀 출력 설정
  DDRA = 0xFC;  //PORT A의 모든 핀 입력 설정
  
  
  /*** PC PWM  설정 ***/
  TCCR1A = 0x81;  //Phase Correct PWM 0b 1000 0001
  TCCR1B = 0x02;  // 0b 0001 0001, 1분주
  


  while(1)
  {
    while(PINA==0x01)
    {
      if(PINA==0x00)
      {
          duty +=51;
          ++i;
                  
          if(i>5)
          {            
            OCR1A=duty=255;
            i = 6;
          }
          OCR1A = duty;
              
      }

    }
              
    
    
    while(PINA==0x02)
    {
      if(PINA==0x00)
      {
          
          duty -=51;  
          --i;
                  
          if(duty<=50)
          {
            
            i=duty=0;
            
          }
          OCR1A = duty;  
        
      }
              
    }  
          
  }
  
  return 0;
}



 

반응형