본문 바로가기

[AVR]/Mega16

[ATmega16x EVM] LED제어 예제

[ATmega16x EVM] LED제어 예제

사용자 삽입 이미지


AVR의 개발환경은 GCC (AVR Studio 4)를 이용했고 최대한 간단하게 작성하려고 노력했다.

AVR Studio에서 프로젝트를 하나 생성하고 옵션을 아래와 같이 설정한다.


[Mega16 EVM]보드에는 2개의 LED가 PB3, PC7포트에 각각 연결되어 있고 디버깅용으로 테스트 해 볼 수 있다.



LED제어를 위한 드라이버는 속도를 위해 간단히 define문으로  /00_hal/폴더에 [board.h]에 저장되어 있다.

Led1Init()함수로 초기화 해 주고 Led1On(), Led1Off()로 간단히 제어할 수 있다.

/*
//-----------------------------------------------------------------------------
// LED Driver
#define LED1_BIT       BIT3
#define LED1_PORT   PORTB
#define Led1Init()       Sbi(DDRB, LED1_BIT)
#define Led1On()       Cbi(LED1_PORT, LED1_BIT)
#define Led1Off()       Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()  Tbi(LED1_PORT, LED1_BIT)


#define LED2_BIT       BIT7
#define LED2_PORT   PORTC
#define Led2Init()       Sbi(DDRC, LED2_BIT)
#define Led2On()       Cbi(LED2_PORT, LED2_BIT)
#define Led2Off()       Sbi(LED2_PORT, LED2_BIT)
#define Led2Toggle()  Tbi(LED2_PORT, LED2_BIT)
//-----------------------------------------------------------------------------
*/



예제 소스코드 자체는 상당히 간단하다. 일정간격으로 LED를 점등하는 예제 이다.



//-----------------------------------------------------------------------------
// Main Routine
//-----------------------------------------------------------------------------
int main(void)
{
     SystemInit();


     Led1Init();
     Led2Init();

     Led2On();
     Led1Off();


     while(1)
     {
          Led1On();
          Led2Off();
          Delay(300);


          Led1Off();
          Led2On();
          Delay(300);
     }

}
//-----------------------------------------------------------------------------
























 









USB포트로 파워를 받고 LED점등 테스트 동영상

반응형