Q&A 형식으로 엮은 8051 사용자를 위한 AVR 소개

들어가는 말

 

AVR 에 대한 내용을 질문과 답변 형식으로 꾸며 보았습니다.  내용은 8051을 이미 접해 보신 분들이 AVR을 처음으로 사용해 보고자 할 경우에 대한 내용을 주로 실었으며, 상세한 기술적인 설명은 여기서는 생략하였습니다. 여기서 주된 비교 대상 마이콤은 ATmega128 입니다. 내용은 점점 보완해 나가고자 합니다.

 

목차

 

Q.01 [내부구조] 퓨즈 비트(바이트)는 무엇인가요?     

Q.02 [비교] AVR과 8051은 얼마나 다른지요?

Q.03 [비교] 8051은 사용해 봤는데, AVR은 안 사용해 봤어요. AVR 마이콤의 어떤 점이 매력적인지요?

Q.04 [디버그] 조립한 AVR 마이콤 보드가 동작하지 않는 것 같아서 크리스탈을 오실로스코프로 관찰해도 발진하지 않아요.다른 크리스탈을 붙여도 마찬가진데, 혹시 마이콤이 죽은 건 아닐까요?

Q.05 [비교] 개발 툴에는 어떤 것들이 있는지요?

Q.06 [비교] 리셋의 극성이 8051과 같은가요?

Q.07 [비교] 동작 전압은 어떻게 되는지요?

Q.08 [비교] 동작 주파수는 어떻게 되는지요?

Q.09 [내부구조] JTAG 포트로 무엇을 할 수 있는지요?

Q.10 [비교] ISP는 어떻게 하는지요?

Q.11 [비교] I/O 특성은 8051과 어떻게 다른지요?

Q.12 [비교] 8051에는 없는 주변기기들이 어떤 것이 있나요?

Q.13 [비교] 8051은 왜 명령어 하나를 처리하는데 12 사이클이 필요한데, AVR의 경우는요?

Q.14 [비교] Power saving mode가 있나요?

Q.15 [비교] 내장 플레쉬 메모리와 RAM의 크기는 얼마나 되나요?

Q.16 [내부구조] 8 채널 A/D 컨버터라면, 마이콤 안에 A/D 컨버터가 8개 있는 것이가요?

Q.17 [내부구조] UART는 많이 들어 봤는데, USART는 뭔가요? 완전히 서로 다른 건가요?

Q.18 [내부구조] 가장 초보적인 질문 같은데, AVR이 8 비트 마이콤이 맞나요?

Q.19 [내부구조] ATmega128은 내장 플레쉬 메모리가 128KByte인데, 128KB란 수치는 어떻게 나온 것인가요? 64KB가 더 자연스럽지 않은가요?

Q.20 [비교] 8051에 비해 읽어야할 데이터시트의 양의 차이가 많이 나나요?

Q.21 [비교] 가장 메모리 용량이 큰 AVR 마이콤은 어떤 것인지요? (new)

 (to be continued)

Q.01 [내부구조] 퓨즈 비트는 무엇인가요?

  

퓨트 비트( 또는 퓨즈 바이트)란 말을 들으면, 어떤 것이 떠오르는지요? 글쓴이는 우선 퓨즈(fuse)라는 단어에서 이것은 한번 끊어지면, 다시는 연결할 수 없는(왜냐면 퓨즈비트가 마이콤 칩 안에 있으니까요) 어떤 것이라 라고 생각하였습니다. 즉 OTP(One Time Programmable)와 같이 한번 프로그래밍해 두면, 더 이상은 프로그래밍 할 수 없는 비트(또는 바이트)라고 생각했습니다만, AVR의 퓨즈 비트는 이러한 1번 밖에 프로그래밍할 수 없는 성격을 가진 것이 아닙니다. 퓨즈바이트는 AVR 마이콤에 있어서, 좀 더 글로벌(global)한 특성을 셋팅하는데 사용되는 바이트입니다. 물로 여러번 셋팅할 수 있고요.

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

