Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장...

105
마이크로컨트롤러 개요 Chapter. 1 Jaeheung, Lee

Transcript of Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장...

Page 1: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러개요Chapter. 1

Jaeheung, Lee

Page 2: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

목차

1. 마이크로컨트롤러의 정의

2. AVR 마이크로컨트롤러 개요

3. ATMega128 마이크로컨트롤러

Page 3: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

1. 마이크로컨트롤러의 정의

2. AVR 마이크로컨트롤러 개요

3. ATMega128 마이크로컨트롤러

AVR 마이크로컨트롤러

Page 4: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로프로세서

¨ ALU, 제어회로, 메모리, 타이밍(클럭) 회로

ALUScratchpad

RAM

Control Clock

Microprocessor

마이크로 프로세서 블럭다이어그램

Page 5: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컴퓨터

n 마이크로프로세서 (CPU)

n 프로그램 메모리 (ROM)

n 데이터 메모리 (RAM)

n 주변 인터페이스

일반적인 마이크로 컴퓨터 시스템

ProgramMemory(ROM)

Microcomputer

DataMemory(RAM)

Input/Output

Timing(clock) Microprocessor

Data bus

Address bus

Control

Page 6: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로프로세서 역사

Page 7: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

800880808085

8051*(Intel)Z80(Zilog)

6800(Motorola)

6502(MOSTechnology)

Apple-II

8비트

4비트40044040(intel)

80868088(IBM-PC/XT)80286(IBM –PC/AT)(intel)

68000(16/32)(Motorola)

16비트

32비트 8038680486Pentium(intel,AMD) ARM*

PowerPC(IBM)MPC860(Motorola)*

* 임베디드

680206803068040(Motorola)

RISCCISC

AVR* (Atmel)

AVR32*

intel motorolaZilogMOS

technology

(MAC)

마이크로프로세서 역사

Page 8: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Intel Pentium42005년

1.69억TR3.73GHz

90nm공정2MB SRAM

Page 9: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

PC (Personal Compter)

Apple-II6502

Mac680x0계열(Motorola)

MacPowerPC

(IBM)

Mac(Intel)

IBM-PC(XT)8088

IBM-PC80486

IBM-PC(AT)80286

IBM-PCPentiumPro,2,3,4

IBM-PCPentium(D,EM64T)

IBM-PCCore2

IA-32 : 32비트

64비트-AMD64-Pentium4(EM64T) IA-64Dual CPU-Pentium D(Pentium4x2)-Core2-AMD64 X2

16비트

IA-32 : 32비트MMX(멀티메디어,3D그래픽)

8비트

16/32비트

32비트

Page 10: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CISC와 RISC

¨ CISC¤ Complex Instruction Set Computer

¤ x86, 68000, VAX

¤ 반RISC의 의미가 애매해 짐n 486 -> Pipelined CISC

n 더 작아지는 mirco-operations(명령을 실행을 위한 CPU내의 코드)

¨ RISC : 명령 축소¤ Reduced Instruction Set Computer

¤ 고속 실행을 목적으로

¤ AVR,PIC, ARM, PowerPC, SPARC

¨ 최근 들어 2개의 경계가 불분명 해 짐

Page 11: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU의 동작 요소

¨ CPU

¨ 메모리 (ROM,RAM)

¨ 특정 목적 지원 프로그램

¨ IO 장치 (입출력 장치, 통신 장치)¤ KEYPAD

¤ LCD

¤ Ethernet (LAN)

¤ USB

¤ 기타

Page 12: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 시스템 구조

8051

Timer

Serial

8051 core

• 레지스터• ALU• FLAG

ROM/FLASH

RAM

IO 모듈

• 키패드• LCD• USB

• CPU에서 동작하는 모든 프로그램은 반드시 메모리에 적제되어 있어야 한다. ROM이나 RAM 중 어느한곳에 있어도 상관 없다.

UART통신

PC장치

Page 13: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

메모리 종류

¨ ROM¤ Mask ROM : 생산 시 고정된 데이터로 칩이 만들어 진다. 따라서 롬라이터로

쓰기가 불가능 하다. 주로 대량생산에 사용.

¤ PROM (Programmable ROM): 생산 시 데이터로 없이 만들어 지고, 롬라이터로 쓰기하면 변경 불가능 하다.

¤ EPROM (Erasable PROM): 롬 라이터로 데이터(프로그램)을 쓰고 자외선으로지워 재 프로그램 가능.

¤ EEPROM (Electrically EPROM): 동작 중 쓰기가 가능하여, 시스템의 특정 정보를 담는것이 주 목적이다. (RAM에 비해 쓰기 속도 저하, 쓰기 복잡)

¨ RAM¤ SRAM(Static RAM): 쓰기와 읽기가 가능. 전기가 공급되면 데이터 유지

¤ DRAM (Dynamic RAM): 쓰기와 읽기가 가능. 전기가 공급되어도 일정 시간이지나면 데이터가 사라짐. 주기적 리프레쉬(refresh)가 필요.

¨ FLASH¤ 읽기와 쓰기가 가능하고 전원이 없어도 데이터가 사라지지 않음.

RAM에 비해 쓰기가 복잡. CPU에 의한 쓰기 프로그램이 필요.

¤ 최근 임베디드 시스템은 거의 이 메모리 사용.¤ PC의 롬바이어스도 이 메모리 사용. (초기 PC PROM/EPROM) – 바이러스

Page 14: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

EPROM

소켓을 이용 장착

데이터를 삭제할 때자외선을 이용한다.자외선이 통과하도록창이 열려 있다.-데이터가 지워지면모두 0xFF 됨

데이터를 쓸 때는 별도의 장치를 이용한다.따라서 소켓을 쓰는 것이 일반적

Page 15: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

DRAM 메모리 종류

¨ DRAM의 분류

: SRAM보다 구조가 단순하고 고밀도, 가격 저렴.

¤ DRAM : 초기의 메모리.

¤ SDRAM

n SDRAM :DRAM보다 엑세스 속도 증가를 위해 클럭을 사용하여읽고 쓰는 시간을 동기화 한다.두클럭에 데이터를 한번 억세스 한다.

n DDR SDRAM : SDRAM 보다 속도를 높이기 위해 한 클럭 동안엑세스 한다.

n DDR2 SDRAM : 클럭의 속도를 2배 높여 억세스 한다.

진화

Page 16: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 시스템 구성 요소 I-I

¨ Timer

¤ 전자적 논리회로에 의해 하드웨어적으로 구현되며 정확한 클럭과시간을 얻을 수 있다.

