이번에 새롭게 AVR 강좌를 오픈했습니다.

AVR이면 뭐 여러종류가 있겠지만 일단 가장 많이 쓰이고 제가 가장 많이 해봤던 ATmega128로 강좌를

진행해 보려 합니다. 일단 첫번째 강좌이니 우리 한번 128의 특징부터 좀 살펴보도록 해요.

feature.jpg  

일단 위의 그림(?)은 128의 데이터 시트의 첫페이지 입니다.

우리한번 제가 아는 범위안에서 각 특징들을 하나씩 분석해 BoA요~(아.. 옛날 개그는 잊혀지지 않는지..;;ㅋ)

 

1. High-performance, Low-power AVR® 8-bit Microcontroller

 앞쪽의 High-performance라는 것이야 뭐 ATmel 지들이 광고적인 성향으로 붙인게 아닌가 싶습니다.

 뭐 지들이 만들었으니 뛰어나다고 하는게 맞겠지요. ㅎ

 또한 Low-power라고 되어있는데 현재 ATmega128A로는 2.7V에서도 동작이 가능합니다.

 아래에 나오겠지만 현재 ATmega128A보다는 단순히 ATmega128과 ATmega128L로 구분했었지요.

 여기서 'L'이 Low power의 약자로 2.7 ~ 5.5V에서 동작할 수 있었습니다.

 반면에 'L'이 붙어 있지 않은 칩은 4.2V ~ 5.5V가 동작전압이었지요.

 하지만 이번에 새롭게 나온 'A'시리즈는 2.7~5.5V 동작으로 통합되었습니다.

 

 음.. 그다음 8bit Microcontroller 라는 부분이 있네요.

 일단 우리 마이크로컨트롤러라는 것이 무엇을 뜻하는 것인지 살펴보도록 하죠.

 인터넷을 찾아보면 보통 구분을 마이크로 프로세서와 마이크로 컨트롤러로 구분하고 있습니다.

 단순하고 간략하게 비교해 본다면 가장 큰차이는 칩 내부에 여러가지 기능이 있느냐 없느냐 입니다.

 더 쉽게 설명하자면 우리가 보통 쓰고 있는 PC에 있는 INTEL이나 AMD의 CPU가 바로 마이크로 프로세서로

 이 CPU에 Core가 있어서 이곳에서 데이터를 처리(Processing)하지요.

 그런데 PC에서 보면 단순히 CPU만 필요한 것이 아니라 메인보드도 있어야 하고, 옆에 DDR2/3와 같은 RAM도

 필요하고, 보조기억장치인 HDD도 필요합니다. 즉, 마이크로 프로세서는 데이터 처리가 주된 업무이고 그외의

 기능들은 주변에 추가적인 Device들이 해주어야 하지요.

 그에 비해 마이크로 컨트롤러는 내부에 모든 것이 One-chip에 담겨있습니다.

 아래로 가면서 계속 보겠지만 128과 같은 마이크로 컨트롤러 안에는 SRAM, EEPROM, FLASH와 같은 저장공

 간이 이미 들어가 있지요. 어? 아까 마이크로 프로세서는 옆에 DDR2/3와 같은 RAM이 따로 있어야 했는데 마이

 크로 컨트롤러는 내부에 이미 RAM이 있네요~

  또한 이뿐만이 아니라 마이크로 컨트롤러 내부에는 SPI, UART(RS232), I2C(TWI), ADC, Timer, Interrupt와 같이

 추가적인 기능들을 하나의 칩안에 모두 가지고 있습니다.(아~ 물론 모든 마이크로 컨트롤러가 그렇다는 것이 아

 니라 이러한 추가적인 기능들이 있다는 것이니 헷갈리지 마시길)

 결론적으로 간략하게 다시 설명하면 마이크로 프로세서는 단순히 처리기능을 하는 Chip이고 마이크로 컨트롤러