Q.02 [비교] AVR과 8051은 얼마나 다른지요?

  

AVR은 8051보다, 주변기기가 다양합니다. 따라서 8051에 익숙한 분이라도, 8051에 없는 주변기기(SPI,TWI,ADC 등등)은 사용해야 하는 경우가 생기면, 시간을 들여서 익히셔야 합니다. 8051에 충분히 익숙한 분이라도, AVR을 접하면, "복잡하게도 만들었다"라고 느끼시리라고 생각됩니다. 데이터 시트의 분량 역시 차이가 많습니다.

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

Q.03 [비교] 8051은 사용해 봤는데, AVR은 안 사용해 봤어요. AVR 마이콤의 어떤 점이 매력적인지요?

  

마이콤을 사용하는 응용 분야가 사용자마다 다 다를 것이므로, 개개인이 느끼는 매력은 다 다를 것입니다. 글쓴이가 생각하는 가장 큰 매력은 "공짜 툴"이라고 생각합니다. 무료로 다운 받을 수 있는 8051 개발 툴 평가판이 2 KByte 남짓한 코드 생성만을 지원하느데 비해, AVR "공짜 툴"은 마이콤의 메모리를 다 채울 수 있는 코드를 생성할 수 있습니다. 그 밖에도, 다양한 주변기기, 8051에 비해 빠른 처리 속도 등이 매력적입니다.

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

Q.04 [디버그] 조립한 AVR 마이콤 보드가 동작하지 않는 것 같아서 크리스탈을 오실로스코프로 관찰해도 발진하지 않아요.다른 크리스탈을 붙여도 마찬가진데, 혹시 마이콤이 죽은 건 아닐까요?

  

 

AVR 마이콤이 죽었다기 보다는 퓨즈 비트를 잘못 세팅했을 수 있습니다. 퓨즈 비트를 크리스탈을 사용하도록끔 세팅해야, 오실로스코프로 크리스탈의 단자의 파형을 관찰했을 때, 정상적인 파형을 볼 수 있습니다. 이 부분이 8051과는 달라서, 흔히 마이콤이 죽었다고 생각하기가 쉽습니다. 글쓴이의 생각으로는 AVR을 처음 사용하는 모든 사용자가 한 번씩은 겪게되는 문제가 아닐까 생각됩니다.

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

Q.05 [비교] 개발 툴에는 어떤 것들이 있는지요?

  

우선 칩 메이커에서 제공하는 AVR Studio라는 툴이 있습니다. 그리고 c 컴파일러로는 avr-gcc, 또는 winavr을 사용하실 수 있습니다. 그리고 AVREdit을 사용하시면, make 파일을 일일이 작성함 없이 편하게 winavr을 사용하실 수 있습니다.

그밖에 상용 툴로는 IAR 컴파일러 등이 있습니다.

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

Q.06 [비교] 리셋의 극성이 8051과 같은가요?

 

8051은 리셋이 액티브 하이(active high)인데 비해, AVR은 액티브 로우(active low)입니다. 즉 AVR에 리셋을 걸기 위해서는 high로 풀업되어 있는 리셋단을 low 로 떨어뜨렸다가 다시 high 로 만들어 주어야 합니다.

 

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

Q.07 [비교] 동작 전압은 어떻게 되는지요?

  

ATMEGA128의 경우에는 2가지 타입이 있습니다. ATMEGA128의 경우는 4.5~5.5V 이고, ATMEGA128L 의 경우는 2.7~5.5V에서 동작합니다. 두 개의 마이콤은 칩 표면의 마킹으로 쉽게 구분할 수 있습니다.

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

Q.08 [비교] 동작 주파수는 어떻게 되는지요?

  

앞에서 설명한 것 처럼 ATMEGA128의 경우에는 2가지 타입이 있습니다. ATMEGA128의 경우는 0~16 MHz 이고, ATMEGA128L 의 경우는 0~8 MHz 에서 동작합니다. 두 개의 마이콤은 칩 표면의 마킹으로 쉽게 구분할 수 있습니다.

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

