AVR(Atmega128a)이론

공이지·2024년 5월 29일

이론

#자세한 내용은 다루지 않을 것이며 펌웨어를 다루기위한 기초를 실습한 내용을 정리합니다. 자세한 내용은 AVR이론(아이네오)_naverBlog 여기서 이론지식을 참고하였습니다.

MCU

  • 집적 회로 안에 프로세서와 메모리, 입출력 버스 등의 최소한의 컴퓨팅 요소를 내장한 초소형 컨트롤러. 보통 임베디드 애플리케이션용으로 설계된 연산 장치를 뜻한다.
  • 주로 C언어의 기반으로한 예제와 라이브러리를 제공합니다.
  • DataSheet의 중요성?
    MCU를 사용해 회로작성을 한다고 하면 완성된 회로를 PCB로 제작하고 코딩을 할 때 사용한 MCU부품의 DataSheet는 계속 확인해 사용한다.
    • 내가 사용하려는 기능은 있는지? 몇개의 채널이 있는지를 확인하면서 여러 다른 MCU들의 DataSheet를 확인하여 BlockDiagra을 비교하여 개발보드에 적합한 MCU를 선택합니다.
    • MCU를 선택할 때 Timer가 많이 필요한 펌웨어 작성을 하는 경우 Timer관련 내용도 확인해야합니다. 특히,interrupt에서 우선순위로 관리 해야 할 interrupt가 많은 펌웨어를 개발해야한다면 검토해야 할 사항이 많아집니다.

microchip Studio

  • 실습에 사용한 AVR 개발환경입니다.

Atmega128a

  • 자세한 내용은 DataSheet와 상위 링크의 이론을 정리한 블로그에서 공부하였습니다.
  • PB1, PE0,PE1는 SPI, UART 등 통신 기능을 사용하는 경우, 다른 통신 기능과 충돌하지 않도록 주의해야 합니다

<Atmega128 핀 구조도>

Port들은 A~G까지의 총 7개의 포트가 존재하고 포트마다 여러개의 핀이 존재합니다. 각각의 핀들은 각자 다른 특수기능들은 가지고 있습니다.

기본개념

  • DDRx 레지스터 : 입출력 방향을 설정하는 레지스터입니다.
  • PORTx 레지스터 : 데이터 입출력에 해당하는 레지스터입니다.
  • PINx 레지스터 : 포트 입력 핀에 해당하는 레지스터입니다. (PINx의 초기값은 알 수 없습니다.)
  • DDRx, PORTx,는 read/write기능이 가능하지만, PINx는 read만 가능합니다.
  • 정리하자면 DDRx이 0XFF; 라면 PORTx로 출력을 보낼 수 있고, DDRx가 0X00;이라면 PINx로 입력을 받을 수 있습니다.(즉, DDRx=1, PORTx = 1인경우 HIGH 출력, DDRx=1, PORTx = 0인경우 LOW 출력) 이를 활용하여 한개의 포트만 입력으로 받고 나머지는 출력이 가능한 상태도 논리식으로 만들 수 있습니다.

    위 표를 보면 포트는 단순히 HIGH, LOW상태만 존재하는게 아닙니다. 포트는 3상태 버터(Tri-state Buffer)를 사용하는데 그 중 하이 임피던스 상태를 의미합니다.
    AVR은 아래와 같은 Architecture 구조를 가집니다.

    자세히 보면 Data Bus에 여러가지 레지스터들이 Data Bus를 공유하는데, 이때 여러가지가 연결되어 있으므로 충돌을 방지하기 위해 Tri-State Buffer를 사용하는 것 입니다.
    자세한 I/O Register 정리

출처:

profile
화이팅..!

0개의 댓글