는 내부에 메모리와 추가적인 기능들을 가지고 있다고 보시면 되겠습니다.

 헥헥.. 이거 설명하기 힘들군요..-_-;

 

 이제 추가적으로 8bit 라는 놈이 남았군요.

 우리가 요즘 PC의 운영체제를 보면 32bit 운영체제, 64bit 운영체제.. 뭐 이런 말들을 보았을 껍니다.

 이게 무엇을 뜻하는 것인가 하면, 데이터를 처리함에 있어서 32bit씩 처리하느냐, 64bit씩 처리하느냐를 나타냅니다.

 바로 이 bit 값이 128에서 말하는 8bit와 같은 의미입니다.

 다시 말하자면 128은 데이터를 8bit 씩 처리한다는 의미입니다.

 8bit씩 처리한다.. 음.. 뭔가 감이 오지 않네요.

 그럼 우리 128의 구조적으로 보면서 이해해 보아요~

 pin_1.jpg

 위의 그림은 128의 Pinout을 나타내는 그림입니다.

 여기서 자세히 보면 하나의 포트가 8개로 구분되어있는 것을 알수 있어요.

 즉, PA0~7까지 8개, PB0~7까지 8개, PC0~7까지 8개...

 음.. 모든 포트가 8개씩 구분되어져 있군요.

 바로 이것이~~ 8bit를 나타내는 것입니다. 하나의 핀당 1bit라고 하면 하나의 전체포트, 예를 들어 PORTB라면

 PORTB의 0번에서 7번까지의 8bit의 신호 및 데이터는 한꺼번에 Read/Write 할 수 있다는 의미입니다.

 이는 바로 각 포트의 Register와 연관되게 되지요.

reg.jpg

즉, 위의 그림과 같이 PORTB의 레지스터는 8bit로 구성되어있고 이 8bit 레지스터는 한번에 처리된다는 의미

입니다.

따라서 내부의 데이터 BUS도 8bit로 구성되어있지요.

 

그래서~~~~~~~~ ATmega128은 8bit Microcontroller 라고 하는 것입니다.

음.. 그렇다면 ARM과 같이 32bit용 마이컴은 32bit씩 처리하나요?

라고 물어보신다면.. 정답!!!!!!!!!! 이라고 외칠께요. 또한 ATmel에서 나오고 ARM-based이고 요즘 유명한

AT91SAM7 시리즈의 핀 구성을 보시면 하나의 포트가 역시 32개인 것을 알 수 있을 것입니다.

 

2. Advanced RISC Architecture

음.. 드디어 나오고 말았군요. RISC..

Reduced Instruction System Computer(RISC)로 말 그대로 명령어를 줄였다는 의미입니다.

반대적으로 CISC(Complex Instruction System Computer)가 있지요.

간략하게 예로 설명하겠습니다.

명령어에서 덧셈하는 명령어 + 와 곱셈하는 명령어 * 가 있다고 생각해 보세요.

그럼 시스템에서 덧셈하는 명령을 처리하는 소스 및 회로와 곱셈하는 명령을 처리하는 소스와 회로가 따로 있겠지요.

그런데 사실 곱셈도 덧셈을 해당 갯수만큼 더한것이 곱셈이잖아요.

즉, 사실 덧셈기 만으로도 곱셈을 할 수 있다 이겁니다.

이런 이유로 곱셈명령어에 대한 소스와 회로를 삭제한다면 그만큼 메모리나 회로적으로 경제적으로 될 수 있지요.

연산도 복잡해지지 않구요.

그렇기 때문에 명령어가 많은 CISC 보다는 RISC가 더 경제적이라는 의미입니다.

물론 CISC가 가지는 장점도 있지요(사실 PC의 CPU등이 대부분 CISC 입니다.)

더군다나 마이크로 컨트롤러와 같이 칩 내부에 많은 기능과 메모리를 포함하고도 칩을 작게 만들어야 하는 것에서는

RISC 가 훨씬 경제적이라 할 수 있겠지요.

사실 요즘은 CISC와 RISC의 장점을 살린 복합적인 시스템구조가 나와있는 실정입니다.

 

– 133 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers + Peripheral Control Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier

 

일단 위와 같이 나열되어있네요.

하나씩 살펴보면..

 

1. 133개의 명령어가 있고 대부분의 명령어(모두가 아님)는 1클럭에 처리가 됨.