¤ CPU 프로그램과 연결되어 수백 us ~ 수백msec 처리 가능.

¤ 하드웨어적 고속 클럭 처리가 가능. 하드웨어적 처리에 의한 클럭.

¨ UART(RS-232C)

¤ 시리얼 통신을 위한 모듈로 컴퓨터간 통신을 위해 컴퓨터 초기부터 구현되어온 방식이다.

¤ 모뎀과 연결되어 전화선을 통한 원거리 통신 가능.

¤ CPU의 프로그램을 전송하거나 실행되는 상황을 PC로 전송-debug 툴로도 사용.

Page 17: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 시스템 구성 요소 I-2

¨ SPI

¤ 장치(칩) 사이의 통신을 위해 시리얼 통신 방식.

¤ 데이터 신호와 함께 전송을 시점을 알리는 클럭이 전송.

¤ UART 보다 고속 처리가 가능.

¤ 시스템내의 칩과 칩사이 , 모듈과 모듈사이의 통신에 사용

¨ USB

¤ 시리얼 통신 중 가장 최근에 개발된 방식.

¤ 전송 속도가 높아 장치간의 많은 데이터 전송하는데 유리.

¤ 신호선과 함께 전원도 공급되어 간단한 장치 개발에 유리.

¤ CPU의 프로그램을 전송하거나 실행되는 상황을 PC로 전송-debug 툴로도 사용.

Page 18: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 시스템 구성 요소 II

¨ Keypad : 장치의 제어를 위한 가장 일반적인 입력 장치.

¤ 핸드폰의 번호 키. 컴퓨터의 키보드

¨ LCD : 시스템의 상태를 표시하는 출력 장치¤ STN : 흑백의 무 칼라 표시 장치

n 문자형 : 주어진 폰트의 내용을 출력한다. ASCII 코드 출력.

n 그래픽형: 픽셀 단위의 그래픽 처리가 가능한 표시장치

¤ TFT-LCD : 칼라 표시를 지원하면 그래픽 처리가 가능

¨ LAN(Ethernet)

¤ 근거리 통신망을 구성하여 컴퓨터간의 통신

¤ 가장 대표적 통신망

Page 19: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU와 임베디드

¨ CPU와 보조 모듈의 물리적 구성¤ CPU의 종류에 따라 많은 차이가 있다.

¤ CPU와 각 모듈을 하나의 칩으로 만든다.n 장치의 크기 및 이동성등을 고려하여 구성

n 장치의 특성에 맞는 구성 CPU을 찾아 개발.

¨ MCU (Micro Controller Unit)¤ CPU와 기본적인 모듈을 한 칩에 구현

¤ 보통 장치 제어용 CPU을 말함.

¨ 임베디드¤ MCU와 비슷한 개념으로 CPU와 모듈을 모아 하나의 칩

으로 구현

¤ 최근 이 말은 OS와 결합되어 구성되는 의미가 강함n Windows CE, linux 포팅

Page 20: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

MCU와 임베디드

¨ CPU의 형상과 칩의 구성

¨ CPU의 실행 속도 향상

¨ 칩의 크기 및 파워 (휴대 장치, 장치 제어)

Page 21: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

8051과 MCU 형상

MCU와 임베디드

Page 22: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

8051의 구성 - Intel

CPU

RAM

ROM

프로그램

4 I/O 포트

Timer 0

Serial PortOSC

Interrupt Control

외부 인터럽트

Timer 1

Timer/Counter

Bus Control

TxD RxDP0 P1 P2 P3

Address/Data

Page 23: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AT80C51 – www.atmel.com

Page 24: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AT89C51 - ATMEL

Page 25: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM과 임베디드 형상

MCU와 임베디드

Page 26: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM9 – 인텔 PXA255

Page 27: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM7-삼성반도체 S3C44B0X

Page 28: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM9-삼성반도체 S3C2410

Page 29: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU란 무엇인가?

¨ CPU란 논리 연산을 하는 전자 기계

¨ 프로그램에 동작하는 상태 머신

Page 30: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 코어

A

B

R0,R1, … R7

FLAG

메모리

명령 해석 및 명령동작 제어부

메모리제어

data bus

제어 신호

데이터 흐름

. . .

ALU

PC

SP

DPTR

PC:Program CounterSP:Stack Pointer

사칙연산논리연산쉬프트

Page 31: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU의 기본 구성

¨ 레지스터 : CPU가 데이터를 처리를 위한 저장

¨ ALU : 수학적 계산을 하는 부분

¤ 사칙연산, 논리연산, 쉬프트 연산

¨ FLAG : ALU 계산 결과 flag 부분이 저장

¨ 명령 해석 및 명령동작 제어부 – 기계어 코드를 읽고 명령을해석하여 실행

Page 32: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

명령어 실행-Machine Cycle

¨ 한 명령이 실행되기 까지의 전체 시간¤ Fetch -기계어 명령 읽기

¤ Decode - 기계어 기능 해석

¤ Execute - 실행

¤ Store - 메모리에 저장

ADD A,R0

Page 33: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

프로그램 작성

int cval;

void Calc(){

int val;

val = 0;val += 2;cval = val;

}

l C 또는 어셈블리(기계어)로 작성

74 00

25 02

F5 A0

컴파일러

기계어

ROM에 넣기(시스템에 따라 ROM, FLASH, RAM)

Calc:MOV A,00H

ADD A,02H

MOV 0A0,A

. . .

어셈블러

Page 34: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU의 동작 – Step 1 프로그램

A

B

. . .

FLAG

data bus

. . .

ALU

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0002 25 02 ADD A,02H0004 F5 A0 MOV 0A0,A0006 02 00 57 JMP MAIN 0009 02 . . . . . .

74

25

02

00

00

01

02

03

Page 35: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 2 – fetch기계어 명령 읽기

A

B

. . .

FLAG

data bus

. . .

ALU

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0030 25 02 ADD A,02H0033 F5 A0 MOV 0A0,A

74

명령어 버퍼

명령어 해석

•처음 00번지 기계어를 읽는다. •명령어 74는 다음 데이터를A레지스터로 옮기라는 명령으로 규정 -> 해석

25

02

00

00

01

02

03

74

0000 PC

Page 36: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 3다음 데이터 읽기

B

. . .

FLAG

data bus

. . .

ALU

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0002 25 02 ADD A,02H0004 F5 A0 MOV 0A0,A

74

74

명령어 버퍼

명령어 해석

25

02

