lecture 2 avr 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁...

25
Lecture 2 AVR 의 의의 의 의의 의의 의의의의의 의의의 의의의의의의의 의의의 1

Upload: eric-york

Post on 26-Dec-2015

237 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Lecture 2AVR 의 개괄 및 기본 동작

동국대학교 홍유표산업기술대학교 이응혁

1

Page 2: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 개요

ATMEL 사에서 제작한 RISC 구조의 저전력 CMOS 8 비트 마이크로컨트롤러

1997 년에 최초 개발 , Alf-Egil Bogen 과 Vegard Wollan 의 진보된 RISC 기술을 기반으로 설계되어 AVR 이라 명명함 .

대부분의 명령은 단일 클럭으로 실행하여 동작속도를 혁신적으로 개선한 마이크로컨트롤러로서 저전력 임베디드 시스템에 적합함 .

AVR RISC 구조는 CISC 에 비해 10 배 이상의 빠른 속도로 프로그램이 실행될 수 있는 코드 체계 보유 .

ATMEL 의 플래시 메모리 기술을 접목하여 ROM Writer 가 필요없는 ISP(In System Programming) 방식을 최초 적용 .

ATtiny 및 Atmega 계열에 추가로 LCD 구동 , 네트워크 , 자동차 , 모터 제어 등의 특수 응용 분야 전용 계열의 제품군 구비 .

2

Page 3: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

명령어의 실행 (1)

AVR 은 하바드 구조와 고속 - 액세스 레지스터 파일의 구조를 이용한 파이프라이닝 기법을 사용하고 명령을 평균적으로 1 클럭에 1 개씩 처리하는 구조임

3

Page 4: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

명령어의 실행 (2)

단일 클럭 사이클 동안에 두 개의 레지스터에서 데이터를 인출해 오고 , 이에 대한 산술연산을 실행함

그 결과를 목적 레지스터에서 다시 저장하는 모든 과정을 단일 명령어 사이클에서 수행이 가능함 .

4

Page 5: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 마이크로 콘트롤러의 계열 및 종류

5

AVR 계열 소자의 종류 주요기능

TinyATtiny11/12L/13/15L ATtiny24/25/261 ATtiny44/45 ATtiny84/85

1∼8K 바이트의 프로그램 메모리 8∼20 핀 패키지 주변 소자의 기능이 제한적으로 내장됨

MegaATmega8/48/88L ATmega8515/8535 ATmega16/162/164/168 ATmega32/324/325/3250L ATmega64/640/644/6450 ATmega128/1280/1281 ATmega2560/2561

4∼256K 바이트의 프로그램 메모리 28∼100 핀 패키지 확장 명령어 세트를 가지고 있음 ( 곱셈과 확장 메모리를 다루기 위한 명령어 내장 ) 주변 소자의 기능이 확장됨 .

Application

Specific

ATtiny25/45 AT90PWM1/2Atmega406 AT90CAN128P/329P AT90USB1286/647 ATmega64RZAPV/RZAV ATmega3290P/329P

Automotive Lighting Smart Battery CAN  USB  Z-Link  LCD

Page 6: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 마이크로 콘트롤러의 계열별 특징

Tiny 계열 가격이 낮고 소형 시스템에 적합한 소자 장난감 , 게임용 장치 , 배터리 충전기 등 간단히 조립될 수 있는 센서 응용회로에

적용되는 모델 대량으로 생산되는 간단한 응용분야에 사용 핀 수는 8 핀에서 28 핀 정도로서 기능이나 성능이 낮음 1K∼2KB 의 플래시 메모리

Mega 계열 프로그램 크기가 대형이고 입출력의 수가 많은 시스템에 적합한 소자로 무선

전화기 및 프린터용 제어기 , FAX 및 CD-ROM 제어기에 응용 될 수 있는 모델 규모가 크고 성능이 높은 응용 분야에 활용 가격이 고가이고 기능이나 성능도 높다 . 8K∼256K 바이트의 플래시 메모리

특수 용도의 AVR 응용 분야에 따라 자동차용 , 통신용 , LCD 제어용 등 다양한 응용에 적합하도록

최적화하여 출시

6

Page 7: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 구조상 특징

연산과 데이터 저장을 동시에 할 수 있는 하버드 구조 . 명령어는 16 비트 버스 폭의 하드웨어로 처리되지만 , 데이터는 8