2. 32개의 8bit 범용레지스터에 개별적인 제어용 레지스터가 있음.

    여기서 범용레지스터는 연산이나 임시 기억적인 용도로 사용되구요~

    제어용 레지스터라 함은 예를 들어 각 포트마다 있는 DDRx, PORTx, PINx와 같이 입출력결정, 출력레벨설정, 입력

    레벨저장용 등의 레지스터가 각각 있다... 뭐 이런식입니다. 이에 관해서는 나중에 더 살펴보구요~

3. 정적동작이라는 말은 특별히 뭐라 하기가 그렇군요. (사실 저도 무슨 의미인지;;;)

4. 16MIPS(Million Instruction Per Second)에 16Mhz가 걸린다는 것은 위의 1번에서 말했던 것처럼 1클럭에 1개의 명령

   어를 처리한다는 의미라고 생각하시면 되겠습니다.

5. 2클럭에 곱셈 명령어를 처리할 수 있는 곱셈기가 내장되어있다는 의미입니다.

 

여기서 중요하게 볼 것은 대부분의 명령어가 1클럭에 1명령어를 처리할 수 있다는 것입니다. 보통 예전의 마이컴인

8051과 같은 시리즈는 1명령어를 처리하는데 1클럭 이상의 시간이 소요되으니 128은 더욱 향상된 구조를 가지고 있

다고 생각하시면 되겠습니다. 예외적으로 1클럭이 넘는 명령어는 보통 Branch명령인데, 이는 잘 나가다가 갑자기 다

른곳으로 점프(?)하는 명령어 입니다. 나중에 설명하겠지만 파이프라인구조에서 갑자기 Branch명령이 들어가게 되면

흐름이 끊기게 되므로 그때는 1클럭에 명령어를 처리할 수 없지요. 왜냐하면 파이프라인 구조를 정리할 시간이 소요

되기 때문이에요. 뭔말인지 모르시겠다는 분들은 그냥 그런가보다 하고 넘어가시면 됩니다.

 

3. High Endurance Non-volatile Memory segments

– 128K Bytes of In-System Self-programmable Flash program memory

   : 128K 용량의 프로그램이 가능한 플래쉬 메모리가 내장되어 있다는 군요.

     mega 시리즈에서 보통 128이라는 숫자가 이 플래쉬 메모리의 용량을 나타냅니다요~
– 4K Bytes EEPROM

    : 4K 용량의 EEPROM(Electronic Erase Programmable Read Only Memory)로 전기적으로 지울 수 있는 메모리

      입니다. 예전에는 자외선으로 내부의 내용을 지우는 칩도 있었지요(칩중간에 구멍이 있고 그 중간에 반짝거리

      는 무엇인가가 있던 칩이 바로 이런것임) 이런 것에서 더 발달하여 EEPROM이 생겼는데 플래쉬 메모리가

      나온후로는 큰 의미가 없어졌습니다. 다만 플래쉬보다 가격이 저렴한 것으로 알고 있음.

      EEPROM은 128에서 중요한 데이터나 정적인 데이터를 저장해두는 곳입니다.

      메모리처럼 쓰기 힘든것이 Read/Write 동작에 엄청난 시간(클럭)이 소모되기 때문이에요.

      하지만 ROM이기 때문에 전원이 차단되어도 데이터가 날라가지 않지요.
– 4K Bytes Internal SRAM

   : 4K 용량의 SRAM(Static RAM)이 존재한다고 하네요. 이 SRAM에 우리가 소스 코드에서 사용하는 변수의

     값들이 저장됩니다.
– Write/Erase cycles: 10,000 Flash/100,000 EEPROM

   : 플래쉬와 EEPROM은 위의 숫자만큼 쓰기/지우기의 횟수제한이 있다는 의미입니다.

     즉, 그래서 EEPROM을 SRAM처럼 변수값 저장에 사용할 수 없지요. 또한 플래쉬도 계속 같은 곳을 쓰고

     지우고 하면 그 부분이 Bad Sector로 변하기 때문에 횟수제한이 있는 것입니다.

     플래쉬에 대해서는 아래 플래쉬메모리에 대해 정리한 것을 참고하세용~
