지난 글은 임베디드 개발환경을 세팅하는것에 대해 알아보았다. 이번시간에는 임베디드의 기본인 LED 불 끄고 켜기를 해볼것이다.
기본적인 코드는 다음과 같다.
#include <mega128.h>
#include <delay.h>
void Init_port(void) // Function
{
// LED에 연결된 입출력 방향 설정을 위한 레지스터를 모두 출력설정
DDRA = 0xff;
}
void main(void)
{
while (1)
{
// Please write your application code here
PORTA = 0xff; // 포트A On
delay_ms(500); // 0.5초간 딜레이
PORTA = 0x00; // 포트A off
delay_ms(500); // 0.5초간 딜레이
}
}
💻코드및 회로분석
우선 ATmega128은 DDRA,B,C,D,E,F,G의 데이터 입출력 레지스터로 구성되어있다. 본 코드에서는 DDRA 즉 Data Direction Register A를 모두 출력설정을 하였다.
void Init_port(void) // Function
{
// LED에 연결된 입출력 방향 설정을 위한 레지스터를 모두 출력설정
DDRA = 0xff;
}
DDRA뿐 아니라 B,C,D,E,F도 같은 방식으로 가능하다. 나머지 코드는 너무 쉬우므로 생략
ATmega128 개발키트와 ISP를 케이블로 연결해준다. 참고로 위의 케이블을 올바르게 연결하지 않으면 stk500 error entering programming mode이라는 에러문구가 뜨게된다. 이제 프로그램 세팅을 해보자.
1. 새로운 프로젝트를 생성한다.
2. ATmega128을 찾는다.
3. Clock을 16MHz로 설정한다. 이는 ATmega128의 클럭이다.
4. After Build창에서 STK500을 선택한다.
5. 입력한 코드를 Build한다. 아이콘은 좌상단 가운데 민트사각형과 빨간 사각형이 동시에 있는것 중 가운데 아이콘이다.
6. 다음과 같은 창이 뜨면 성공
7. 이런 창이 뜨면 성공한거다.
8. 구동영상
330옴의 저항을 연결하여 LED가 죽는것을 방지하였다.
'Embedded > AVR' 카테고리의 다른 글
🎇Atmega128 4 digit 7 segment 제어하기 (0) | 2021.01.22 |
---|---|
Atmega128 다중 LED제어 (0) | 2021.01.16 |
비전공자의 임베디드학습 준비 (1) | 2021.01.14 |