•다음 1 번지의 데이터 00을읽어 A레지스터에 넣는다. •명령 한 개가 종료 됨.

A 00

00

00

01

02

03

0001 PC

Page 37: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 4fetch

A = 0

B

. . .

FLAG

data bus

. . .

ALU

25

명령어 버퍼

명령어 해석

•처음 02번지 기계어를 읽는다. •명령어 25는 다음 데이터를A레지스터와 더하라는 명령으로 규정 -> 해석• A+02H -> A 준비02

00

00

01

02

03

74

25

0002 PC

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0030 25 02 ADD A,02H0033 F5 A0 MOV 0A0,A

Page 38: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 5ADD 실행Operand 읽기

A

B

. . .

FLAG

data bus

. . .

ALU

25

명령어 버퍼

명령어 해석

•처음 03번지 데이터를 읽어opreand 버퍼에 저장.

00

00

01

02

03

74

25

02

02 Oprand 버퍼

0003 PC

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0030 25 02 ADD A,02H0033 F5 A0 MOV 0A0,A

Page 39: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 6ADD 계산

B

. . .

data bus

. . .

ALU

25

명령어 버퍼

명령어 해석

•처음 03번지 데이터를 읽어opreand 버퍼에 저장.

• A+02H -> A 실행•ADD 명령 종료

00

00

01

02

03

74

25

02

02 Oprand 버퍼

A = 02

FLAG 설정

00 02

02

ADD 명령

0000 PC

주소 기계어 어셈블러ORG 0000H

0000 74 00 MOV A,00H0030 25 02 ADD A,02H0033 F5 A0 MOV 0A0,A

S=0Z=0C=0V=0

Page 40: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 7fetch MOV

B

. . .

data bus

. . .

ALU

주소 기계어 어셈블러0000 74 00 MOV A,00H0002 25 02 ADD A,02H0004 F5 A0 MOV 0A0,A

F5

명령어 버퍼

명령어 해석

•다음 명령 MOV을 읽는다•MOV 명령 해석

00

00

01

02

03

74

25

02

02 Oprand 버퍼

A = 02

FLAG 설정

A0

04

05

xx

09

0A

0B

xx

xx

F5

0004 PC

Page 41: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 8MOV의 주소값읽기

B

. . .

data bus

. . .

ALU

주소 기계어 어셈블러0000 74 00 MOV A,00H0002 25 02 ADD A,02H0004 F5 A0 MOV 0A0,A

F5

명령어 버퍼

명령어 해석

•MOV명령에서 메모리 주소값임을해석하고•주소 값을 읽는다.

00

00

01

02

03

74

25

02

A0 Oprand 버퍼

A = 02

FLAG 설정

04

05

xx

09

0A

0B

xx

xx

F5

A0

0005 PC

Page 42: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 9A 레지스터 쓰기

B

. . .

data bus

. . .

ALU

주소 기계어 어셈블러0000 74 00 MOV A,00H0002 25 02 ADD A,02H0004 F5 A0 MOV 0A0,A

F5

명령어 버퍼

명령어 해석

•MOV명령에서 메모리 주소값임을해석하고•주소 값을 읽는다.

00

00

01

02

03

74

25

02

A0 Oprand 버퍼

FLAG 설정

04

05

09

0A

0B

xx

xx

F5

A0

02

A = 02

02

address bus

ROM

RAM

0006 PC

Page 43: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU의 동작 순서표

74 00

MOV A,00H ADD A,02H

25 02 F5

MOV 0A0,A

A0 02

FETCH OPRAND FETCH OPRAND FETCH OPRAND

Read Read Read Read Read Read write

00 01 02 03 04 05 A0엑세스

주소

데이터 실행 실행 실행

Page 44: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU 동작 속도 높이기

74 00

MOV A,00H ADD A,02H

25 02 F5

MOV 0A0,A

A0

FETCH OPRAND FETCH OPRAND FETCH OPRAND

데이터

74 00 실행 XX XX파이프1

25 00 실행 XX XX

F5 A0 실행 XX

02 F5 실행

파이프2

파이프3

파이프4

실행 실행

prefetch

(실제 8051은 이 개념이 적용 안된 가상의 개념 임, Intel 80486, ARM등에 적용)

Page 45: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM 프로그램 작성

int cval;

void Calc(){

int val;

val = 2;val += 3;cval =

val;}

l C 또는 어셈블리(기계어)로 작성

0200A0E3 0310A0E3 14209FE5000082E5

컴파일러

기계어

ROM에 넣기(시스템에 따라 ROM, FLASH, RAM)ISP, JTAG, …

Calc:mov r0,#2

add r0,r0,#3

ldr r2, .L3