– Data retention: 20 years at 85°C/100 years at 25°C(1)

   : 데이터 보존이 20년에서 100년(온도에 따라 달라짐)이라는 군요. ㅎㅎ
– Optional Boot Code Section with Independent Lock Bits
    In-System Programming by On-chip Boot Program
    True Read-While-Write Operation

  : 사실 128에도 부트로더(Bootloader)를 올릴 수 있지만 일반 사용자들은 잘 사용하지 않지요.

    ARM쪽만 해도 부트로더를 올리지 않으면 동작을 하지 않는데.. 참 그래서 쓰기 편한 칩이에요.

    사실 우리가 사용하는 메모리 영역은 Application 영역인데 이는 메모리 부분을 보면 되므로 일단 패스~
– Up to 64K Bytes Optional External Memory Space

   : 메모리(SRAM or EEPROM)의 용량이 부족하다면 외부에 64K용량의 추가적인 메모리를 연결할 수 있다는

     의미입니다. 64K까지 지원한다는 의미는 64K까지 메모리 주소값이 독립적으로 지정되어있다는 의미입니다.

    즉, 우리가 SRAM에 데이터를 Read/Write할때 먼저 메모리 번지(주소)값을 알아야 하잖아요~

    마치 너희집이 어디냐? 라고 물을 때 우리집은 XX시, XX구, XX동 몇 번지에요~ 라고 말하는 것처럼

    정확한 위치는 주소값을 통해 알 수 있지요. 그런데 128에서는 외부 메모리 제어를 위해 외부메모리 제어 주소

   값을 따로 빼두었다는 의미입니다요
– Programming Lock for Software Security

   : Lock Bit라는 것이 있는데요. 우리가 만약 128로 제품생산을 해두고 사용자가 마음대로 내부의 프로그램을

    변경하면 곤란하잖아요. 그래서 Lock bit를 통해 내부의 프로그램을 보호할 수 있어요. 즉, 수정을 못하게 막

    을 수 있다는 것이죠~