Q.09 [내부구조] JTAG 포트로 무엇을 할 수 있는지요?

  

8051에는 없으나, AVR에는 있는 것 중 하나가 JTAG 단자입니다. JTAG 은  처음에는 보드 상의 IC 들이 제대로 연결되었는지를 체크하기 위해서 만들어졌으나, 요즘은 다른 용도로도 많이 사용됩니다. AVR에서는 디버깅 용도로 사용되기도 하며, 내부 플래쉬 메모리를 프로그래밍하는 용도로도 사용됩니다.

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

Q.10 [비교] ISP는 어떻게 하는지요?

  

AT89S 시리즈와 마찬가지로, AVR도 ISP(In System Programming)을 위한 핀들을 따로 마련해 두었습니다. 이 핀들의 이름이 각 마이콤마다 조금씩 차이가 있어서 반드시 데이터 시트에서 확인한 다음 사용하시기를 바랍니다.

ISP, 즉 AVR의 플레쉬 메모리에 프로그램을 넣기 위해 널리 사용되는 툴에는 PonyProg가 있습니다.

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

Q.11 [비교] I/O 특성은 8051과 어떻게 다른지요?

  

8051의 경우에는 포트를 읽기 전 포트를 하이(high)상태로 만든 다음 읽어야 했습니다. 그러나 AVR에서는 이러한 불편함(또는 부자연스러움)이 없어졌습니다. 사용자는 포트의 각각의 비트를 입력 또는 출력으로 셋팅할 수 있으며, 포트를 읽기 전 포트를 high로 만드는 과정없이 바로 포트를 읽으면, 포트의 상태(즉, high 또는 low)를 읽어 올 수 있습니다.

8051에서 불편했던 것 중의 다른 한 가지가, 소스 전류(source current)가 싱크 전류(sink current)에 비해 미미했다는 점인데, AVR의 포트는 이러한 점이 사라졌습니다.

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

Q.12 [비교] 8051에는 없는 주변기기들이 어떤 것이 있나요?

  

 앞에서 부분 부분 언급한 것 같은데, ATMEGA128을 기준으로 말씀드리면, ADC, TWI(I2C), SPI, Comparator 등등이 있습니다.

 

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

Q.13 [비교] 8051은 왜 명령어 하나를 처리하는데 12 사이클이 필요한데, AVR의 경우는요?

  

AVR은 대부분의 명령어를 한 사이클에 처리합니다. 따라서 같은 클럭 주파수로 동작하는 8051과 처리 속도를 비교하면, AVR이 빠릅니다.

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

Q.14 [비교] Power saving mode가 있나요?

  

 8051에도 파워 세이빙 모드가 있습니다. 소비전력 절감은 배터리로 동작되는 장치에서는 상당히 중요한 위치를 차지합니다. AVR 역시 정교한 파워 세이빙 모드를 가지고 있습니다.

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

Q.15 [비교] 내장 플레쉬 메모리와 RAM의 크기는 얼마나 되나요?

  

여기서는 ATmega 시리즈를 기준으로 하여 설명하겠습니다. ATMega8, ATMega16,ATMega32, ATMega64,ATMega128은 각각 8, 16, 32, 64, 128 MByte의 플레쉬 메모리를 내장하고 있으며, 각각 1, 1, 2, 4, 4 KByte의 SRAM을 내장하고 있습니다.

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

Q.16 [내부구조] 8 채널 A/D 컨버터라면, 마이콤 안에 A/D 컨버터가 8개 있는 것이가요?

  

