마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1

Slides:



Advertisements
Similar presentations
AVR 응용 라인트레이서 AVR 소개 및 라인트레이서조립 2012 – AVR 응용 라인트레이서 부산대학교 기계공학부 생산자동화 실험실 박사과정 조광호.
Advertisements

마이크로콘트롤러 설계 – 4 Timer 실습 2 – T1, T3
KT-M128 Peripheral Device
마이크로 컨트롤러 Microcontroller.
AVR 실습.
4. ADC 충북인력개발원 전자과 공학박사 강원찬.
임베디드 프로그래밍 Lecture #
One Step Closer - AVR ATMEGA128 -
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
리니어 스케일 김한수.
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
ATMega128 I/O Ports KyungHee Univ..
마이크로프로세서 메모리 및 입출력장치 인터페이스
마이크로프로세서(Microprocessor,µP)
2013 스마트 컨트롤러 중간 프로젝트 김성엽 진종영 조유진
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
마이크로프로세서 응용 및 실습 (AVR Microprocessor) 정 원 근.
10장 주변장치 (PIO) Slide 1 (of 28).
DC Motor Control.
RnA DISPLAY 구동 Clcd 구동 Made by Bonobonobono.
ATmega 128 MCU를 이용한 MP3 보드 제작 김태호 김소정.
2 AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
자동제어 실험(2) 라인트레이서 제어.
ATmega128 CH 1 Atmega 128 Board CodeVision.
Introduce to ATmega128 & Codevision
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
컴퓨터 구조.
컴퓨터 중앙처리장치, 기억장치, 입력장치 및 출력장치를 알아보자.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Arduino uno의 Hardware 구성부품의 종류와 그 용도.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
DSP 소개 및 TMS320LF2407A 6th hyaoo.
조도 센서 김한수.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
AVR - Chapter 2 황 지 연.
AVR Studio 소개 1. AVR Studio의 다운로드 - AVR Studio 관련 홈페이지 -
DK-128 ADC 실습 아이티즌 기술연구소
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
ATmega128의 구조 및 TOOL의 이해 Robotics_LAB 발표자 : 유 홍 선.
AVR - Chapter 12 황 지 연.
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소 김태성 연구원
제 2장 컴퓨터동작의 기본 개념.
다섯째날 : 외부 인터럽트 - 당근이의 AVR 갖고 놀기 - 당근닷컴
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
                                  1장. 디지털 회로의 개요 디지털 회로란? 디지털 IC의 개요.
Microprocessor I/O Port & CLCD Noh Jin-Seok.
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
Computer System Architecture
PIC16C84의 외형 RA2 1 RA1 I/O PIN I/O PIN RA3 RA0 RTCC OSC1 발 진 RESET
8051 IO-PORT 정보통신•컴퓨터 공학부 송명규
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
Moving Walk 17조 장철훈 장황재 이연호.
디지털공학 및 실험 디지털 공학: 부울대수를 기반으로 하는 논리적인 회로의 입출력에 대하여 공부하고 이를 응용한 기능을 설계하는 과목. 부울대수: 참, 거짓 두 종류의 입력(출력)데이터와 AND, OR, NOT 등의 연산자사이의 관계를 정의해 놓은 학문분야. 값의 명칭:
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
AVR - Chapter 3 황 지 연.
작동 원리 Keypad 박민호.
DK-128 직렬통신 실습 아이티즌 기술연구소
아두이노 프로그래밍 Lecture #
임베디드 하드웨어 Lecture #6.
Lecture 7 7-Segment LED controller using u-controller
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
Presentation transcript:

마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1

ATmega128 마이크로컨트롤러의 특징

ATmega128의 특징 고성능의 저전력 RISC 구조 133개 명령어 (대부분 한 사이클로 실행) 32*8 비트 범용 작업 레지스터 16MHz에서 16MIPS 명령 처리 속도, 곱셈기 2사이클 실행 데이터 및 비휘발성 메모리 128K 바이트 ISP 방식 프로그램용 플래시 메모리 4K 바이트 SRAM, 4K 바이트 EEPROM 64K 바이트 메모리 주변장치 ISP 기능을 갖는 SPI 인터페이스 JTAG 인터페이스 53개의 IO핀 리셋을 포함한 35개의 인터럽트 소스