– SPI Interface for In-System Programming

  : SPI(Serial Peripheral Interface) 통신을 통해서 플래쉬 영역에 프로그램한 소스코드를 넣을 수 있다는 의미에요~

    즉, 우리가 128을 사용하기 위해 칩 내부에 프로그램한 코드를 넣어야 하는데 그 때 코드를 전송하는 방식이

    SPI 방식이라는 것이죠. 보통 우리가 ISP 케이블로 한다고 하는데 여기서 ISP가 (In-System Programming)을 말하

    는 것이죠. SPI 방식은 MOSI, MISO, SCK의 3개의 핀으로 데이터를 주고 받는 방식인데 일단 그렇게만 알아

    둡시다요.

    p.s : MOSI(Master Out Slave Input) , MISO(Master Input Slave Output)

  

 3. JTAG (IEEE std. 1149.1 Compliant) Interface

   : 아마 JTAG란 말을 들어본 사람도 있고, 뭔소리야 하는 사람도 있을 것 같아요.

     JTAG는 쉽게 말하면 Debug 를 할 수 있는 장비입니다. 우리가 C언어를 배울때 마이크로 소프트 비주얼 C++로

    많이 하잖아요. 또한 소스코드를 프로그램하고 실행하다보면 우리가 프로그램한 소스코드가 제대로 동작하고

   있는지 한번 확인하고 싶잖아요. 단순히 1+1 하라고 해서 2가 나오면 장땡이 아니라 내부에서 어떤 과정(소스부분)

   을 통해 어떤 변수에 어떤 값이 저장되어서 2가 나왔는지 보고 싶을 때가 있을 거에요.

   이런 과정을 디버깅 한다고 하는데 사실 컴퓨터에서는 이런 것이 가능하지요. PC의 해당 레지스터값을 하나씩

   순차적으로 읽어가면 되니까요. 하지만.. 128과 같이 하드웨어적 컨트롤을 하는 장비에서 내부의 소스코드를 하나

   씩 순차적으로 디버깅 하기는 힘들지요. 바로 이런 것을 해주는 장비가 JTAG라는 장비입니다.

    Embedded Syetem을 개발하는 사람이라면 절대절대 고마운(?) 놈입니다만 가격이 비싸지요.

    비싼것은 수천만원 하기도 해요..ㅡㅡ;

 

 4. Peripheral Features

   – Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes

     : 2개의 8bit 타이머/카운터가 있고 각각 독립된 프리스케일러와 비교모드가 있다는 군요.

       8bit 타이머/카운터니까 0~255까지 셀 수 있는 놈이구요..

       프리스케일러라 함은 어떻게 보면 분할기? 라고 할 수 있어요.

       사실 우리가 위에서 1명령어가 1클럭에 실행된다고 했으니까 0 -> 1로 증가하는데 1클럭이 소요되겠죠.

       그럼 0~255까지 증가하는데 256클럭이 소요됩니다. 만약 16Mhz를 사용하면 1클럭에 1/16000000 sec가 걸리니까

       Overflow만 1초에 엄청나게 걸리겠네요. 그럼 제대로 사용을 할 수가 없잖아요. 우리가 자주쓰는 시간단위는

       usec나 msec인데요.. 그래서 프리스케일러가 있습니다요. 프리스케일러를 만약 16으로 해두게 되면 16클럭에

       타이머의 값 1이 증가하게 되는 의미에요. 다시 말하자면 16클럭을 1클럭으로 쓰겠다는 뭐 그런 식이죠.

       최대 1024까지 프리스케일러는 사용할 수 있습니다요~

       비교모드는 타이머에 몇가지 모드가 있는데 그것은 나중에 살펴보아요~
   –  Two Expanded 16-bit Timer/Counters with Separate Prescaler, Compare Mode and Capture Mode

      : 위에 말한것 처럼 타이머 카운터가 있는데 16bit용으로 2개 있다는 군요. 즉, 0~65535 까지 숫자를 셉니다~

        16bit에는 비교모드 말고 캡쳐모드도 있다네요. 이 모드에 대해서는 역시 일단 패스~
   – Real Time Counter with Separate Oscillator

      : RTC를 위한 독립적인 오실레이터(발진기)용 카운터가 있다는 군요. 즉, 우리가 컴퓨터에도 시간이 나오잖아요.

       이 시간이 메인보드 안에있는 RTC칩(아마 DSXXX라고 해서 달라스용 칩이 유명하니까 보셨을 듯)에서 지 스스

       로 전원이 차단되어도 내부의 전원을 이용해서 시간을 계속 세고 있지요. 그래서 전원이 꺼져서 현재의 정확한

       시간을 기억하고 있는 것이죠. 이런 정확한 시간간격을 위한 발진기(아마 32.xxxkhz인가 였던것 같아요)가 있다는

       것인데요.  사실 착각하면 안됩니다. 뭐냐하면 잘못생각하면 내부에 현재 시간을 저장해두는 기능이 있다고 생각

       할 수 있는데 그게 아니라 정확한 1초 간격을 만들 수 있는 카운터가 따로 존재한다는 의미에요.

       따라서 전원을 껐다킨다고 해서 현재시간을 저장하고 있는 것이 아니라는 말입니다요~
   – Two 8-bit PWM Channels

     : 2개의 8bit PWM(Pulse Width Modulation) 채널이 있다네요. 즉, 펄스 폭 변조라는 것인데 PWM에 대해서는 아래에

       레귤레이터에서 살짝 설명했으니 참고하시길~
   – 6 PWM Channels with Programmable Resolution from 2 to 16 Bits

      : 6개의 PWM 채널인데 역시 자세한 것은 나중에~
   – Output Compare Modulator

      : 나중에 보면 타이머/카운터에서 비교모드라는 것이 있는데 이 비교모드를 통해 만들어진 PWM 파형을 전용핀

        에서 출력할 수 있어요. 예를 들어 OCR1A, OCR1B와 같은 핀이 이런 출력 전용 핀입니다.
   – 8-channel, 10-bit ADC / 8 Single-ended Channels / 7 Differential Channels

      2 Differential Channels with Programmable Gain at 1x, 10x, or 200x

      : 8개의 10bit(0~1023)의 ADC(Analog Digital Convertor)가 있다는 군요. Single-Ended와 Differentail에 대해서는

       ADC 설명할 때 할께요. 그보다 ADC라는 것은 아날로그 값을 디지털 값으로 변경할 수 있다는 의미입니다.

       예를 들어 0V가 0이고 5V가 1023이라면... 2.5V는 얼마인가요? 계산적으로 512 정도 나오겠군요.

       음 그렇다면 디지털 값 1은 4.8mV 정도라고 봐도 되겠네요. 우리가 보통 센서의 출력을 읽어올때 ADC 기능을

      사용하지요. 예를 들어 온도센서와 같은 경우 온도에 따라 출력되는 전압값이 달라지는데 이 출력되는 전앖값

       을 ADC로 읽어서 내부에서 계산하게 되면 현재의 온도를 알수가 있는 것입니다.

   – Byte-oriented Two-wire Serial Interface

      : ATmel에서는 TWI라고 하고 보통은 I2C라고 하는 통신 방식인데요. 2개의 선으로만 데이터를 전송하는 직렬

        전송 방식이에요~ 다른 Device 칩을 보면 I2C 방식을 가지는 칩들이 있는데 이런 칩들을 사용할 때 연결합니다.
   – Dual Programmable Serial USARTs

      : USART(Universal Synchronous and Asynchronous serial Receiver and Transmitter)로 동기/비동기 송수신을 말하

        는 것인데 그냥 보통의 RS232C 방식의 통신이라고 생각하시면 됩니다. 보통은 PC와 통신할 때 사용하는 것처

       럼 생각하지만 엄청나게 많은 곳에 사용할 수 있는 범용 통신 방식이지요. 이런 통신 포트가 2개 있다네요~
   – Master/Slave SPI Serial Interface

      : 위에 말했던 SPI 통신 방식
   – Programmable Watchdog Timer with On-chip Oscillator

      : Watch Dog 타이머가 있다는 의미인데요. Watch dog이라는 것은 일정시간이 지나면 자동으로 Reset을 걸어주

       는 기능이에요. 예를 들어 우리가 128을 아주 장치의 깊숙한 곳에 넣어두었는데 파워를 차단하지 않고 Reset

       을 걸고 싶다면 이런 Watchdog 타이머를 이용해서 주기적으로 Reset을 걸어줄수 있어요.

       마치 PC를 사용하다가 먹통이 되었을 때 시간이 지나면 자동으로 Reset을 걸어주는 것이죠~
   – On-chip Analog Comparator

      : 내부에 아날로기 비교기(Op-amp)와 같은 것이 있다는 거에요~



 5. Special Microcontroller Features
  – Power-on Reset and Programmable Brown-out Detection

   : 파워가 On 될때 Reset이 걸리게 된다는 의미입니다. 즉, 처음에 전원을 On 하게 되면 전압이 0V에서 해당 동

     작 전압만큼 상승하게 될 때 Reset을 한번 걸고 들어가므로 오동작을 방지하게 되는 것이죠.

     또한 Brown-out Detection 이란 것은 일정 Level 이하로 전압이 떨어지면 자동으로 Reset이 걸리는 기능입니

     다. 예를 들어 5V에서 잘 동작하다가 자칫해서 2V까지 전원이 순간 떨어지게 되면 자동으로 Reset이 걸리게

     되는 것인데 이를 Brown-out Detection 이라고 합니다. 
  – Internal Calibrated RC Oscillator

    : 회로도를 보면 보통 외부에 크리스탈이나 오실레이터등의 발진회로를 넣는데 사실 128의 내부에는 자체적

      으로 발진회로를 가지고 있습니다. RC(저항과 캐패시터)를 이용한 발진회로가 내장되어있는데, 주파수가 높

      은 발진회로가 아니라서 고속동작에서는 외부에서 발진회로를 넣어주게 됩니다. 물론 정확도도 떨어지지요.

      RC 발진회로라는 것은 비안정/단안정 멀티 바이브레이터와 같은 것을 생각하시면 되겠습니다.
  – External and Internal Interrupt Sources

    : 외부/내부 인터럽트 소스라는 것은 일단 내부는 타미어/카운터에서 얻어지는 인터럽트를 말합니다. 쉽게 말

      하면 우리가 알람시계를 맞춰놓으면 일정 시간이 되면 울리게 되지요? 그렇게 알람이 울리는 것을 인터럽트

      라고 말할 수 있지요.  외부 인터럽트는 INTx 의 핀에서 외부에서 인터럽트 신호를 받아서 동작하는 것이죠.

      예를 들어 스위치 같은 것을 누르는 것을 외부 인터럽트 신호라고 생각할 수 있겠지요.
  – Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby,

     and Extended Standby

    : 간단하게 Sleep 모드라는 것이 있는데, 우리가 마이컴을 사용하다보면 하루종일 동작시킬 필요가 없을 때도

      있지요. 예를 들면 복도에 인체감지 센서를 마이컴으로 제어하여 불이 들어오게끔 했는데 24시간동안 모든

      전력을 소비하면서 128을 동작시킬 필요는 없잖아요. 왜냐하면 낮에는 불을 안켜도 되니까요. 그렇다고 128

      전원을 차단시키는 것은 안되고 잠깐 PC의 대기모드와 같은 것을 걸어주고 싶을때 이 Sleep 모드를 사용하

      게 됩니다. 이때는 내부에 클럭이 공급되는 것을 줄여서 전력소비를 최소화 하게 되지요. 또한 이 Sleep 모드

      를 벗어나게 하는 방법(마치 우리가 대기모드에서 마우스 움직이면 대기모드가 풀리듯이)이 여러가지 있는

    데 이는 나중에 살펴보아욧
  – Software Selectable Clock Frequency

    : 소프트웨어적으로 클럭주파수를 선택할 수 있다고 하는군요. 즉, 내부 오실레이터를 사용하느냐, 외부 클럭

      을 사용하느냐를 정할 수 있고, 위에서 말한 프리스케일러와 같이 클럭 주파수를 조정할 수도 있다 이거죠.
  – ATmega103 Compatibility Mode Selected by a Fuse

    : ATmega103하고 호환된다는 것인데 뭐 쓸데 없는 말입니다.
  – Global Pull-up Disable

    : 전체 Pull-up을 Disable 할 수 있다는 의미인데 보통 Disable이 default 값입니다.

      우리가 보통 Pull-up을 위해 외부에 저항달고 5V 공급해주게 되는데 이렇게 하지 않고 내부에서부터 풀업

      을 걸어줄 수 있다는 거에요. 소스에서 해당 핀의 출력(PORTx값)을 1(Set)하게 되면 Pull-up이 됩니다.

 

