첫 마이콤으로 AVR을 선택한 분들을 위한 AVR 소개

들어가는 말

 

AVR 마이콤을 생애 첫 마이콤으로 (자의든 아니면, 타의든)선택하신 분들을 위한, AVR 마이콤에 대한 예상 가능한 질문을 Q&A 형식으로 엮어 보았습니다. 8051에 대한 같은 형식으로 적은 글을 AVR에 맞추어 수정하였으며, 일부의 질문에 대한 답변은 8051과 동일하므로 중복 설명을 피해 그곳으로의 링크만 마련해 두었습니다.

추가할 내용이 있으면 보완해 나가고자 합니다.

목차

 

Q.01 : 마이콤이 무엇인가요? 마이크로프로세서와는 어떻게 다른가요?

Q.02 : AVR이 8 bit 마이콤에서 차지하는 비중은 얼마나 될까요?  특별히 AVR을 선호하는 이유가 있나요?

Q.03 : ATMega64 와 ATMega128의 차이점은 무엇인가요?

Q.04 : ATMega128의 128 KByte의 메모리에 얼마 만큼의 프로그램을 담을 수 있을까요?

Q.05 : ATMeag16/32의 1/2 KByte의 RAM은 충분한 분량인가요?

Q.06 : AVR 칩과 PC와의 통신이 가능한가요?

Q.07 : AVR칩으로 어떤 것들을 실험해 볼 수 있나요?

Q.08 : 데이터시트에 나오는 "fully static design"이란 무엇인가요?

Q.09 : 이용 가능한 컴파일러에는 어떤 것들이 있나요?

Q.10 : AVR을 생산하는 회사에는 어떤 회사가 있나요?

Q.11 : AVR 칩 내부에 담긴 프로그램을 다른 사람이 copy하지 못하게 하는 방법이 있나요?

Q.12 : ATTiny와 ATMega는 어떤 관계인지요?  

Q.13 : ATMEL 사의 AVR Stuio 프로그램에 대해 보다 자세한 설명 부탁합니다.

Q.14 : AVR칩을 프로그래밍하기 위해서는 롬라이터가 필요한가요?

Q.15 : ISP(In System Programming)이 무엇인가요?

Q.16 : ISP를 지원하는 AVR칩에는 어떤 것들이 있나요?

Q.17 : ATMega163과 ATMega16은 어떤 관계인가요?

Q.18 : AVR은 하나의 명령을 하나의 사이클에 처리할 수 있다고 하던데...

Q.19 : AVR에 흔히 사용되는 크리스탈은 몇 MHz인가요?

Q.20 : AVR 마이콤에서 UART는 왜 필요한가요?

Q.21 : AVR 마이콤을 익히는 가장 빠른 방법은 무엇인가요?

Q.22 : AVR 마이콤의 패키지에는 어떤 것들이 있으며 각각의 특징은?

Q.23 : AVR 마이콤으로 디자인하는 것과 FPGA로 디자인 하는 것의 차이는?

Q.24 : AVR 마이콤을 공부하는데 어느 정도의 배경 지식이 있어야하는지요?

Q.25 : AVR 마이콤 프로그래밍과 윈도우즈(PC) 프로그래밍은 어떻게 다른지요?

Q.26 : 어셈블리어와 C 언어 중 어느쪽을 택해야 하나요?

Q.27 : AVR의 ISP 가능한 횟수가 10,000번 인데, 충분한 횟수인지요?

Q.28 : 더 이상 ISP가 되지 않는 AVR 마이콤은 완전히 동작 불능의 상태인가요?

Q.29 : AVR 마이콤은 데이터 시트에 나와 있는 동작 전압 이하에서는 동작하지 않나요?

Q.30 : 크리스탈(X-tal)과 오실레이터(oscillator)는 서로 다른 것인가요?

Q.31 : AVR에서 C 언어를 사용할 수 있나요?

Q.32 : AVR에도 open source C 컴파일러가 있나요?

Q.33 : AVR 마이콤에서 타이머(timer)란 무엇인가요?

Q.34 : AVR 마이콤에서 인터럽트(interrupt)란 무엇인가요?