비트 길이 기반으로 처리 . 내부에는 32 개의 범용 작업 레지스터를 가지며 모든 레지스터는

산술 - 논리 연산장치 (ALU) 와 직접적으로 연결되는 구조를 가지고 있기 때문에 한 클럭 사이클 내에 단일 명령 사이에 두 개의 독립된 레지스터를 한꺼번에 처리할 수 있음 .

C- 언어로 제어하기에 편리한 주소지정 모드 (addressing mode) 를 제공하여 높은 코드 집적도 제공 .

7

Page 8: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 내부 구조

8

Page 9: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 의 메모리 관련 특징

단일 칩에 자체 프로그램이 가능한 1KB~256KB 까지의 플래시 메모리를 가지고 있음 . 프로그램은 직렬 프로그래밍 인터페이스 방식의 ISP 기능을 이용하여 1,000 번까지 재 프로그램이 가능함 .

모델에 따라 64Byte 에서 4KB 까지의 EEPROM 을 내장하고 있어 데이터 백업이 가능함 . 100,000 정도 반복 사용 가능

모델에 따라 데이터 메모리로서 32Byte 에서 8KB 까지의 비교적 큰 SRAM 을 내장하고 있음 .

이상의 3 가지 메모리를 내장하고 있어 효율성이 극대화되어 있는 마이크로컨트롤러로 각광을 받음 .

9

Page 10: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR I/O 관련 특징

다기능 , 양방향의 일반 목적의 I/O 포트를 가지고 있음 . 이는 구조 변경이 가능하고 , 내부에는 풀업 저항이 내장 .

다양한 기능의 내부 오실레이터가 내장 . 재 프로그램이 가능한 플래시 메모리는 ISP, JTAG 또는 or 고전압

방법을 이용하여 시스템 내에서 프로그램 가능 . 대부분의 소자에서 JTAG 또는 debugWIRE 를 통해 칩 내에서

직접적인 디버깅이 가능 . 8- 비트와 16- 비트의 타이머가 내장되어 있으며 , 이를 이용하여

PWM 츨력 기능으로 활용 가능 . 아날로그 비교기가 내장됨 . 16 개까지의 채널 입력을 갖는 10- 비트의 A/D 변환기 내장 .

10

Page 11: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR 기타 특징

다양한 직렬 인터페이스 기능을 내장함 . I²C 호환성을 갖는 TWI 기능 , RS-232, RS-485 등의 지원을 위한 UART/USART SPI(Serial Peripheral Interface) 버스 2선 또는 3 선식의 동기 데이터 전송을 위한 USI(Universal Serial

Interface) 저전압 검출 (Brown-out Detection) 기능을 제공함 . Watchdog Timer (WDT) 를 내장하고 있음 . 전원 절약을 위한 여러 가지의 슬립 모드를 제공함 . 조명 및 모터 제어를 위한 전용의 제어기 CAN 컨트롤러 /USB 컨트롤러 /이더넷 컨트롤러의 지원 LCD 컨트롤러의 지원

11

Page 12: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 주요 특징 (1)

마이크로컨트롤러의 속도 16MHz 의 클럭을 사용할 때 , 16MIPS 의 연산속도를 갖는다 .

내장 메모리 128K 바이트의 ISP 방식 프로그램용 플래시 메모리 4K 바이트의 EEPROM 4K 바이트의 데이터 저장용 SRAM

부가 I/O 장치 독립적인 프리스케일러와 비교 모드를 갖는 2개의 8 비트 타이머 /카운터 독립적인 프리스케일러 , 비교 모드와 캡쳐 모드를 갖는 2개의 확장 16 비트

타이머 /카운터 독립적인 오실레이터를 갖고 있는 실시간 카운터 6개의 PWM 채널 8채널 10 비트 ADC 2개의 프로그램 가능한 직렬 USARTs

12

Page 13: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 주요 특징 (2)

마스터 /슬레이브 모드를 갖는 SPI 직렬 인터페이스 내장된 오실레이터로 구현된 프로그램 가능한 워치독 타이머 아날로그 비교기 내장 53 개의 프로그램가능한 입출력 I/O

