본문 바로가기
AVR

[AVR] LED 실습 2. LED의 ON/OFF 반복

by hseoy 2020. 6. 4.
반응형

[LED 실습 2. LED의 ON/OFF 반복 ]

이 글에서는 AVR(Atmega128A)에서 LED제어하는 것을 실습한 내용을 다루려고 한다. 이 글은 지식을 나누고자 하는 목적이 아닌 개인 기록의 목적으로 작성했다는 점을 기억하기를 바란다.

# 실습 2. LED의 ON/OFF 반복

이 문제에서 알아야 할 것은 LED실습1 과 동일하지만 지연(delay) 시키는 것을 더 알아야 한다. 일반적으로 ms단위로 delay시키는 함수인 _delay_ms()함수를 사용하며, 이를 위해 F_CPU를 정의하여 외부 클럭을 정의해준다. 내가 사용하고 있는 ATmega128 보드의 경우 16MHz를 사용하고 있어 16000000UL로 정의해줬다. 

회로의 경우, 실습1 과 동일하다.

코드의 로직은 단순하다. 먼저 DDRn과 PORTn 레지스터를 세팅해주고, PORTn레지스터의 값을 500ms마다 반복해서 변경해주면 된다.

#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>

int main()
{
    DDRC = 0xFF;
    PORTC = 0x00;
    
    while(1)
    {
        PORTC = 0xFF;
        _delay_ms(500);
        PORTC = 0x00;
        _delay_ms(500);
    }
}

아래는 위 코드를 AVR에 업로드하여 실행한 영상이다.

 

반응형

댓글