Q.35 : PC가 해마다 성능도 좋아지고, 크기도 작아지는데, 앞으로는 마이콤이 자취를 감추게 되지 않을까요? 그렇게 된다면 굳이 AVR을 익혀야 할 필요가 있을까요?

Q.36 : ATmega128의 퓨즈 바이트는 공장 출하 시 어떻게 셋팅되어 있나요?

 

 (to be continued)

Q.01 마이콤이 무엇인가요? 마이크로프로세서와는 어떻게 다른가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.02 AVR이 8 bit 마이콤에서 차지하는 비중은 얼마나 될까요?  특별히 AVR을 선호하는 이유가 있나요?

  

8 비트 마이콤에 대한 마켓 셰어(market share)에 관한 기사를 웹 상에서 본 기억이 있으나, 오래전 일이라 정확한 수치를 기억할 수 가 없어서 이곳에서 수치를 언급해 드리지는 못합니다만, 글쓴이 개인적인 생각으로는 AVR 마이콤은 점점 사용자층을 넓혀가고 있는 추세입니다. 그 이면에는 8051보다 더 다양한 주변기기와, 무었보다도, AVRGCC라는 무료 C 컴파일러를 사용할 수 있는 장점이 있다고 하겠습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.03 ATMega64 와 ATMega128의 차이점은 무엇인가요?

  

내부 플레쉬 메모리의 차이입니다. 각각의 디바이스는 그 이름에도 나와 있듯이 64KByte, 128KByte의 플레쉬 메모리를 가지고 있습니다. RAM의 크기는 4KByte로 두 디바이스 모두 같습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.04 ATMega128의 128 KByte의 메모리에 얼마 만큼의 프로그램을 담을 수 있을까요?

  

컴파일 후 생성된 실행 파일의 크기가 128KB 정도가 된다고 하면, 글쓴이는 상당히 큰 프로그램이라고 생각합니다. 사실 개발자마다 배경(background)이 다 틀리기 때문에 프로그램의 분량에 대하여 크거나 작다고 느끼는 정도도 다 다를 것입니다만, 글쓴이에게는 128 KByte를 다 채우는 프로그램은 상당한 규모의 프로그램으로 생각됩니다. 프로그램의 소스코드 분량과 컴파일된 후 생성되는 실행 파일의 크기는 실제로 프로그램을 짜 보면서, 프로그램이 커짐에 따라 생성되는 실행 파일의 크기를 관찰해 보면, 쉽게 감을 잡을 수 있습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.05 ATMeag16/32의 1/2 KByte의 RAM은 충분한 분량인가요?

  

 

8051은 고작 128 Byte RAM만을 가지고 있음에 비해, AVR의 경우는 RAM의 크기를 상당히 늘렸다고도 생각할 수 있습니다. 그럼에도 불구하고, 어떤 어플리케이션의 영역에서는 SRAM이 부족한 경우가 생기기도 합니다. 코드 메모리는 부족하지 않는데, RAM이 부족한 경우가 생길 수 있다는 것입니다. 이 경우 더 큰 RAM을 가지는 상위 디바이스로 옮겨가야 합니다. ATmega64/128은 4Kbyte의 RAM을 가지고 있습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.06 AVR 칩과 PC와의 통신이 가능한가요?

  

AVR에는 UART(Universal Asynchronous Receiver Transmitter)가 내장되어 있습니다. 고로 PC의 시리얼 포트를 통하여 PC와 AVR 사이에 데이터를 주고 받을 수 있습니다. 물론 PC 상에 하이퍼터미널이나 새롬 데이터맨 같은 프로그램이 있어야 합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d )

Q.07 AVR칩으로 어떤 것들을 실험해 볼 수 있나요?

 

우선은 8051로 실험해 볼 수 있는 것들을 해 볼 수 있으며, 그밖에 8051에는 없는 SPI, I2C, ADC, Compartor, Bootloader 등등을 테스트해볼 수 있습니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d )

Q.08 데이터시트에 나오는 "fully static design"이란 무엇인가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.09 이용 가능한 컴파일러에는 어떤 것들이 있나요?

  

