본문 바로가기

Develop Knowledge/Atmega, AVR

1강. Atmega AVR 개요

본 글은 Atmega AVR에 대해서 간단히 알아본다.

 

- Atmega? AVR?

Atmega는 Atmel AVR 사에서 만든 8비트 "마이크로컨트롤러"이다.

 

- 마이크로컨트롤러?

마이크로컨트롤러는 CPU, RAM, EEPROM 등의 장치가 한 곳에 결합된 칩이다.

마이크로프로세서라고 오해를 하는 사람도 있는데, 마이크로프로세서는 CPU만을 의미한다. RAM, ROM 등의 장치를 외부 장치로 연결해서 사용해야 한다.

이처럼, 마이크로컨트롤러는 하나의 작은 컴퓨터로써 볼 수 있다. 그리고, 마이크로컨트롤러는 외부 장치와 연결해서 사용할 수 있다. 밑 사진은 atmega 칩 종류중 하나인데, 중앙에 있는게 마이크로컨트롤러 칩이고, 좌/우에 점처럼 보이는 부분이 핀이다. 이 핀으로 LED, 모터, 스피커 등과 연결해서 사용할 수 있다.

 

 

 

그런데 흔히 사용하는 USB처럼 선만 꼽아서 사용하는건 아니고, 다양한 연결 방식, 즉 통신 방식이 여러개가 정해져있다.

이건 Atmega에서만 정해진건 아니고, 대부분의 마이크로컨트롤러가 다음과 같은 통신 양식을 갖는다.

 

> GPIO(General Pin Input Output) : 1/0의 신호를 보낸다.

> PWM(Pulse Width Modulation) : 파형 신호를 보낸다.

> ADC/DAC(Analog/Digital Converter, Digital/Analog Converter) : 아날로그 신호와 디지털 신호를 서로 변환할 수 있다.

> UART, SPI, I2C, CAN 등등 : 통신 방식이다. 각각의 통신 방식마다 사용할 수 있는 모듈이 있다.

 

각각의 통신 양식으로 원하는 모듈, 즉 부품을 제어할 수 있다.

GPIO 같은 경우는 1/0 신호를 만드므로, LED를 원하는대로 껏다켰다 할 수 있다.

PWM은 파형 신호를 만드므로, 모터를 원하는대로 제어할 수 있다.

ADC는 아날로그 신호를 디지털 신호로 바꾸므로, 스위치를 돌려서 숫자값을 만들어 낼 수 있다.

그 외에도 SPI, I2C 등의 통신을 사용하면.. 마이크, 스피커, 모니터 화면 출력!! 을 할수 있다..!!!

 

- Atmega 시작하기

처음 마이크로컨트롤러를 공부하는 입장이라면, Atmega가 공부하기 제일 좋다. 이유는, 마이크로컨트롤러의 원리에 젱리 충실한 칩이기 때문에 옛날 대학교에서도 많이 이 칩을 가르쳤었다.

시중에는 다양한 마이크로컨트롤러가 있다. 난이도 순으로 보자면,

아두이노 -> Atmega -> STM32 -> 라떼판다(고성능용. 오버워치 등의 게임도 돌릴 수 있다), 젯슨나노(딥러닝용)

인데, 각각의 마이크로컨트롤러를 간단히 살펴보면

 

아두이노 : 초보자를 위해 제작되었으나, 기능을 갖다쓰는 방식이여서 동작 원리를 모르게 된다.

Atmega : 8bit 마이크로컨트롤러이다. 동작 원리에 충실한 편이여서, 공부할 때 아주 좋다.

STM32 : 32bit 마이크로컨트롤러이다. 회사에서 제품 개발할 때 이 칩을 쓴다. 난이도가 조금 있어서, Atmega를 공부한 후에 접하는데 좋다.

라떼판다, 젯슨나노 : 라뗴판다는 고성능CPU가 있고, 젯슨나노는 GPU가 많다. 고성능이 필요할 때 이 마이크로컨트롤러를 사용한다. 가격은 대략 60만원(!!!) 이다.

 

- Atmega 고르기

Atmega32, Atmega128, Atmega256?? 다양한 칩이 있다.

심지어 Atmega128, Atmega128A, Atmega128L 등의 영어가 붙어있는 것도 있다..

 

간단히 예기하면, 32, 128, 256은 마이크로컨트롤러를 동작시키는 프로그램을 담을 수 있는 플래시 메모리이다. 즉, 숫자가 높을수록 더 용량이 크고 복잡한 프로그램을 칩에 저장하고 구동시킬 수 있다는 의미이다.

128, 128A, 128L 등의 알파벳은 성능에 큰 영향을 끼치진 않는다. 그래도 간단히 설명하면, 'A'는 업그레이드 버전을 의미하고, 'L'은 전력 소모를 안정적으로 할 수 있는 버전이긴 한데.. 전문가가 아니면 큰 의미는 없다.

 

