ATMega128

20140411 - Data Sheet, ATMega 살펴보기, LED 실습

Owen.K 2014. 4. 11. 15:13

High Endurance Non-volatile Memory segments


-128Kbytes of In-System Self-programmable Flash program memory

시스템 안에서 스스로 프로그램이 가능한 128Kbyte 플래쉬 프로그램 메모리를 가지고 있다. 

– 4Kbytes EEPROM

전자적으로 지울 수 있는 4Kbytes EEPROM

– 4Kbytes Internal SRAM


– Write/Erase cycles: 10,000 Flash/100,000 EEPROM

플래쉬에 쓰는 건 1만번으로 제한 / EEPROM은 10만번 

– Data retention: 20 years at 85°C/100 years at 25°C(1)

85도씨에서 20년 / 25도씨에서 100년 데이터 보관 가능.

– Optional Boot Code Section with Independent Lock Bits


In-System Programming by On-chip Boot Program


True Read-While-Write Operation


– Up to 64 Kbytes Optional External Memory Space

64Kbytes까지 추가 공간 낼 수 있다. 64*1024 = 65536 -> 0~65535  ->FFFF(16진수)->1111*4(2진수)

->버스 2^16

– Programming Lock for Software Security

소프트웨어 보안을 위해 프로그램은 잠겨있다.()

– SPI Interface for In-System Programming

셀프프로그램 가능하게 해주는 기능



• JTAG (IEEE std. 1149.1 Compliant) Interface

통신규약

– Boundary-scan Capabilities According to the JTAG Standard


– Extensive On-chip Debug Support


– Programming of Flash, EEPROM, Fuses and Lock Bits through the JTAG Interface


• Peripheral Features

주변장치

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

8bit짜리 두개

– Two Expanded 16-bit Timer/Counters with Separate Prescaler, Compare Mode and

16bit 확장 두개

Capture Mode


– Real Time Counter with Separate Oscillator


– Two 8-bit PWM Channels

8bit 짜리 PWM 채널 두개

– 6 PWM Channels with Programmable Resolution from 2 to 16 Bits

6개 PWM 채널을 동반한

– Output Compare Modulator

출력 비교 모듈

– 8-channel, 10-bit ADC

10bit짜리 ADC가 8개 채널로 구성

8 Single-ended Channels


7 Differential Channels


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


– Byte-oriented Two-wire Serial Interface


– Dual Programmable Serial USARTs


– Master/Slave SPI Serial Interface


– Programmable Watchdog Timer with On-chip Oscillator


– On-chip Analog Comparator


• Special Microcontroller Features


– Power-on Reset and Programmable Brown-out Detection

전력이 들어가는 하한선이 있는데 하한선 밑으로 내려가면 리셋시키는 기능이 있다

그 기능이 brown-out(4.5V 이하)

– Internal Calibrated RC Oscillator

내부의 발진기 RC(저항,캐리비터) 

oscillator(발진기 특정한 주파수를 만들어냄(크리스탈을 쓰기때문에수정진동자라고도 함.))

– External and Internal Interrupt Sources

내부외부 인터럽트 소스가 있다.

– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby,

6개의 슬립 모드가 있다.

and Extended Standby


– Software Selectable Clock Frequency

소프트웨어 동작 주파수를 바꿀 수 있다.

– ATmega103 Compatibility Mode Selected by a Fuse

퓨즈에 의한 103호환 모드가 선택됨.

– Global Pull-up Disable


• I/O and Packages


– 53 Programmable I/O Lines


– 64-lead TQFP and 64-pad QFN/MLF

lead->다리가 있는 놈들

• Operating Voltages

– 2.7V - 5.5V ->최소 2.7V 최대 5.5V







실험

*((volatile unsigned char *)0x3A) = 0x01;

0x3A = 0x01 위의 정보에서 살펴 봤듯이 DDRA의 주소값(0x3A == $3A)에 16진수로 1을 입력하는 것이다. 하지만 C언어를 배워서 알겠지만 그냥 상수값을 두면 컴파일러가 주소값으로 인지하지 못한다. 따라서 캐스팅을 해주는 것이다.

  • 8 bit CPU이기 때문에 주소값도 8bit (8 bit는 1 byte == char형)로 해준다.
    그리고 주소값에는 음수가 없기 때문에 unsigned를 붙여준다.

  • Volatile은 휘발성을 띈다는 뜻이며 최적화하지 말고 우리가 원하는 위치에 바로바로 적용시켜달라는 뜻이다.

*((volatile unsigned char *)0x3B) = 0x01;

두번째 줄도 마찬가지이다. 0x3B가 의미하는 것이 PortA를 의미하는 것이다.

소스코드에 대한 설명은 아주 간단하게 끝이났다. 소스를 컴파일해서 작동을 해보아도 아주 정상적으로 작동될 것이다. 하지만 여기서 의문점이 하나 생길것이다. 그것은 바로 Port의 주소값이다.

현재는 Port를 첫번째 0번 Port에 입력되어있지만 그 값을 2번이나 3번으로 바꾼다면 어떤식으로 수정해야지 LED의 불을 켤 수 있을까?

사실 주소값이라고 하긴 그렇지만 위의 ATMEGA는 8 bit의 구조로 되어있다. 그리고 Port도 8개이다. 이를 생각해보면 조금은 감을 잡을 수 있을지 모른다.

바로 Port의 입력값을 0000 0000으로 본다면 일곱번째의 Port자리에 선을 연결하였다고 하면, 위의 2진수자리에서 7번째(Port는 오른쪽부터 순서대로 올라간다.) 1이라는 값이 들어가면 되는 것이다. 그러면 2진수로 0100 0000 이며 16진수로 0x40을 의미한다. 그럼 PortA의 7번째에 선을 연결하였다면 아래와 같이 입력을 해주면 되는 것이다. 물론 DDR의 값도 같은 Port라인에 출력하는 값인 High 즉 1로 바꾸어주어야한다.