우선은 Open Source 컴파일러인 AVRGCC(WinAvr)이 있으며, IAR을 포함한 여러 회사에서 상용 컴파일러를 판매하고 있습니다. 코드 사이즈에 제한이 있는 무료 평가판은 각 회사의 홈페이지에서 다운 받으실 수 있습니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.10 AVR을 생산하는 회사에는 어떤 회사가 있나요?

  

8051를 생산하는 회사가 여러개 있는 것과는 달리, AVR은 (글쓴이가 아는 한도내에서는) ATMEL사에서만 생산합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.11 AVR 칩 내부에 담긴 프로그램을 다른 사람이 copy하지 못하게 하는 방법이 있나요?

  

8051과 마찬가지로, 이러한 메카니즘을 AVR에도 만들어 두었습니다. AVR이 8051보다 더 정교한 Copy 방지용 수단을 제공하고 있습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.12 ATTiny와 ATMega는 어떤 관계인지요?  

  

ATTiny 시리즈는 ATMega 시리즈 보다 내부 플래쉬 메모리의 크기와 핀 수가 더 적습니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.13 ATMEL 사의 AVR Stuio 프로그램에 대해 보다 자세한 설명 부탁합니다.

  

 어셈블러와 에디터 그리고 디버거를 포함한 통합 개발 환경(IDE)입니다. 버전 4.12 부터는 AVRGCC를 플러그인하여 사용할 수 있는 기능이 추가되었습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.14 AVR칩을 프로그래밍하기 위해서는 롬라이터가 필요한가요?

  

AVR은 ISP(In System Programming)을 지원하므로 개발과정에서는 롬라이터가 필요하지 않습니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.15 ISP(In System Programming)이 무엇인가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.16 ISP를 지원하는 AVR칩에는 어떤 것들이 있나요?

  

8051의 경우에는 최근에 발표된 디바이스 만이 ISP를 지원하나, AVR의 경우는 모든 디바이스가 ISP를 지원합니다.

     

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.17 ATMega163과 ATMega16은 어떤 관계인가요?

  

내용을 준비중입니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.18 AVR은 하나의 명령을 하나의 사이클에 처리할 수 있다고 하던데...

  

대부분의 명령어를 한 사이클에 처리하나, 모든 명령어를 한 사이클에 처리를 하는 것은 아닙니다. 각각의 명령어를 실행하는데 몇 사이클이 필요한지는 데이터 시트의 끝 부분에 나와 있습니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.19 AVR에 흔히 사용되는 크리스탈은 몇 MHz인가요?

  

8051에서는 11.0592MHz를 많이 사용하나, AVR의 경우는 다양한 주파수의 크리스탈을 사용합니다. 성능이 우선시 될 경우에는 16MHz를 사용합니다. 이러한 크리스탈의 주파수는 UART의 사용과 관련이 있습니다. 만약 PC와의 통신을 위해 UART를 사용해야 한다면, 사용가능한 크리스탈의 주파수에 제약이 따릅니다. 데이터 시트의 USART 부분을 참조하세요.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d ) 

Q.20 AVR 마이콤에서 UART는 왜 필요한가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.21 AVR 마이콤을 익히는 가장 빠른 방법은 무엇인가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d) 

Q.22 AVR 마이콤의 패키지에는 어떤 것들이 있으며 각각의 특징은?

  

대부분의 AVR 마이콤이 SMD 타입(PCB에 직접 납땜을하는 타입)으로 제공됩니다. PLCC 파입은 제공되지 않으며, DIP 타입은 일부 모델에서만 제공됩니다. 각각의 특징은 8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.23 AVR 마이콤으로 디자인하는 것과 FPGA로 디자인 하는 것의 차이는?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.24 AVR 마이콤을 공부하는데 어느 정도의 배경 지식이 있어야하는지요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.25 AVR 마이콤 프로그래밍과 윈도우즈(PC) 프로그래밍은 어떻게 다른지요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.26 어셈블리어와 C 언어 중 어느쪽을 택해야 하나요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.27 AVR의 ISP 가능한 횟수가 10,000번 인데, 충분한 횟수인지요?

  

