본문 바로가기
Mcu 만져보기

Atmega128로 LED구동하기

by 닉네임 없네용 2024. 3. 1.

1. 실습목적

Atmega128의 I/O 포트를 이해라고, LED 구동 실습을 통해서 활용방법을 알아보자

 

2. 참고자료, 필요장비 및 부품

  • 자료
  • 장비: JKIT-128-1, USB 케이블

3. 관련 내용

  1) 입출력 포트(I/O port)

 

 MCU는 프로그램 수행 시에 외부 신호를 MCU로 받아들이고, 생성된 정보를 외부장치로 전달한다.

외부 신호를 MCU로 받아들이는 입구역활을 하는 것이 입력포트(input prot)이고, 정보를 MCU에서 외부로 내보내는 출구역활을 하는 것이 출력포트(output port)이다. 주변장치의 제어용으로 활용되는 MCU에서는 입출력포트(I/O port)를 잘 활용하는 것이 매우 중요하다.

 

  2) Atmega128의 I/O 포트

 

 Atmega128의 I/O 포트의 특징은 다음과 같다.

  • 모든 포트의 핀은 개별적으로 내부 풀업저항을 사용할 수 있다.
  • 각 병렬 I/O포트에 대한 I/O 레지스터는다음과 같이 3가지로 구성된다.
    • PORTx : 출력용 데이터 값을 위한 레지스터
    • DDRx : PORT의 입출력방향 설정을 위한 레지스터
    • PINx : 입력핀에 해당하는 레지스터로서 입력된 값을 표시한다.

4. 실습내용 및 방법

[회로 구성]

USB 케이블을 연결한다.

 

[실험 1] 특정 비트의 LED 점등하기

 

(0) LED 모듈의 1번과 7번에 해당하는 LED를 점등해보자.

 

(1) 다음 프로그램을 작성하라.

#include <avr/io.h>
int main()
{
  DDRA = 0xFF;
  PORTA = 0x41;
  return 0;
}

 

(2) 프로그램을 컴파일하고, 생성된 hex파일을 Atmega128로 다운로드하라.

 

(3) 프로그램의 정상작동 여부를 확인하라.

 

(4) 프로그램 의미를 파악하라.

    - DDRA, PORTA는 변수명인가?

      NO, PORTA는 LED 출력용 데이터값을 위한 레지스터이다.

 

    - DDRA, PORTA는 어디에 정의(선언)되어 있는가?

      <avr/io.h>인 헤더파일에 정의 되어 있다.

 

    - DDRA =  0xFF; 의 의미는?

      0xFF는 0b11111111과 같다, 여기서 0x로 시작하면 16진수로 표현하다는 뜻이고 0b로 시작하면 2진수로 표현한다는 뜻  이다.

     결론적으로 LED의 1~8을 다 출력한다는 뜻이다.

 

(5) 응용 실험

    LED 모듈의 3번과 4번에 해당하는 LED를 동시에 점등하라.

 

(6) 실습 결과

실험 결과

 

 

응용 실험 결과

 

'Mcu 만져보기' 카테고리의 다른 글

Atmega128 LED 구동하기 4  (0) 2024.03.03
Atmega128 LED 구동하기 3  (0) 2024.03.02
Atmega128 LED 구동하기2  (0) 2024.03.01
MCU vs MPU 둘의 차이는 무엇일까?  (2) 2024.02.01
Amega128 vs 라즈베리파이 뭐가 다른가?  (0) 2024.02.01