프리스케일러를 갖는 2개의 8비트 타이머/카운터, 2개의 16비트 타이머/카운터 8채널 10비트 AD 컨버터와 아날로그 비교기 TWI, SPI 인터페이스, 2개의 USART 독립적인 내장 발진기에 의한 워치독 타이머 특수 기능 6개의 슬립 모드 내부 RC 오실레이터와 외부 크리스탈을 연결하기 위한 발진회로 내장 외부, 내부 인터럽트 소스 동작 전압 2.7-5.5V (128L), 4.5-5.5V (128) 동작 클럭 0-8MHz (128L), 0-16MHz (128)

ATmega128 마이크로컨트롤러의 특징 AVR 8비트 RISC Mega 시리즈 비교

명령 실행 타이밍의 특징 특징 하버드 아키텍처 : 데이터버스와 어드레스버스 분리 파이프라인 개념 : 병렬 방식의 명령 패치와 명령 실행 1MHZ에서 1MIPS 이상의 속도 가능 단일 클럭에 레지스터 오퍼랜드 패치, ALU 연산 실행, 결과 저장이 이루어짐

ATmega128의 메모리 구조 Flash program memory application flash section 64K * 16 bit instruction (명령어) – 16비트 또는 32비트 SPI 통신을 이용한 ISP, JTAG, 병렬 프로그래밍 방식 10,000번의 쓰기 및 삭제 가능 SRAM 32 registers 64 IO registers 160 Extended IO registers 4096 internal SRAM : 내부 데이터 메모리 64K external SRAM EEPROM data memory 4K byte data EEPROM

주요 레지스터 상태 레지스터(1개) I (global interrupt enable) H (half carry flag) V (2’s complement overflow flag) N (negative flag) Z (zero flag) C (carry flag) 범용 레지스터 (32개) R0 – R31 X, Y, Z 레지스터 (X:R26-27,Y:R28-29,Z:R30-31) 스택 포인터 (16비트) IO register 영역내에 존재

IO 레지스터 (p71 Table 3-1, Table 3-2) DDRB = 0b11111111; // PORTB 출력 설정 PORTB = 0b11111111; // PORTB high 출력

LED 출력 연습 1 - LED 부품 - sink 전류, source 전류 - LED 실습 회로 - PORT 관련 레지스터 - LED 실습

LED 부품 LED 데이터 시트 Vf (forward voltage) : 2.2V(Typ.) / 2.8V(Max.) at 20mA 순방향 전압강하 : LED를 지나면서 발생하는 전압강하 (LED 양단에 걸리는 전압) Vr (reverse voltage) : 5V LED를 켜기 위한 저항 계산 LED에 걸리는 전압 : 2.2V 저항에 걸리는 전압 : Vcc – 2.2 V I = VR/R = 2.8 / 470 = 6mA +5V 470Ω

sink 전류, source 전류 sink 전류 uC나 IC의 출력 단자의 능력을 평가할 때 사용되는 용어로, 들어갈 수 있는 전류량 전원(+5V)에서 부하를 거쳐 출력(low)으로 흐를 때, 출력은 외부 전류를 받아들이는 입장이 되는 데, 이 때를 싱크라 하고, 여기서 흘릴 수 있는 최대 전류가 싱크전류 source 전류 uC나 IC에서 꺼집어 낼 수 있는 전류량 출력이 +5V가 나와서 부하를 거쳐 GND로 전류가 흐를 때 출력에서 낼 수 있는 최대 전류값 AVR +5V AVR

sink/source 전류 회로의 선택 uC나 IC의 소스 전류가 작은 경우 74LS14 TTL IC : sink 8mA, source 0.4mA 10mA 또는 20mA를 요구하는 LED를 source 전류 회로로 구동하는 것은 불가능 LED를 sink 전류 회로로 연결 uC의 소스 전류가 충분한 경우 AVR : sink 40mA, source 40mA source 전류 회로를 이용하여 LED를 직접 구동하는 것이 가능 다만, 다수의 LED를 구동하는 경우, uC의 발열 등에 의하여 회로의 안전성을 해칠 우려가 있음 이에 따라, sink 전류 회로로 연결하는 것이 권장사항임

LED 실습 회로 PC0 +5V PC1 PC7 …..