충분하다고 말씀드릴 수 있습니다. 10,000번 까지 마이콤을 프로그래밍하는 경우는 상당히 드물 것이라고 생각합니다. 즉 개발자가 마이콤이 더 이상 정상적으로 프로그래밍이 되지 않는 현상을 경함해 보는 것은 상당히 드믈 것으로 생각됩니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.28 더 이상 ISP가 되지 않는 AVR 마이콤은 완전히 동작 불능의 상태인가요?

  

전원을 투입하거나 리셋버튼을 누르면, 내부 플래쉬 메모리의 내용으로 동작할 것으로 생각되나, 외부에 플레쉬 메모리를 붙일 수 없는 AVR의 경우 더 이상 ISP가 되지 않는 AVR 마이콤은 개발용으로 사용할 수 없겠지요.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.29 AVR 마이콤은 데이터 시트에 나와 있는 동작 전압 이하에서는 동작하지 않나요?

  

솔직히 말씀드려 글쓴이도 이것을 테스트해보지는 않았지면, 8051의 경우와 비교해 생각해 보면 데이터 시트에 나와 있는 동작 전압보다도 낮은 전압에서도 동작하리라 생각됩니다.

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.30 크리스탈(X-tal)과 오실레이터(oscillator)는 서로 다른 것인가요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.31 AVR에서 C 언어를 사용할 수 있나요?

  

이미 앞에서도 설명했듯, C언어를 사용할 수 있습니다. AVR은 C 언어 사용을 염두에 두고 디자인되었다고 합니다

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.32 AVR에도 open source C 컴파일러가 있나요?

  

앞서도 설명드렸듯, 너무나도 잘알려진 AVRGCC(WinAVR)이 그 것입니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.33 AVR 마이콤에서 타이머(timer)란 무엇인가요?

  

8051 뿐 아니라 거의 모든 마이콤이 타이머를 가지고 있습니다. 타이머에 대한 설명은 기술자료의 다른 부분에서 해 두었기 때문에 여기서는 중복 설명을 생략합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.34 AVR 마이콤에서 인터럽트(interrupt)란 무엇인가요?

  

인터럽트는 마이콤을 구성하는 중요한 부분이라고 할 수 있습니다. 인터럽트에 대한 설명은 기술 자료의 다른 부분에 해 두었기 때문에 여기서는 중복 설명을 생략합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.35 PC가 해마다 성능도 좋아지고, 크기도 작아지는데, 앞으로는 마이콤이 자취를 감추게 되지 않을까요? 그렇게 된다면 굳이 AVR을 익혀야 할 필요가 있을까요?

  

8051을 처음 접하시는 분을 위하여 코너에서 이미 설명을 하였으므로 여기서는 중복 설명을 피합니다.

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

Q.36 ATmega128의 퓨즈 바이트는 공장 출하 시 어떻게 셋팅되어 있나요?

  

ATmega128의 퓨즈 바이트의 디폴트 셋팅(공장 출하 시 셋팅)은 다음과 같은 항목이 셋팅(포니프로그에서 체크표시)되어 있습니다.

                         M103C, JTAGEN, BOOTSZ1, BOOTSZ0, SUT0, CKSEL3, CKSEL2, CKSEL1

참고로 말씀드리면, 당사 ATmega128 개발보드는 퓨즈 바이트의 다음 항목들이 셋팅되어 있습니다.

                        OCDEN, JTAGEN, CKOPT, BOOTSZ1, BOOTSZ0, SUT1, SUT0

기술자료의 다른 곳에서도 언급하였듯이 포니프로그에서 M103C 퓨즈 비트를 클리어(언체크)하는 것을 잊어 버리면, ATmega128 칩이 의도한데로 동작하지 않는 경우가 있습니다. 각각의 퓨즈 비트의 의미는 데이터시트를 참조하세요.

(처음 글 올린 날 : 04/12/2007, 마지막 수정 : 04/12/2007, r/t/e/l/d)

홈페이지 링크 모음

  

홈페이지로 가기

기술자료 페이지로 가기

 

(처음 글 올린 날 : 07/03/2006, 마지막 수정 : 07/03/2006, r/t/e/l/d)

 (마지막으로 수정한 날자 : 07/03/2006)

 

blue22_nextup.gif