그렇지 않습니다. 데이타 시트를 보면, P0는 open-drain bi-directional I/O port이고, P1, P2, P3은 bi-directional I/O port라고 설명되어 있습니다. 즉 P0 를 GPIO(General purpose Input / Output)으로 사용할 때는 P0 에 풀업 저항을 붙여야 합니다. 만약 외부 메모리를 사용한다면, P0, P2를 사용하여 외부메모리(SRAM 또는 플레쉬메모리)에 연결하게 되는데, 이 경우에는 P0 에 내부 풀업 저항이 연결되어 별도의 풀업저항을 붙일 필요가 없습니다.

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

Q.17 [내부구조] UART는 많이 들어 봤는데, USART는 뭔가요? 완전히 서로 다른 건가요?

  

그렇지 않습니다. USART(Universal Synchronous Asynchorous Receiver Transmitter)는 UART의 기능을 완전히 다 포함하면서, Synchronous하게 동작시킬 수 있습니다. 다른 곳에서 설명을 해 두었으므로 여기서의 중복 설명은 생략합니다.

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

Q.18 [내부구조] 가장 초보적인 질문 같은데, AVR이 8 비트 마이콤이 맞나요?

  

그렇습니다. 데이터시트에 첫머리에 나와 있듯이 . AVR은 8 비트 마이콤입니다. 즉 한번에 처리할 수 있는 데이터의 양이 8 비트라는 의미입니다. 반면 최근(이 글을 쓴 시점은 2006년 6월)에는 32 비트 AVR도 출시되어 있습니다.

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

Q.19 [내부구조] ATmega128은 내장 플레쉬 메모리가 128KByte인데, 128KB란 수치는 어떻게 나온 것인가요? 64KB가 더 자연스럽지 않은가요?

  

이러한 질문을 하시는 것이 너무 자연스럽습니다. 내부 플레쉬 메모리가 128KB인 것은 어드레스 공간은 2의 16승 즉 64K인데 반해, 하나의 어드레스에 2 바이트씩을 저장하기에 128KB라는 수치가 나온 것입니다.

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

Q.20 [비교] 8051에 비해 읽어야할 데이터시트의 양의 차이가 많이 나나요?

  

8051에 비해 가장 큰 정량적(?)인 차이가 데이터 시트의 분량일 것입니다. ATmega128의 경우 389페이지 정도가 되는데, 이것 전체를 프린트하면, 어디 들고 가기도 불편할 정도의 분량이 됩니다. 그림보다는 말로 설명한 부분이 많아서, 처음 읽고 이해하기가 그리 녹록치 않을 것으로 생각됩니다.

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

Q.21 [비교] 가장 메모리 용량이 큰 AVR 마이콤은 어떤 것인지요?

  

최근(2007년 2월8일) ATmega 시리즈에 256KB의 플레쉬 메모리를 가진 디바이스가 새로 나온 것을 알 게 되었습니다. 256KB의 플레쉬 메모리의 디바이스는 2 종류가 있는데, 하나는 64핀 패키지이며, 다른 하나는 100핀 패키지입니다. 또한 플레쉬 메모리 64KB, 128KB 그리고 위에서 언급한 256KB 디바이스는 모두 기존의 64핀 패키지 뿐 아니라, 새로 나온 100핀 패키지를 구할 수 있습니다. 파트 넘버(디바이스 명)도, 이렇게 핀 수가 많은 디바이스가 출시됨에 따라, 일관성을 조금 상실했는데, 기존의 파트 넘버의 끝에 '0' 이 더 붙은 것이 100핀 패키지입니다. 예를 들어 ATmega64의 100핀 패키지 디바이스는 ATmega640 이고, 256KB의 100핀 패키지 버전은 ATmega2560 입니다. 반면, 256KB의 64핀 패키지 버전은 Tmega2561입니다. (ATmega64의 64핀 패키지 디바이스는 ATmega641이 아니고, ATmega64입니다. 일관성을 없어져, 조금은 혼동스럽죠?)

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

홈페이지 링크 모음

  

홈페이지로 가기

기술자료 페이지로 가기

 

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

 (마지막으로 수정한 날자 : 06/26/2006)

 

blue22_nextup.gif