ATmega128 IO Port 의 특징 Atmega128 IO port의 특징 6개의 8비트 양방향 병렬 IO 포트 (A, B, C, D, E, F) 1개의 5비트 양방향 병렬 IO 포트 (G) 각 핀은 보호용 다이오드와 20-100kΩ의 내부 풀업 저장을 가짐 LED를 직접 구동할 수 있는 40mA의 source, sink 출력 능력을 가짐 IO 포트의 다른 기능 Port A : ADx - 데이터버스와 어드레스 하위 바이트 Port B : 타이머/카운터, SPI 직렬 통신 Port C : Ax – 어드레스 상위 바이트 Port D : 시리얼 통신, 외부 인터럽트, 타이머/카운트, 외부 메모리 Port E : 타이머/카운터, 외부 인터럽트, USART0, 외부 메모리 Port F : A/D 컨버터, JTAG 인터페이스 Port G : 타이머/카운터, 외부 메모리

PORT 관련 레지스터 IO register PORTx (port x data register) : 포트 x 데이터 출력 레지스터 초기값 0 DDRx (port x data direction register) : 포트 x 데이터 방향 설정 레지스터 PINx (port x pin input address) : 포트 x 입력 레지스터 초기값 N/A 읽기만 가능 포트핀의 동작 상태 DDRx – 1, PORTx – 0 : 출력, low 출력 (sink 출력) DDRx – 1, PORTx – 1 : 출력, high 출력 (source 출력)

실습 1 // PORTB를 이용하여 LED 1개 점등 // 소스 전류 회로일 때, LED를 점등하려면 PORTB의 값은 ? #include <mega128.h> // mega128 마이크로콘트롤러 관련 헤더 파일 void main(void) { DDRB = 0xFF; // DDRB : 포트 방향 설정 레지스터 while(1){ // while(1) : 무한 루프 PORTB = 0b11111111; // PORTB : 포트 입출력 레지스터 // 소스 전류 회로일 때 켜지는가? // 싱크 전류 회로일 때 켜지는가? }

실습 2 // PORTD를 이용하여 LED 1개 0.8, 0.2초 간격으로 점멸 // 소스 전류 회로와 싱크 전류 회로로 바꾸어 가면서 실험해 볼 것 // PD0, PD3, PD5번으로 바꾸어 가면서 LED를 연결하고, 해당 비트만 변경해 볼 것 #include <mega128.h> // mega128 마이크로콘트롤러 관련 헤더 파일 #include <delay.h> // delay 함수 정의 헤더 파일 void main(void) { DDRD = 0xFF; // DDRD : 포트 방향 설정 레지스터 // DDRD = 0x00 일 때 결과는 ? while(1){ // while(1) : 무한 루프 PORTD = 0b00000001; // 해당 비트만 on/off 해 볼 것! delay_ms(800); // delay 함수 PORTD = 0b00000000; // 해당 비트만 on/off 해 볼 것! delay_ms(200); // delay 함수 }

실습 3 // PORTC를 이용하여 LED 8개 0.8, 0.2초 간격으로 점멸 #include <mega128.h> // mega128 마이크로콘트롤러 관련 헤더 파일 #include <delay.h> // delay 함수 정의 헤더 파일 void main(void) { DDRC = 0xFF; // DDRC : 포트 방향 설정 레지스터 while(1){ // while(1) : 무한 루프 PORTC = 0b11111111; // PORTC : 포트 입출력 레지스터 delay_ms(800); // delay 함수 PORTC = 0b00000000; // PORTC : 포트 입출력 레지스터 delay_ms(200); // delay 함수 }

실습 4 // PORTC를 이용하여 LED 8개 중 짝수/홀수 LED 0.5초 간격으로 점멸 #include <mega128.h> // mega128 마이크로콘트롤러 관련 헤더 파일 #include <delay.h> // delay 함수 정의 헤더 파일 void main(void) { DDRC = 0xFF; // DDRC : 포트 방향 설정 레지스터 while(1){ // while(1) : 무한 루프 PORTC = 0b01010101; // PORTC : 포트 입출력 레지스터 delay_ms(500); // delay 함수 PORTC = 0b10101010; // PORTC : 포트 입출력 레지스터 }