일반적으로는 Atmega32, 64, 128 이 3가지를 많이 사용한다. 물론, 더 작은 프로그램을 만들고 더 적은 전력소모를 해야한다면 Atmega8을 선택할 수 있고, 큰 프로그램을 만들어야 한다면 Atmega2560 등을 선택하면 된다.

어떤걸 선택해도 상관없다. 대부분의 기능은 어떤 버전이든 동일하게 들어가있기 때문이다.

 

- Atmega 공부 순서

웹, 앱, 게임 등의 프로그램을 만드는걸 공부할 때는  보통 다음의 순서를 따른다.

1. 프로그래밍 언어를 배운다. 변수 선언, 조건문, 반복문, 함수... 등을 익힌다.

2. 그 다음, 라이브러리 사용법을 익힌다. 웹개발이라면 HTML, CSS, JS 등을 배우고, 앱개발이라면 Android, 인공지능이라면 Tensorflow... 등을 사용해서 원하는것을 만들어본다.

3. 이제 깊이있게 공부할 차례이다. 프로그램의 구조를 고려해보고, 라이브러리를 만들어보고, 대규모 트래픽 처리를 위해 최적화를 하는등... 전문적인 지식을 공부하는 것이다.

 

그러면... 마이크로컨트롤러는 어떻게 공부해야할까??

1. C언어를 배워야 한다. 모든 마이크로프로세서는 C언어로 동작한다.

2. 마이크로컨트롤러에 있는 핀의 사용법을 배운다. GPIO, PWM, ADC/DAC, 그 다음은 UART/SPI/I2C 통신을 배우는게 일반적이다.

3. 각각의 핀의 특징을 알았으면, 이제 프로젝트를 해본다.

GPIO는 LED 제어, PWM는 모터 제어, I2C 통신은 스피커/마이크 연결.. 등 각각의 통신 방식은 특정 모듈을 제어할 수 있는 기능을 가지고 있다. 이게 핵심이다! 부품들을 하나씩 추가하면서 제어를 해보는 것이다.

그리고, 새로운 모듈을 사용하기 위해서 모듈의 데이터시트, 마이크로컨트롤러의 데이터시트를 참고해야할 필요가 있다. 어느 핀에 연결해야 모듈을 사용할 수 있는지 알아야 하기 때문이다.

4. 이제 깊이 있게 공부할 차례이다. 마이크로컨트롤러에는 다양한 기능이 있다. Watch Dog Timer, EEPROM, Idle Mode, Sleep Mode 등등을 공부하면 더 효율적으로 마이크로컨트롤러를 사용할 수 있다. 마이크로컨트롤러는 PC보다 성능이 훨씬 떨어지기 때문에, 효율적으로 마이크로컨트롤러를 사용할 필요가 있다. 즉, 최적화이다.

또한, 마이크로컨트롤러는 결국에는 특정 모듈을 사용하기 위해 있는거기 떄문에.. 복잡한 프로젝트를 위해 회로 설계도 공부해야 한다.

 

- Atmega 핀

 

마이크로컨트롤러에서 가장 중요한 그림이다. 이 그림은 Atmega128 Pinmap이다.

복잡해 보이지만, 보는 방법만 보면 간단하다.

 

LED를 제어한다고 가정한다면, 필요한 것은 2개이다.

1. 1/0 신호를 만들어야 하므로, GPIO 핀을 찾아야 한다. 여기서는 PA0~PA7이 그 기능을 한다.

2. 전기 신호를 받아줄 접지, 즉 GND가 필요하다. 여기서는 22번이다.

 

그래서 LED를 제어하려면,

1. PA0에서 1 신호를 만든다.

2. 전선으로 LED에 연결한다.

3. GND로 전기 신호를 받아준다.

이렇게 하면 하드웨어 구성은 끝났다.

이런식으로, 구동시킬 모듈의 통신 방식을 알고, 어느 핀에서 그 통신 방식을 만들어내는지만 알면 된다.

 

- Atmega 펌웨어

마이크로컨트롤러에 들어가는 프로그램을 '펌웨어'라고 한다.

LED 하드웨어 구성을 했으면, 이제 어떻게 제어할지 프로그램을 짜면 된다.

그런데.. 파이썬 등의 프로그래밍은 컴퓨터에서 프로그램을 짜고, 컴퓨터에서 프로그램을 작동시켰다.

마이크로컨트롤러 프로그래밍은, 컴퓨터에서 프로그램을 짜고, 마이크로컨트롤러에서 프로그램을 작동시켜야 한다!

 

이걸 하기 위해서는 특수한 모듈이 필요하다. 그건 다음시간에 알아본다.

 

'Develop Knowledge > Atmega, AVR' 카테고리의 다른 글

6강. GPIO 실습 - 스위치로 LED 다루기  (0) 2022.12.17
5강. 핀 선택하기  (0) 2022.12.17
4강. GPIO 개요  (0) 2022.12.17
3강. 개발 환경 준비  (0) 2022.12.17
2강. 준비물  (0) 2022.12.17