아트메가/이론

아트메가128 LED키기

원원 2016. 11. 22. 22:04



실제로 아트메가128을 사용하여 LED를 켜보겠다. (처음하는 사람들이 알기쉽게 불필요한 내용은 쓰지않겠다. 나중에 하다보면 알게된다)

 

일단 LED를 킬때 어떤식으로 연결해야하는지 알려주겠다.

 

기본적으로 이런식으로 연결하면 LED가 켜진다. 주의할점은 긴 쪽이 +극에 연결해야하고 짧은쪽을 -쪽에 연결해야한다. 이건 다른 극성이있는 다른 소자들도 마찬가지니까 꼭 외우고있어야한다.

또한 보통은 저항을 달아야 LED가 터지지 않는다. (그러나 이 포스팅에서는 저항을 안달아도 견딜수있는 LED를 사용하였다..)

 

이제 LED의 사용법을 확인하였으니 아트메가의 사진을 보겠다.

 

<브레드보드에 연결한 ATMEGA128-70B-USB>

 

 

아트메가는 다양한 형태일 수 있는데 이 포스팅에서는 ATMEGA128-70B-USB모델을 사용하겠다. ISP라는 곳에 컴퓨터와 ISP케이블을 연결하면 아트메가를 사용할 준비가 끝난 것이다.

이제는 아트메가한테 프로그램을 넣어서 우리가 원하는대로 동작하게 해야하는데 기본적인 명령어를 살펴보기전에 아트메가는 레지스터를 설정해서 동작하게 하는데 기본적으로 아트메가의 레지스터들은 8비트이다. 그래서 8비트면 8개이고, 16진수로 표현한다. ex) 0xff = 0b11111111, 0x03 = 0b00000011  16진수(0x)나 2진수(0b)로 사용하면 된다.

아트메가 포트의 핀들은 기본적으로 대부분 8개씩 있다.(G포트는 5개) 예를들어 A포트는 PA0,PA1 ...PA7 까지 있다(아트메가에 써있음)

 

DDRn - 입력 or 출력을 결정하는 레지스터이다. 0이면 입력으로 사용한다는 것이고 1이면 출력으로 설정한다는 것이다. (아두이노의 pinMode와 비슷함)

PORTn - DDRn이 출력모드(1일때) 5v를 내보낼건지 0v를 내보낼건지 결정한다.

PINn - DDRn이 입력모드(0일때) 1이나 0으로 입력을 받았나 안받았나 알아차릴수 있다.

 

LED를 키기위해서는 DDRn과 PORTn만 필요하다.

 

포트A를 사용할 것이고 avr studio를 사용할 것이다.

 

 

< LED ON>

연결은 LED +극을 핀PA0,PA1에 연결하고 -극을 gnd에 연결하면 된다. 왜냐하면 PA0에서 5V를 내보내서 LED를 킬것이다.

 

 

 A포트 0번 1번에 LED 2개 키기

 #include <avr/io.h>
 
int main(void)
{
 DDRA=0xff; //A포트를 모두 출력모드로 설정한다.
 while(1)
 {
  PORTA=0x03; //A포트0번 1번핀에 5V를 보내고 2~7번핀에 0V를 보낸다.
 }
}

 

 

-코드 상세해석-

#include <avr/io.h> //헤더파일을 인클루드한다
 
int main(void) //메인문
{
 DDRA=0xff; DDRA핀을 0xff한다.(0xff= 0b 1111 1111) 즉 모두 출력모드로 사용하겠다.
 while(1)  //프로그램이 꺼지면 안되므로 while문을 돌리고 조건은 true로 한다.
 {
  PORTA=0x03;  //0x03 = 0b 0000 0011이므로 0번핀과 1번핀에 5V를 보낸다.
 }
}


DDRx, PORTx에 대한 상세설명

http://wowon.tistory.com/55