기타 전원 투입 리셋과 프로그램 가능한 저전압 검출 (BOD : Brown-out

Detection) 기능 조정 가능한 RC 오실레이터의 내장 리셋벡터와 8 개의 외부 인터럽트 소스 , 26 개의 내부 인터럽트 소스 슬립모드로서 6개의 전원 절약 모드를 가지고 있음 ( 아이들 , ADC 노이즈

감쇄기 , 전원 절감 , 전원 차단 , 대기 , 확장 대기 ) 내장 메모리의 프로그래밍과 온칩 디버깅이 가능한 JTAG(IEEE std.

1149.1) 인터페이스 제공 64 핀의 TQFP(Thin Quad Flat Package) 또는 MLP(Micro Lead Frame)

패키지로 구성되어 있음 ATmega128 는 2.7V~5.5V 의 전원 전압에서 동작하며 , 시스템 클럭의

입력 범위는 0~16MHz 임 . (ATmega128L : 2.7V ~ 5.5V , 0~8MHz)

13

Page 14: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 패키징

TQFP 64 핀 패키지

14

Page 15: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 핀별 기능들 (1)

포트 A(PA7∼PA0) 외부 데이터 메모리와 데이터 전송시 하위 주소와 데이터 버스로 사용 8 비트의 양방향 I/O 포트로 사용 가능 외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항 (20 ∼㏀ 50㏀ ) 을 갖음 .

포트 B(PB7~PB0) 포트는 중복된 기능을 가지고 있는 포트 ( 표 2.6참조 )내부적으로 풀업 저항 (20 ∼㏀ 50㏀ ) 8 비트의 양방향 I/O 포트로 사용 가능

포트 C(PC7~PC0)외부 데이터 메모리와 데이터 전송시 상위 주소와 데이터 버스로 사용8 비트의 양방향 I/O 포트로 사용 가능 외부에 메모리를 인터페이스하지 않을 때에는 내부 풀업 저항 (20 ∼㏀ 50㏀ ) 을 갖음

15

Page 16: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 핀별 기능들 (2)

포트 D(PD7∼PD0) 포트는 중복된 기능을 가지고 있는 포트 ( 표 2.8참조 ) 내부적으로 풀업 저항 (20 ∼㏀ 50㏀ ) 8 비트의 양방향 I/O 포트로 사용 가능

포트 E(PE7~PE0) 포트는 중복된 기능을 가지고 있는 포트 ( 표 2.9참조 ) 내부적으로 풀업 저항 (20 ∼㏀ 50㏀ ) 8 비트의 양방향 I/O 포트로 사용 가능

포트 F(PF7∼PF0) 포트는 중복된 기능을 가지고 있는 포트 ( 표 2.참조 ) 내부적으로 풀업 저항 (20 ∼㏀ 50㏀ ) A/D 컨버터의 입력포트로 사용 8 비트의 양방향 I/O 포트로 사용 가능

16

Page 17: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

ATmega128 의 핀별 기능들 (3)

포트 G(PG4~PG0) 포트는 중복된 기능을 가지고 있는 포트 ( 표 2.참조 ) 내부적으로 풀업 저항 (20 ∼㏀ 50㏀ ) 5비트의 양방향 I/O 포트로 사용 가능

: 마스터 리셋 입력 ( 액티브 LOW 신호 ) AVCC : A/D 컨버터 및 포트 F 의 전원 AREF : A/D 컨버터의 기준전압 PEN : SPI 를 활성화 시키는 프로그래밍 인에이블 핀 XTAL1, XTAL2 VCC, GND

17

RESET

Page 18: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

AVR CPU 코어의 구조

18

Page 19: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

플래시 프로그램 메모리

프로그램 메모리는 8 비트로 구성 기본적으로 한 개의 번지가 16 비트 단위로 구성되어 16

비트 마이크로프로세서인 것처럼 동작 모든 AVR 의 명령어는 16 비트 또는 32 비트 길이로 구성 플래시로 되어 있는 내부 프로그램 메모리는 부트 프로그램 섹션 (boot program section) 과 응용 프로그램 섹션(application program section) 의 두 가지 영역

내부 프로그램 메모리는 특정의 메모리 잠금 비트 (memory lock bit) 를 사용하여 쓰기와 쓰기 /읽기의 금지를 할 수 있음 .

19

Page 20: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

산술논리연산장치 (ALU)

AVR 의 ALU 는 32 개의 일반 목적의 동작 레지스터(general purpose working register) 와 직접적으로 연계되어 동작