6. I/O and Packages
– 53 Programmable I/O Lines
– 64-lead TQFP and 64-pad QFN/MLF

  : 53개의 입출력 포트가 있고 64TQFP(칩의 모양을 나타냄)의 모양이라는 이야기지요.
7.  Operating Voltages
– 2.7 - 5.5V for ATmega128A

   : 동작전압이 2.7~5.5V 라는 의미입니다.
8. Speed Grades
– 0 - 16 MHz for ATmega128A 

   : 클럭속도를 0~16Mhz로 사용할 수 있다는 의미입니다.

     즉, 최대 16Mhz까지 사용할 수 있다는 의미인데요. 이는 5V 동작전압에서로 알고 있습니다.

     2.7V에서는 보통 8Mhz까지 연결 가능합니다.

    하지만 물론 16Mhz 넘는 클럭을 사용해도 동작은 하기 하겠지만 그 자체가 오버클럭이지요.

    마치 우리가 PC에서 오버틀럭한다는 의미처럼 말이죠. 다 아시가겠지만 오버클럭하면 칩에 무리가 가게

    되므로 왠만하면 오버클럭하지 말아야 합니다.

 

 

-- 이상으로 첫번째 강좌는 마칠께요 --

     

 

 

 

 

profile

J102.net 홈페이지 관리자 및 운영자 이재열입니다^^

(*.132.85.18)