str r0, [r2, #0]

. . .

.L3:

.word cval

어셈블러

Page 46: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM GAS pasm.s page 1

1 .file "func.c"

2 .text

3 .align 2

4 .global main

5 .type main, %function

6 main:

7 0000 0DC0A0E1 mov ip, sp

8 0004 00D82DE9 stmfd sp!, {fp, ip, lr, pc}

9 0008 04B04CE2 sub fp, ip, #4

10 000c 04D04DE2 sub sp, sp, #4

11 0010 FEFFFFEB bl func

12 0014 0200A0E3 mov r0, #2

13 0018 030080E2 add r0, r0, #3

14 001c 14209FE5 ldr r2, .L3

15 0020 000082E5 str r0, [r2, #0]

16

17 0024 0030A0E1 mov r3, r0

18

19 0028 10300BE5 str r3, [fp, #-16]

20 002c 10301BE5 ldr r3, [fp, #-16]

21 0030 0300A0E1 mov r0, r3

22 0034 08A89DE8 ldmfd sp, {r3, fp, sp, pc}

23 .size main, .-main

24 .align 2

25 .global func

28 .L3:

29 0038 00000000 .word ival

30 .size func, .-func

31 .comm ival,4,4

32 .ident "GCC: (GNU) 3.4.5“

ARM GAS pasm.s page 2

DEFINED SYMBOLS*ABS*:00000000 func.c

pasm.s:6 .text:00000000 mainpasm.s:7 .text:00000000 $apasm.s:29 .text:00000038 $d

*COM*:00000004 ival

UNDEFINED SYMBOLSfunc

.file "func.c"

.text

.align 2

.global main

.type main, %functionmain:

mov ip, spstmfd sp!, {fp, ip, lr, pc}sub fp, ip, #4sub sp, sp, #4bl funcmov r0, #2add r0, r0, #3ldr r2, .L3str r0, [r2, #0]

mov r3, r0

str r3, [fp, #-16]ldr r3, [fp, #-16]mov r0, r3ldmfd sp, {r3, fp, sp, pc}.size main, .-main.align 2.global func.type func, %function.align 2

.L3:.word ival.size func, .-func.comm ival,4,4.ident "GCC: (GNU) 3.4.5"

int ival;

int main()

{

ival = 3;

ival += 2;

}

compiler

assembler

이 코드가 메모리에전송되고CPU가 읽어 실행하는코드

Page 47: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM 명령어의 특징

¨ 32비트로 한 개의 기계어 명령 구성

¨ Operand가 32비트의 명령어와 결합

¤ CISC는 명령어 다음에 operand 존재

¤ 32비트 operand 데이터를 취급하기 위해 한 개 또는 2개의 명령어가 필요

¨ STACK 관련 명령어가 없고, 블록 명령으로 대신

¤ BL : 리턴 주소값 레지스터에 대피 R14(LR)

¤ 이에 비해 CISC는 CALL실행 시 STACK 사용.

Page 48: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 0 – 프로그램 적체

R0

R1

. . .

FLAG

data bus

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]0010 02 . . . . . .

0200A0E3

14209FE5

000082E5

0310A0E3

00

04

08

0c

memory

ALU

BarrelShifter

MUL

Bus MUX

Page 49: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 1 – fetch : 기계어 명령 읽기

R0

R1

. . .

FLAG

•처음 00000000번지 기계어를 읽는다. •명령어 E3A00002는 데이터를 R0레지스터로 옮기라는명령으로 규정 -> 해석

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A00002

명령어 버퍼 명령어 해석

PC(R15)Addr.bus

000000002

Bmux

data bus

14209FE5

000082E5

0310A0E3

0200A0E3.00

.04

.08

.0C

000000000

Page 50: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 2 – 실행: 데이터를 R0에 넣기

R1

. . .

FLAG

. . .

ALU

• 명령중 데이터만을 레지스터에 넣는다. •명령 한 개가 종료 됨.

R0 00000002

BarrelShifter

MUL

Amux

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A00002

명령어 버퍼 명령어 해석

000000000 PCAddr.bus

000000002

Bmux

data bus

14209FE5

000082E5

0310A0E3

0200A0E3.00

.04

.08

.0C

Page 51: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 3 – fetch : 기계어 명령 읽기

R0

R1

. . .

FLAG

data bus

•다음 00000004번지 기계어 읽기•명령어 E3A01003 해석

ALU을 통해 더하기 -> 해석

14209FE5

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A01003

명령어 버퍼 명령어 해석

PCAddr.bus

000000003

Bmux

Amux

000000004

Page 52: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 4 – add 실행

R1

. . .

FLAG

data bus

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A01003

명령어 버퍼 명령어 해석

•다음 00000004번지 기계어 읽기•명령어 0210A0E3해석

ALU을 통해 더하기 -> 해석

14209FE5

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

000000004 PCAddr.bus

R0 00000002

000000003Amux

Bmux

00000005

000000003

000000002

N=0Z=0C=0V=0

Page 53: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 4-1 add 실행 후 R0에 저장

R1

. . .

data bus

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A01003

명령어 버퍼 명령어 해석

• 클럭의 에지에 맞추어 R0에 저장• 에지후, A-MUX disable 됨• ALU의 A 버스는 0xXXXXXXXX

14209FE5

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

000000004 PCAddr.bus

R0 00000005

000000003Amux

Bmux

00000005

000000003000000002

FLAG 0xxxxxxx

N=0Z=0C=0V=0

Page 54: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 5 – fetch : ldr

R0

R1

FLAG

data bus

•다음 00000008번지 기계어 읽기•명령어 E59F2014 해석

.L3(00000004)을 R2에 저장

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E59F2014

명령어 버퍼 명령어 해석

PCAddr.bus

000000054

Bmux

Amux

00000000814209FE5

R2

. . .

Page 55: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 6 – ldr 실행

R0

R1

FLAG

data bus

• operand 값 .L3(00000054)을R2에 저장

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E59F2014

명령어 버퍼 명령어 해석

PCAddr.bus

000000054

Bmux

Amux

00000000814209FE5

. . .

R2 00000054

int ival; -> 0x00000054에 할당

int *pival;

pival = &ival;=> 컴파일러에 의해 R2로 지정

Page 56: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 7 – fetch : str

R0 00000005

R1

FLAG

data bus

•Str fetch•명령어 E5820000 해석

R2의 주소에 R0의 값 저장

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E5820000

명령어 버퍼 명령어 해석

PCAddr.bus

000000000

Bmux

Amux

14209FE5

R2 00000054

. . .

00000000C

Page 57: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

Step 8 – str 실행

R1

FLAG

data bus

•Str fetch•명령어 E5820000 해석

R2의 주소에 R0의 값 저장

000082E5

0310A0E3

.00

.04

.08

.0C

0200A0E3

ALU

BarrelShifter

MUL

. . .

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E5820000

명령어 버퍼 명령어 해석

PCAddr.bus

00000000

Bmux

Amux

14209FE5

. . .

R2 00000054

R0 00000005

00000005

.50

.54

.58

.5C

xxxxxxxx

xxxxxxxx

xxxxxxxx

00000000C

00000054

00000005

address bus

Page 58: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM 동작 속도 높이기

74 00

MOV A,00H ADD A,02H

25 02 F5

MOV 0A0,A

A0

FETCH OPRAND FETCH OPRAND FETCH OPRAND

데이터

E3A00002 decode XX파이프1

E3A01003 실행 XX XX

E59F2014 실행 XX

E5820000 주소계산

파이프2

파이프3

파이프4

실행 실행

prefetch

* 8051없는 가상의 개념 (80486, ARM등에 존재)

주소 기계어 어셈블러reset:

0000 0200A0E3 mov r0,#20004 0310A0E3 add r0,r0,#30008 14209FE5 ldr r2, .L3000C 000082E5 str r0, [r2, #0]

E3A00005

mov r0,#2

add r0,r0,#3

ldr r2,.L3

str r0,[r2,#0]

실행

decode

decode

decode 전송

Page 59: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU

장치 개발

Page 60: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

장치 개발 과정

¨ 목적이 정해지면 목적에 맞는 칩을 선정

¨ 회로 설계

¨ PCB 제작

¨ CPU 개발 환경 구축¤ CPU에 맞는 환경이 다름

¨ 프로그램 작성

¨ 프로그램 실행과 디버깅 반복

¨ 생산 및 판매

Page 61: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

CPU와 프로그램

¨ 목적이 맞는 프로그램은 시스템 특성에 따라 C와 어셈블러로 작성

C

어셈블리 코드

OBJ(Object)

LIB(Library)

EXE, HEXcode+

Linker

Compiler

Assembler

개발툴 만드는 회사가 작성printf(), strcpy(), sin(), …

Page 62: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

프로그램과 메모리 사용

¨ 기계어 코드(ROM/RAM)

¤ 명령이 처리위한 기계어 코드 영역

¨ 변수 데이터 (RAM)

¤ 명령이 실행될 때 데이터가 저장되는 공간

¨ 고정 데이터 (ROM/RAM)

¤ 명령이 실행될 때 변하지 않는 변수 공간

int a;

int main()

{

a = 10;

a++;

printf(“a=%d”,a)

return 0;

}

Page 63: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

컴파일러와 개발 툴

¨ 컴파일러는 각 CPU에 따라 다르게 작성된다.¤ CPU의 종류가 다르면 다른 컴파일러가 필요하다.

¤ 컴파일러는 구입하는 것이 일반적이다.

¤ 같은 CPU라도 컴파일러 판매회사는 다름

n 8051 : IAR, Keil

¨ 어셈블러는 주로 CPU 생산 업체에서 공급한다.¤ C를 사용하지 않는다면 컴파일러 구입없이 간단히 개발

할 수 있다.

Page 64: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

메모리 프로그램 전송 방식

¨ 작성된 프로그램이 실행하기 위해 최종에는 메모리에 전송이 필요 (CPU의 동작 없이)¤ CPU와 메모리 존재의 형태에 따라 전송 방식을 다르다.

¤ 코드 영역이 EPROM일 경우

n EPROM을 롬라이터를 사용하여 쓴다.

¤ 외부 FLASH을 사용 일 경우

n CPU가 JTAG을 지원할 경우는 JTAG 라이터로 전송

¤ 내부 FLASH을 사용 할 경우

n CPU에서 라이터(ISP또는 JTAG)을 사용하여 전송

Page 65: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

코드 영역이 EPROM

¨ EPROM이 CPU 내부에 있는 경우도 마찬가지

8031

EPROM

RAM

롬라이터PC

UARTUSB

ROMWriter

program소켓

Page 66: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

롬라이터와 EPROM 지우기

•자외선 형광등•타이머에 의해 자동 꺼짐

타이머

Page 67: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

내부 FLASH을 사용(AT89LP2052)

¨ EPROM이 CPU 내부에 있는 경우도 마찬가지

PC

LPT

버퍼

ISPWriter

program

Page 68: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AT89LP2052

PC

LPTISPISP

Writer

Page 69: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

외부 FLASH을 사용

¨ JTAG-임베디드 CPU의 경우가 대표적

PC

LPT버퍼JTAG

Writerprogram

ARM

JTAG

ARMcore

FLASHcontrol

FLASH

TDI

TDO

TMS

TCK

TRST

JTAG 케이블

74HC541

Page 70: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

프로그램 디버깅 체계 1

¨ 에뮬레이터 장비¤ MCU 계열은 메모리가 한 칩에 있어 메모리 용량 때문에 코드를

RAM에서 실행 시킬 수 없다

¤ CPU을 대신하여 프로그램을 대신할 수 있는 장비가 필요

¤ 장비의 커넥터를 PCB에 연결하여 CPU 대신 동작 시켜 회로와프로그램을 확인 한다.

¤ 장비 값이 비싸나 디버깅이 쉬워 개발 기간 단축

¨ 전자적으로 쓸 수 있는 FLASH의 사용으로 직접 프로그램을 전송¤ 특별할 장비가 필요 없어 에뮬레이터 장비 구입비 없음

¤ 간단한 전송 장치를 써고 디버깅이 불편하다.

¤ UART을 통해 실행 상황을 PC로 전송하여 디버깅할 수 있다.

Page 71: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

프로그램 디버깅 체계 2

¨ ISP로 내부 FLASH 사용할 경우¤ RAM의 용량이 제한되어 있어 프로그램을 RAM에 넣을

수 없다.

¤ 매번 ISP로 프로그램을 전송 한다.

¨ 외부에 메모리를 추가하여 RAM에 프로그램을넣을 수 있는 경우¤ 프로그램을 매번 RAM 넣고 실행 후 최종적으로

ROM/FLASH로 옮겨 실행 한다.

¤ 이때 전송은 ROM 프로그램의 실행을 통해 PC와 통신하여 RAM으로 프로그램을 전송 한다.

¤ 통신은 UART(RS-232C), USB, ETHERNET 사용할 수있다.

Page 72: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

에뮬레이터 장비 사용

Page 73: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

에뮬레이션 방식

에뮬레이터

PC

목적 프로그램 작성

목적 프로그램 에뮬레이터에 전송

실행 후 오류 확인

오류?

실제 8052 부착하고 프로그램 전송

IDE 툴

8052커넥터

error

No error

PCB

Page 74: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

8031의 디버깅 체계(외부 메모리)

8031

EPROM

RAMSerial

PC

EPROM에 PC와 통신하여코드를 RAM 복사할 수 있는 프로그램 작성 후 굽는다

목적 프로그램 작성

목적 프로그램 RAM에 전송

실행 후 오류 확인

오류?

최종 코드를 ROM에 전송 후 실행

코드 전송 용프로그램

모니터

error

No error

Page 75: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AT89LP2052 ISP FLASH

AT89LP2052

ISP

PC

목적 프로그램 작성

목적 프로그램 FLASH에 ISP로 전송

실행 후 오류 확인

오류?

추가 전송 없이 사용

ISP writer

FLASH

8051core

error

No error

Page 76: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ARM의 디버깅 체계(외부 메모리)

ARM

FLASH

RAMSerialUSB

PC

FLASH에 PC와 통신하여코드를 RAM 복사할 수 있는 프로그램 작성 후 JTAG로 전송

목적 프로그램 작성

목적 프로그램 RAM에 전송

실행 후 오류 확인

오류?

최종 코드를 FLASH에 전송 후 실행

코드 전송 용프로그램

bootloader

error

No error

JTAG

PC

Bootloader에 의해RAM에 복사됨

CPU 개입 없음초기 FLASH에 쓰기

CPU의 프로그램에의해 통신 및 쓰기

Page 77: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러의 정의

¨ 마이크로 프로세서¤ 프로세서를 하나의 칩안에 집적하여 넣어 소형화한 형태

¤ 컴퓨터의 발전과 함께 고성능의 프로세서로 발전했으며, 최근에는 64비트의 고성능 프로세서들이 출시되고 있음.

¤ 마이크로 프로세서는 점점 고성능화 하면서 범용 컴퓨터에 사용됨.

¨ 마이크로 프로세서의 발전¤ 1971년 Intel사 4bit 마이크로프로세서 4004 개발

¤ 이후 여러 회사에서 8bit 마이크로프로세서 개발n Intel : 8008(’72), 8080(’74), 8085(’76) n Motorola : MC6800(’74), MC6805(’76), MC6809(’77) n Zilog : Z80(’76)

¤ 이후 8, 16, 32, 64bit 마이크로프로세서 개발n Intel : 80186, 80286, 80386, 80486,Pentium, …… n Motorola : 68000, 68020, 68040, 68060, ……

Page 78: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러의 정의

¨ 마이크로컨트롤러(MCU: Micro Controller Unit)¤ 지능화와 소형화를 위하여 마이크로 프로세서에 메모리와 각종 주변장치들

을 함께 집적하여 넣은 칩

¤ 마이크로 프로세서 코어, 여러 가지 크기와 다양한 종류의 메모리, 여러 종류의 주변장치, 여러 종류의 입출력 포트를 하나의 칩에 집적

¤ 여러 응용분야에 필요한 주변기기들을 한 칩 내에서 모두 제공.

¨ 마이크로컨트롤러의 발전¤ 1975년 : Texas Instrument TMS1000 개발(마이크로컨트롤러의 시초)

(1971년 Intel 4bit 마이크로프로세서 4004 개발)

¤ 1976년 : Intel 8bit M/C 8048(MCS-48) 개발

Motorola 8bit MC6801 개발

¤ 1980년 : Intel 8bit M/C 8051(MCS-51) 개발

¤ 1982년 : Intel 16bit MCS-96 개발

¤ 1988년 : Intel 32bit M/C 80960 개발

¤ etc.

Page 79: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러

¨ 마이크로컨트롤러(MCU)의 특징¤ 주변장치들을 센싱 및 제어하기 위한 I/O 능력이 강화

¤ 타이머/카운터, 통신포트 내장 및 인터럽트 처리 능력 보유

¤ Bit 조작 능력이 강화

¤ 제품의 소형화 및 경량화

¤ 제품의 가격이 저렴(부품비, 제작비, 개발비 및 개발시간 절감)

¤ 융통성 및 확장성이 용이(프로그램만 변경)

¤ 신뢰성이 향상(부품 수 적어 시스템 단순, 고장율 적고, 보수편리)

Page 80: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러

¨ 마이크로컨트롤러(MCU)의 응용

¤ 산업 : 모터 제어, 로봇 제어, 프로세스 제어, 수치 제어, 장난감 등

¤ 계측 : 의료용 계측기, 오실로스코프 등

¤ 가전제품 : 전자레인지, 가스오븐, 전자밥솥, 세탁기 등

¤ 군사 : 미사일 제어, Torpedo 제어, 우주선 유도 제어 등

¤ 통신 : 휴대폰, 모뎀, 유무선 전화기, 중계기 등

¤ 사무기기 : 복사기, 프린터, plotter, 하드디스크 구동장치 등

¤ 자동차 : 점화 타이밍 제어, 연료 분사 제어, 변속기 제어 등

¤ 생활 : 전자시계, 계산기, 게임기, 금전등록기, 온도조절기 등

Page 81: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러

¨ 마이크로컨트롤러(MCU) 제조사

¤ Motorola(FreeScale) : MC6805, MC68HC16, MC68332, HCS12

¤ Samsung : KS51, KS88, KS16, KS32

¤ Microchip : PIC16/17

¤ Atmel : AVR시리즈, 8051시리즈

¤ Zilog : Super-8

¤ Stmicro : STM32 시리즈

¤ Texas Instrument : MSP시리즈

¤ etc.

Page 82: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

마이크로컨트롤러

¨ 마이크로컨트롤러(MCU)의 발전 방향

¤ 고성능화

n 32비트 ARM 코어를 내장한 고성능 마이크로 컨트롤러

¤ 다기능화

n 다양한 특수 기능들을 내장한 다기능 마이크로컨트롤러

¤ 소형화

n 초소형 임베디드 시스템 장착을 위한 초소형 마이크로컨트롤러

¤ 저전력화

n `소형 배터리로 장시간 동작이 가능한 초저전력 마이크로컨트롤러

¤ 저가격화

n 1$ 이하의 가격을 가지는 저가격 마이크로컨트롤러

Page 83: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AVR 마이크로컨트롤러

¨ AVR 마이크로컨트롤러

¤ ATMEL사가 1997년에 처음 발표한 8비트 제어용 마이크로프로세서

¤ Alf-Egil Bogen과 Vegard Wollan의 진보된 RISC 기술을 기반되었다고 하여 첫 글자를 따서 AVR이라고 명명

¤ 많은 장점 때문에 상대적으로 늦게 출시되었음에도 불구하고 8051이나PIC을 능가하는 인기를 단시간내에 얻게 되었음.

Page 84: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AVR 마이크로컨트롤러

¨ AVR 마이크로컨트롤러의 특징

¤ RISC (Reduced Instruction Set Code) 구조

¤ 하버드 아키텍처(Harvard Architecture)

¤ 32개의 8비트 범용 레지스터를 가지는 레지스터 중심형 구조

¤ CMOS 기술 채택으로 소비전력이 매우 적고 동작전압이 1.8-5.5V로 큼

¤ 다양한 동작 모드를 제공해 저전력 동작 지원

¤ 1K-256Kbyte 플래시롬, EEPROM 및 SRAM이 작은 칩 하나에 내장.

¤ 유사 RISC 구조와 32개의 레지스터 사용과 고집적으로 1MHz당 1MIPS의 처리속도.

¤ 8핀에서 100핀의 외형과 이에 상응하는 메모리와 기능을 갖는 다양한 시리즈의제품이 존재

¤ 모델에 따라 매우 다양한 I/O 기능을 사용 가능

¤ 외부 시스템 버스를 이용하여 데이터 메모리 또는 I/O 디바이스를 확장 가능.

¤ 다양한 인터럽트 소스와 처리 기능 보유.

¤ 무료 개발 도구인 AVR Studio등, 다양하고 값싼 개발 도구 제공.

¤ ISP(In System Program) 기능 제공.

Page 85: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

AVR 마이크로컨트롤러

¨ AVR 마이크로컨트롤러의 종류

¤ Tiny시리즈n 핀수가 8-24핀 정도의 작은 외형n 대부분 외부 시스템버스가 없음n 작은 메모리 용량(내부에 1K-2K byte 정도의 플래시 메모리를 보유)n 저속 저성능

n 저가격(소형제어기에 적당).

¤ Mega시리즈n 28-100핀 정도의 외형n 큰 메모리 용량(내부에 8K-256Kbyte 정도의 플래시 메모리와 256-4K

byte정도의 EEPROM과 512-4K byte의 SRAM을 내장)n 고속 고성능(20MHz의 클럭에서 20MIPS의 속도, 다양한 기능)n 고가격.

¤ AT90시리즈n 중간정도 사양을 가진 시리즈로 현재는 널리 사용되지 않음.

Page 86: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 마이크로컨트롤러

¨ ATmega128 마이크로컨트롤러

¤ Atmel사의 8-bit 마이크로컨트롤러

¤ 고기능의 AVR Mega 시리즈 중에서도 가장 고성능 대용량의마이크로컨트롤러임.

Page 87: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 특징

¨ ATmega128 사양

¤ 고성능 저전력 AVR 8bit Microcontroller ¤ 향상된 RISC 아키텍쳐(16MIPS @ 16Mhz)¤ 133종 명령세트 (in 1 cycle) ¤ 32 x 8bit 범용 레지스터 + 주변 컨트롤 레지스터/Multiplie (in 2 cycle)¤ 16MHz에서 16MIPS progress ¤ 비휘발성 프로그램과 데이터 메모리¤ 128K Byte 내부 프로그램 가능한 ISP Flash memory¤ 선택적인 Boot code section (used In-System Programming by On

-chip Boot Program)¤ ISP (In System Programming)를 통해 어플리케이션 영역과 부트영역

에 있어 F/W 다운로드 가능¤ 4K Byte EEPROM ¤ 4K Byte 내부 SRAM ¤ 외부 최대 64K 메모리공간¤ 프로그램 Lock-ISP을 위한 SPI 인터페이스¤ 내장 메모리 Programing과 On-Chip Debug를 위한 JTAG 포트 지원

Page 88: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 특징

¨ ATMega128 주변장치 특징

¤ 2개의 8비트 타이머/카운터(Timer/Counter)(0,2), 2개의 16비트 타이머/카운터(1,3)

¤ 2개의 8bit PWM 채널

¤ 6개의 프로그램 가능한 2~16bit PWM 채널

¤ 분리된 프리스케일러와 비교모드, 캡쳐모드를 가진 두개의 확장 16비트타이머/카운터

¤ 분리된 오실레이터에 의한 Real Time Count

¤ Output Compare Modulator

¤ 8 채널, 10bit ADC

¤ Two-wire Serial 인터페이스

¤ 두개의 시리얼 UART

¤ Master/Slave SPI 시리얼 인터페이스

¤ 프로그램 가능한 워치독(Watchdog) 타이머

¤ 아날로그 비교기

Page 89: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 특징

¨ ATMega128 마이크로컨트롤러 코어(Core) 특징

¤ Power-on Reset, 안정된 전원공급을 위한 Programmable

Brown-out Detection

¤ 내부 RC 오실레이터

¤ 외부와 내부의 인터럽트 소스

¤ 6개의 Sleep 모드

¤ 소프트웨어적으로 선택 가능한 클럭 주파수

¤ 전체 풀업 Disable* I/O 와 Package

¤ 프로그램 가능한 53개의 I/O

¤ 64-lead TQF / 64-pad MLF* Operation Voltage

¤ 2.7 ~ 5.5V : ATmega128L* 속도- 0 ~ 8 MHz : ATmega128L

Page 90: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 내부구조

Page 91: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 외형과 핀기능

¨ ATmega128 패키지

¤ 64pin

¤ TQFP 혹은 MLF

¤ 6개의 범용 입출력 포트제공

Page 92: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 핀기능

¨ 제어 신호

¤ RESET(핀20) : 시스템 리셋신호.

¤ XTAL1, XTAL2(핀24,23) : 발진용 증폭기 입력 및 출력 단자.

¤ Vcc(핀21,51) : 전원 입력 단자.

¤ GND (핀22,53,63) : 그라운드 입력 단자.

¤ AVCC(핀64) : AD변환기 및 포트 F에 대한 공급 전압

¤ AREF(핀62) : ADC 참조 전압(Reference Voltage)

¤ PEN(핀1) : Programing Enable 신호. 파워 온 리셋시 0상태로 유지해 SPI를 허용하게 한다.

Page 93: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 핀기능

¨ 범용 입출력 신호

¤ 포트A (PA7~PA0:핀44-51) : 8비트 양방향 입출력 단자. 외부메모리를둘 경우에는 주소버스(A7-A0)와 데이터버스(D7-D0)로 사용.

¤ 포트B (PB7~PB0:핀10-17) : 8비트 양방향 입출력 단자. SPI용 단자혹은 PWM 단자로도 사용

¤ 포트C (PC7~PC0:핀35-42) : 8비트 양방향 입출력 단자. 외부메모리를둘 경우에는 주소버스(A15-A8)로 사용.

¤ 포트D (PD7~PD0:핀25-32) : 8비트 양방향 입출력 단자. 타이머용 단자 혹은 외부인터럽트용 단자로 사용.

¤ 포트E (PE7~PE0:핀2-9) : 8비트 양방향 입출력 단자. 타이머용 단자, 외부인터럽트, 아날로그 비교기, USART용 단자로 사용.

¤ 포트F (PF7~PF0:핀54-61) : 8비트 양방향 입출력 단자. AD변환기 혹은 JTAG 인터페이스용 단자로도 사용.

¤ 포트G (PG4~PG0:핀19, 18, 43, 34, 33) : 5비트 양방향 입출력 단자. 외부 메모리 스트로브 신호, RTC 타이머용 발진기 단자로 사용.

Page 94: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ ATmega128 메모리 구조

¤ 하버드 구조를 가짐

¤ 프로그램 메모리 : 프로그램 코드를 저장하고 실행시키기 위해 필요

한 메모리

¤ 데이터 메모리 : 프로그램 실행에 필요한 데이터를 저장하는 메모리

n RAM

n 레지스터

n SRAM

n ROM

n EEPROM

n 외부 데이터 메모리

Page 95: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

Page 96: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 프로그램 메모리¤ 프로그램 코드를 저장하고 실행하기 위해 필요한 메모리

¤ 내부 128KB(byte)에 해당되는 플래시 메모리

¤ 각 번지가 16bit씩 이뤄져 있음.

¤ Boot flash Section과 Application flash Section으로 나뉘어져 있

음(Self-Programming 지원)

n Application flash Section : 프로그램 코드를 저장하는 공간

n Boot Flash Section : Boot Loader HEX코드를 저장하는 공간

n BootLoader를 이용하여 ISP 없이도 소프트웨어 업그레이드 가능

Page 97: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 데이터 메모리(레지스터)

¤ 프로그램 이 실행될 때 임시로 데이터를 저장하는 고속 메모리

¤ 2가지 종류로 나뉘어 짐

n 범용 레지스터(General Purpose Register)

n ALU 연산에 필요한 데이터들을 임시로 저장하는데 사용

n 특수기능 레지스터(Special Function Register)

n 칩의 I/O 제어나 상태보고 등의 특별 기능들을 수행

Page 98: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 범용레지스터

¤ R0~R31까지 32개의 범용레지스터를 보유

Page 99: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 특수기능 레지스터

¤ 칩의 I/O 제어나 상태보고 등의 특별 기능들을 수행

¤ 2가지 종류로 나뉘어 짐

n I/O 레지스터

n 64바이트 (0x20에서 0x5f번지) 로 구성

n 내장된 각종 I/O 장치를 제어

n 상태레지스터(SREG) : ALU의 연산 후 상태와 결과를 표시

n 스택 포인터 (SP) : 스택 위치 표시

n 확장 I/O 레지스터

n 160바이트(0x60에서 0xff번지)로 구성

n ATmega128에 추가된 각종 I/O를 제어

Page 100: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 데이터 메모리(내부 SRAM)

¤ 4K의 SRAM이 내장(메모리 번지는 $0100~$10FF까지 포함)

¤ 내부 프로그램 코드에 의해 발생되는 데이터를 일시적으로 저장

¤ 프로그램에서 사용자 변수의 저장영역이나 스택 영역으로 사용

¤ 일반 모드와 ATmega103호환 모드로 나뉘어 짐

¨ 데이터 메모리(EEPROM)

¤ 전원이 꺼지더라도 지속적으로 그 값을 유지해야 할 필요가 있는 별도의 데

이터를 저장하기 위해 사용되는 메모리

¤ 총 용량 4KB(byte)로 구성

Page 101: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 메모리 구조

¨ 외부 데이터 메모리

¤ 0x1100-0xffff번지에 외부 데이터 메모리를 연결하여 사용 가능

¤ 외부 램, 외부 플래쉬 롬 또는 LCD나 AD변환기와 같은 주변장치의 인터페

이스용으로 사용 가능

¤ 외부메모리 인터페이스 기능

n 주변장치와 적절한 인터페이스를 위한 0-3의 대기 사이클 지정 가능.

n 2개의 섹터로 외부 데이터 메모리를 분할하고 이들에 독립적인 대기 사이클을 지

정할 수 있음.

n 16비트 주소의 상위바이트 중에서 필요한 갯수의 비트만을 주소 버스로 동작하게

할 수 있음.

n 데이터 버스의 신호들이 동작할 때 전류 소비량이 감소되도록 BUS-keeper 기능

을 설정할 수 있음.

Page 102: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 클록

¨ ATMega128 클록 종류

¤ 다양한 소스에 의해 클록을 발생시키고 분배가 가능.

¤ 소비 전력을 절약시키기 위해 개별적으로 공급 차단 가능

¤ 입력 클록의 종류

n CPU 클록 : 범용레지스터, 상태레지스터, 데이터 메모리와 같은 AVR의 핵심적인

동작과 관련된 클록.

n I/O 클록 : 타이머, SPI, USART 등 I/O모듈 대부분에서 사용되는 클록

n 플래쉬 클록 : 플래쉬롬과의 인터페이스를 제어하는 클록.

n 비동기 타이머 클록 : 외부 32kHz 수정 발진기를 소스로 하는 비동기 타이머용 클

록.

n AD변환기 클록 : AD변환기용의 클록.

Page 103: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 클록

¨ ATMega128 클록 발생원

¤ 5가지의 클록발생원이 존재

¤ CKSEL3~0와 SUT1~0, XDIV 레지스터를 이용하여 클록발생원과 주파

수를 설정

¤ 다섯가지 클록 발생원

n 내부 RC(디폴트 클록) 발진기 : 내장된 RC 발진기를 사용하는 경우

n 외부 RC 발진기 : 정밀한 타이밍이 요구되지 않는 용도로 외부에 RC 소자를 접

속한 발진회로를 사용.

n 외부 수정 발진기 : 외부에 크리스탈 또는 세라믹 레조네이터를 사용하는 경우

n 저주파 수정 발진기 : 외부에 32.768kHz의 낮은 주파수 크리스탈을 사용하는

경우

n 외부 클록 : 외부 다른 보드(8051보드, PIC보드)등의 클럭을 가져와 XTAL1단

자에 연결.

Page 104: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 Sleep모드

¨ ATMega128 Sleep 모드

¤ 전원을 절약할 수 있는 6가지의 다양한 슬립모드가 제공

¤ MCUCR(MCU Control Register)레지스터를 설정하여 모드를 선택하고,

SLEEP 명령을 실행하여 슬립모드에 돌입하도록 함.

¤ 6가지 SleepMode

n Idle모드

n ADC noise reduction 모드

n Power-down 모드

n Power-save 모드

n Standby 모드

n Extended Standby 모드

Page 105: Chapter. 1 마이크로컨트롤러개요artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/제1장 AVR... · 으로구현 ¤최근이말은OS ... void Calc() {int val; val = 2;

ATMega128 Reset 모드

¨ ATMega128 Reset 모드

¤ 정상적으로 동작하고 있는 마이크로컨트롤러가 리셋되면 모든 I/O레지스

터값이 디폴트값으로 초기화되고, 프로그램은 리셋 벡터에서 시작된다.

¤ 리셋의 5가지 발생원

n Power-on Reset : 전원전압 VCC의 전압 레벨에 따른 리셋

n External Reset : /RESET 핀에 의한 외부 리셋

n Watchdog Reset : 워치독 타이머에 의한 리셋

n Brown-out Reset : Brown-out Detector에 의한 리셋.

n JTAG AVR Reset : JTAG 시스템에 의한 리셋.