ALU 는 레지스터 간 또는 레지스터와 상수 간의 산술 또는 논리 연산을 단일 클럭 사이클에 수행

연산된 결과에 대한 ALU 의 상태를 상태 레지스터로 갱신 AVR 에서는 강력한 하드웨어 곱셈기를 가지고 있어서

부호있는 정수 /부호없는 정수의 곱셈 연산과 소수점 형식의 곱셈 연산을 빠르게 수행

20

Page 21: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

상태 레지스터 (1)

가장 최근에 실행된 산술 연산의 명령어 처리 결과에 대한 상태를 나타내 주는 레지스터

조건부 처리 명령에 의해 프로그램의 흐름을 변경하는데 사용될 수 있음

상태 레지스터는 인터럽트를 처리하는 과정에서 자동으로 저장되거나 복구되지 않으므로 , 반드시 소프트웨어에서 이러한 동작을 처리하여 주어야 함 .

21

Page 22: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

상태레지스터 (2)

Bit 7 (I) : 전체 인터럽트 허가 (Global Interrupt Enable)

Bit 6 (T) : 비트 복사 저장 (Bit Copy Storage) Bit 5 (H) : 보조 캐리 플래그 (Half Carry Flag) Bit 4 (S) : 부호 비트 (Sign Bit)  Bit 3 (V) : 2 의 보수 오버플로우 비트

(two's complement overflow bit) Bit 2 (N) : 음의 플래그 (Negative Flag) Bit 1 (Z) : 영 플래그 (Zero Flag) Bit 0 (C) : 캐리 플래그 (Carry Flag)

22

Page 23: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

범용 레지스터 파일

AVR 의 고성능 RISC 명령을 수행하는데 최적화 되어 있는 레지스터

1 바이트 크기로 32 개의 범용 레지스터로 구성

연산의 대상이 누산기가 아닌 이들 32개의 범용 레지스터들을 사용하여 연산을 할 수 있어서 연산의 속도가 빠름

레지스터간의 연산은 보통 1 사이클 명령으로 이루어짐

23

Page 24: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

Stack Pointer

스택 (Stack) : 서브루틴이나 인터럽트 발생시에 복귀되는 주소를 임시로 기억하기 위해서 사용되거나 일반 프로그램에서 지역 변수 또는 임시 데이터를 저장하는 용도로 사용되는 LIFO(Last In First Out) 구조의 메모리

스택 포인터 (stack pointer) : 항상 데이터의 상단 (top of stack) 을 가리키는 16 비트 레지스터로서 SP 라고 표시되는데 , 이는 데이터 저장이 가능한 스택의 번지를 의미

스택의 동작 : Push and Pop ATmega128 의 스택은 SRAM 영역내에 존재 , SP 레지스터의 초기값은

적어도 0x60 번지 이상의 값으로 설정

24

Page 25: Lecture 2 AVR 의 개괄 및 기본 동작 동국대학교 홍유표 산업기술대학교 이응혁 1

Y. Hong & E. Lee

리셋 및 인터럽트

리셋을 포함하여 여러 종류의 인터럽트 소스를 포함하고 있으며 , 이에 해당하는 리셋 및 인터럽트 벡터를 가지고 있음 .

인터럽트들은 여러 가지의 인터럽트 마스크 레지스터를 통하여 각각 개별적으로 인터럽트의 허용 여부를 설정할 수 있으며 , 상태 레지스터(SREG) 의 전체 인터럽트 허가 비트 I를 이용하여 전체적인 허용 여부를 설정할 수 있음 .

인터럽트 동작의 유형 인터럽트가 발생하면 관련 플래그 레지스터의 해당 플래그를 비트를 1 로 세트하도록

트리거시키는 경우 인터럽트가 요청되더라도 이를 기억해 둘 인터럽트 플래그를 가지고 있지 않으며 인터럽트

발생 조건이 만족되어 있는 경우에만 인터럽트를 트리거하는 경우 인터럽트의 종류에 상관없이 인터럽트의 응답시간은 4개의 클럭 사이클

내에 이루어짐 . 4개의 클럭 사이클 동안에 현재 수행중인 프로그램의 프로그램 카운터

(Program Counter, PC) 로 저장되고 , 인터럽트 벡터의 주소가 프로그램 카운터에 적재되어 실제 인터럽트 처리 프로그램이 실행될 수 있도록 준비함 .

25