목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

Similar documents
목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

lecture4(6.범용IO).hwp

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

ATmega128

정보보안 개론과 실습:네트워크

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

목차 1. UART와 RS232 개요 2. ATMega128의 USART 포트 3. UART로 Hello 보내기 4. UART로 PC와데이터주고받기

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

T100MD+

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

[8051] 강의자료.PDF

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

2주차: 입출력 제어 복습

K&R2 Reference Manual 번역본

MicrocontrollerAcademy_Lab_ST_040709

슬라이드 1

CANTUS Evaluation Board Ap. Note

슬라이드 1

1. 제품소개 1.1 제품소개 < 그림 1.1> 도트매트릭스모듈 하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 16x16 도트매트릭스모듈입니다. 또한당사 AVR, PIC, ARM(STM32F) 개발보드와 1P 점퍼클립케이블을이용하여연동이가능하

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

PowerPoint 프레젠테이션

목차 1. TWI(Two Wire Serial Interface) 2. SPI(Serial Peripheral Interface) 3. TWI(I 2 C) 로 EEPROM 붙이기 4. SPI로 Serial Flash Memory 붙이기 5. TWI로온습도센서제어하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

MAX232 MAXIM사에서생산되는 RS-232통신을가능토록해주는송수신 IC이다. 송수신드라이브를각각 2개씩가지고있다. AVR과컴퓨터가인식하는 0과 1의값이다르기때문에.. 마이컴컴퓨터 이차이를해결해주는것이다. 0 0V -10V 1 5V 10V TTL IC 의전원단자와다

Microsoft Word doc

KEY 디바이스 드라이버

슬라이드 1

BY-FDP-4-70.hwp

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

Microsoft Word - PEB08_USER_GUIDE.doc

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

ADP-2480

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr

ATmega128 교재 - 8장 EEPROM.hwp

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

JMOD : ATmega128 기본모듈 사용자설명서 제이씨넷

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - VHDL12_full.ppt [호환 모드]

(SW3704) Gingerbread Source Build & Working Guide

슬라이드 1

API 매뉴얼

Microsoft PowerPoint - Chapter 8_USART Serial Communication

BMP 파일 처리

PowerPoint 프레젠테이션

Lab 3. 실습문제 (Single linked list)_해답.hwp

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - 08-MP-4-interrupt

hd1300_k_v1r2_Final_.PDF

MR-3000A-MAN.hwp

목차 1부. 보드 운영체제와 MCU 보드의 포트 2부. 전압과 전류 그리고 모터 드라이버 3부. 초음파 센서 4부. BOS Script 프로그래밍 5부. W2R -1 소개

Microsoft PowerPoint - chap06-2pointer.ppt

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

Microsoft PowerPoint - polling.pptx

PowerPoint 프레젠테이션

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

ez-md+_manual01

Microsoft PowerPoint - 30.ppt [호환 모드]

2009년2학기 임베디드시스템 응용

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

정보보안 개론과 실습:네트워크

슬라이드 제목 없음

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론

IoT FND8 7-SEGMENT api

ºÎ·ÏB

CAN-fly Quick Manual

1

Microsoft PowerPoint - chap03-변수와데이터형.pptx

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징

Chapter #01 Subject

API 매뉴얼

마이크로프로세서 개요

SRC PLUS 제어기 MANUAL

Transcription:

Chapter. 10 외부메모리인터페이스 HBE-MCU-Multi AVR Jaeheung, Lee

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

ATMega128 의외부메모리인터페이스 ATMega128 의외부메모리인터페이스 칩외부에더큰용량의메모리나별도의주변장치들을연결하기위한인터페이스 n 외부램, 외부플래쉬롬 n LCD 나 DA 변환기와같은주변장치 노말모드에서 0x1100-0xffff 번지에외부데이터메모리로사용가능 외부메모리인터페이스기능 n 주변장치와적절한인터페이스를위한 0-3 의대기사이클을지정가능. n 2 개의섹터로외부데이터메모리를분할하고, 독립적인대기사이클지정가능. n 16 비트주소의상위바이트에중필요한갯수의비트만을주소버스로동작가능. n 데이터버스의신호들이동작할때전류소비량이감소되도록 Bus-ke eper 기능설정가능.

ATMega128 의외부메모리인터페이스 외부메모리인터페이스신호 ATmega128의외부메모리연결을위한핀 n PA7~PA0( 핀44~ 핀51) : AD(7:0) n 외부메모리하위주소와데이터버스. n PC7~PC0( 핀35~ 핀42) : A(15:8) n 외부메모리상위주소버스. n ALE(PG2, 핀43) : Address Latch Enable n 외부메모리에접근할때 PA 에서출력되는하위주소값을래치할수있도록 CPU 에서 1 레벨값을출력해준다. n RD(PG1, 핀 34) n 외부데이터메모리를읽을 (Read) 때사용되는스트로브신호. n WR (PG0, 핀 33) n 외부데이터메모리에쓸 (Write) 때사용되는스트로브신호. MCUSR 레지스터를이용해서설정

ATMega128 의외부메모리인터페이스 외부메모리의연결 다중화버스 (Multiplex-BUS) 방식 n 칩의핀수를절약

ATMega128 의외부메모리인터페이스 외부메모리읽기쓰기 외부메모리인터페이스와외부메모리사이의신호흐름

ATMega128 의외부메모리인터페이스 외부메모리인터페이스설정레지스터 MCUCR(MCU Control Register) : MCU 제어레지스터 XMCRA(eXternal Memory Control Register A) : 외부메모리제어레지스터 A XMCRB(External Memory Control Register B) : 외부메모리제어레지스터 B

ATMega128 의외부메모리인터페이스 MCUCR(MCU Control Register) MCU 제어레지스터 CPU의전체적인기능을설정 n 외부메모리설정 n Sleep Mode 동작설정 n 인터럽트동작설정 7 6 5 4 3 2 1 0 SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE

ATMega128 의외부메모리인터페이스 MCUCR(MCU Control Register) 외부메모리설정 n 비트 7 과 6 을사용해서외부데이터메모리영역을설정 n 비트 7(SRE:external SRAM/XMEM Enable) n n 1 로세트하면 PA(7:0), PC(7:0), PG(2:0) 핀들을외부메모리와인터페이스를위한핀들로설정 0 로하면일반병렬포트로설정 n 비트 6(SRW10:Wait-state Select Bit for Upper Sector) n n 외부데이터의 Upper 섹터에부여하는여분의대기사이클의수를 XMCRA 레지스터의 SRW11 비트와조합되어설정. [SRW11:SRW10]=00 일때대기사이클은 0 개, 01 일때 1 개, 10 일때 2 개, 11 일때 3 개를준다.

ATMega128 의외부메모리인터페이스 MCUCR(MCU Control Register) Sleep 모드동작설정 n 비트 5, 비트 4,3,2 를이용해 Sleep 모드를설정. n 비트 5(SE:Sleep Enable) : 디폴트는 0 으로 1 로세트되면 SLEEP 명령시슬립모드의돌입이허용한다. n 비트 4,3,2(SM1,SM0,SM2) : 슬립모드설정

ATMega128 의외부메모리인터페이스 MCUCR(MCU Control Register) 인터럽트동작설정 n 비트 1 과 0 을사용해서인터럽트동작을설정 n 비트 1(IVSEL:Interrupt Vector SELect) : 인터럽트벡터의배치를변경 n 비트 0(IVCE:Interrupt Vector Change Enable) : 1 로세트하면 IVSEL 을변경할수있다. 인터럽트백터의배치

ATMega128 의외부메모리인터페이스 XMCRA(eXternal Memory Control Register A) 외부메모리제어레지스터 A n 외부데이터메모리영역을분할 n 대기사이클의수를설정 7 6 5 4 3 2 1 0 - SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 - 비트 6(SRL2)~ 비트 4(SRL0) n 외부데이터메모리영역을 Lower 와 Upper 2 개의섹터로분할하여각섹터에별도로대기사이클의수를설정

ATMega128 의외부메모리인터페이스 XMCRA(eXternal Memory Control Register A) SRL2-SRL0 를이용한메모리분할

ATMega128 의외부메모리인터페이스 XMCRA(eXternal Memory Control Register A) 비트 3~ 비트 2(SRW01~SRW00) n Wait-state Select Bit for Lower Sector n 외부데이터의 Lower 섹터에부여하는여분의대기사이클의수설정 n 대기사이클은 [SRW01:SRW00]=00 일때 0 개, 01 일때 1 개, 10 일때 2 개, 11 일때 3 개 비트 1(SRW11) n Wait-state Select Bit for Upper Sector) n 외부데이터의 Upper 섹터에부여하는여분의대기사이클의수를 XMCRA 레지스터의 SRW11 비트와조합되어설정 n 대기사이클은 [SRW11:SRW10] =00 일때 0 개, 01 일때 1 개, 10 일때 2 개, 11 일때 3 개

ATMega128 의외부메모리인터페이스 XMCRB(eXternal Memory Control Register B) 외부메모리제어레지스터 B n 버스키퍼기능을설정 n 외부메모리주소의상위바이트에서어느부분까지가주소지정에사용되는지를설정 7 6 5 4 3 2 1 0 XMBK - - - - XMM2 XMM1 XMM0 비트 7(XMBK:eXternal Memory Bus-Keeper enable) n 1 로세팅되면 PA7-PA0 의값들이보존되는버스키퍼기능을활성화시킨다.

ATMega128 의외부메모리인터페이스 XMCRB(eXternal Memory Control Register B) 비트 2~ 비트 0(XMM2~0 : external Memory high Mask) n 상위주소버스로사용되는 port C 의일부분만이주소버스로사용되도록하고나머지는입출력포트로설정 외부메모리허용시해방되는 C 포트핀

TEXT LCD Text LCD(Character LCD) LCD 화면에정해진형태의문자를정해진개수만큼표시할수있도록만들어진 LCD 디스플레이장치 각종임베디드장치들에서널리사용 대부분의마이크로컨트롤러들과 TEXT LCD 는그대로연결할수있도록신호를제공 마이크로컨트롤러개발환경에서도 TEXT LCD 관련함수를제공 HBE-MCU-Multi Text LCD 16 문자 *2 라인의표시부 Backlight 기능포함

TEXT LCD 인터페이스커넥터핀기능 핀 Signal Name 기능 1 VSS 전원 GND 2 VDD 전원 +5VDC 3 VEE Contrast 제어전압레벨 (VDD-VEE = 13.5 ~ 0V) 4 RS Register Select ( 0 = instruction, 1 = data ) 5 R/W Read/Write ( 0 = FPGA -> LCD, 1 : FPGA <- LCD ) 6 E Enable Signal for read/write LCD 7 DB0 (LSB) 8 DB1 9 DB2 10 DB3 11 DB4 DATA 12 DB5 13 DB6 14 DB7 (MSB) 15 A +LED (backlight LED용전원 +4.4 ~ 4.7V) 16 K -LED (backlight LED용전원 GND)

TEXT LCD Text LCD(Character LCD) 구조 TEXT LCD 는보통 LCD 표시부와 LCD 제어부를하나로하여 LC D 모듈로시판됨. LCD 제어기구성 n 명령 (Instruction) 과데이터 (Data) 를위한 2 개의레지스터 n BF (Busy Flag) n AC(Address Counter) n 문자발생램 (CGRAM) n 문자발생롬 (CGROM) n 데이터표시램 (DDRAM)

TEXT LCD Text LCD(Character LCD) 구조 내장레지스터 n 명령레지스터 (IR): n DDRAM 과 CGRAM 에대한어드레스와클리어, 커서시프트등제어명령을보유 n 데이터레지스터 (DR): n DDRAM 과 CGRAM 에쓴데이터나읽은데이터를일시적으로저장 n 레지스터들은 RS(4 번핀 ) 과 R/W(5 번핀 ) 을사용하여선택 RS, R/W 신호에따른 TEXT LCD 제어기레지스터선택방법 RS R/W 레지스터접근 0 0 IR쓰기 ( 각종제어명령쓰기 ) 0 1 BF읽기, AC읽기 1 0 DR쓰기 1 1 DR읽기

TEXT LCD Text LCD(Character LCD) 구조 BF (Busy Flag) n 1 이면 LCD 의콘트롤러가동작중으로명령수행불능 n 0 이면다음명령수행가능표시 AC(Address Counter) n DDRAM 과 CGRAM 의주소를지정할때사용 n IR 에주소정보를쓰면주소정보가 AC 로전송 n DDRAM/DDROM 에데이터를쓰면 AC 는자동으로 +1 혹은 -1 이됨 문자발생램 (CGRAM) n 사용자가자유로이문자를만들때사용하는램 n 5x7 은 8 개, 5x10 은 4 개만들어저장가능 문자발생롬 (CGROM) n 5x7, 5x10 도트의문자를내장 데이터표시램 (DDRAM) n 80x8 비트용량으로 80 개의 8 비트아스키 (ASCII) 코드를저장 n 0x00-0F 주소가 LCD 1 행의 1-16 번째, 0x40-4F 주소가 LCD 2 행의 1-16 번째문자로표시됨.

TEXT LCD Text LCD 제어신호동작타이밍

TEXT LCD Text LCD 제어명령 LCD 모듈표시제어명령 기능 제어신호제어명령 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Clear Display 0 0 0 0 0 0 0 0 0 1 Return Home 0 0 0 0 0 0 0 0 1 0 Entry Mode Set 0 0 0 0 0 0 0 1 I/D S Display ON/OFF Control 0 0 0 0 0 0 1 D C B Cursor or Display Shift 0 0 0 0 0 1 S/C R/L 0 0 Function Set 0 0 0 0 1 DL N F 0 0 Set CG RAM address 0 0 0 1 CG RAM address Set DD RAM address 0 0 1 DD RAM address Read busy flag and address 0 1 BF Address Counter Data write to CG RAM or DD RAM 1 0 Write address Data read from CG RAM or DD RAM 1 1 Read address

TEXT LCD Text LCD 제어명령 CLEAR DISPLAY n 디스플레이상태를소거하고커서를 Home 위치로 Return Home n DD RAM 의내용은변경하지않고커서만을 Home 위치로 Entry Mode SET n 데이터를 Read 하거나 Write 할경우에커서의위치를증가시킬것인가 (I/D=1) 감소시킬것인가 (I/D=0) 를결정 n 이때화면을이동할것인지 (S=1) 아닌지 (S=0) 를결정 Display ON/OFF Control n 화면표시를 ON/OFF 하거나 (D) 커서를 ON/OFF 하거나 (C) 커서를깜박이게할것인지 (B) 의여부를지정 Cursor or Display Shift n 화면 (S/C=1) 또는커서 (S/C=0) 를오른쪽 (R/L=1) 또는왼쪽 (R/L=0) 으로이동

TEXT LCD Text LCD 제어명령 Function SET n 인터페이스에서데이터의길이를 8 비트 (DL=1) 또는 4 비트 (DL=0) 로지정 n 화면표시행수를 2 행 (N=1) 또는 1 행 (N=0) 으로지정 n 문자의폰트를 5x10 도트 (F=1) 또는 5x7 도트 (F=0) 로지정 Set CG RAM Address n Character Generator RAM 의어드레스를지정 n 지정이후에송수신하는데이터는 CG RAM 의데이터 Set DD RAM Address n Display Data RAM 의어드레스를지정. n 지정이후에송수신하는데이터는 DD RAM 의데이터 Read Busy Flag & Address n LCD 모듈이내부동작중임을나타내는 Busy Flag(BF) 및어드레스카운터의내용을 read

TEXT LCD Text LCD 제어명령 Text LCD DDRAM Address n DDRAM 은표시될각문자의 ASCII 코드데이터가저장되어있는메모리 n 모두 80 개의번지가있으며, 화면의각행과열의위치에는고유한어드레스값이부여되어있음. n 각행과행사이의어드레스가연속하여있지않으므로주의해야함. 표시문자의위치에대한 DD RAM 의어드레스 구분 1 2 3 4 13 14 15 16 Line1 00 01 02 03 0D 0E 0F 10 Line2 40 41 42 43 4D 4E 4F 50

TEXT LCD ASCII 도형문자종류및코드값 구분 00H 10H 20H 30H 40H 50H 60H 70H 80H 90H 0 0 @ P ` p 1! 1 A Q a q 2 " 2 B R b r 3 # 3 C S c s 4 $ 4 D T d t 5 % 5 E U e u 6 & 6 F V f v 사용자 7 정의미사용 ' 7 G W g w 8 영역 ( 8 H X h x 영역 9 ) 9 I Y I y 미사용영역 A * : J Z j z B + ; K [ k { C, < L l D - = M ] m } E. > N ^ n F /? O _ o

실습 14 : TEXT LCD 에글자쓰기 실습개요 ATMega128 의 GPIO 에 TEXT LCD 를연결하고, LCD 화면에미리작성된문장 ("Hello! MCU World!!") 을표시 AVR 개발환경에서제공하는 TEXT-LCD 관련함수를이해하면쉽게프로그램을작성할수있음. 실습목표 TEXT LCD의동작원리이해 AVR 개발환경에서제공하는 TEXT-LCD 관련함수이해 TEXT LCD 제어프로그램방법습득

실습 14 : TEXT LCD 에글자쓰기 사용모듈 : MCU 모듈, TEXT-LCD 모듈 MCU 모듈 TEXT LCD 모듈 MCU 모듈포트 G MCU 모듈포트 C Data BUS (D0~D7) Control 신호 (Rs, RW, E)

실습 14 : TEXT LCD 에글자쓰기 사용모듈 TEXT LCD 모듈회로

실습 14 : TEXT LCD 에글자쓰기 모듈결선방법 MCU 모듈포트 C 의 PC0~PC7 을 TEXT LCD 모듈의 D0~D7 신호에연결 MCU 모듈포트 G 의 PG0 는 TEXT LCD 모듈의 RS 신호에, PG1 은 RW 신호에, PG2 는 E 신호에연결

실습 14 : TEXT LCD 에글자쓰기 구동프로그램 : 사전지식 AVR 개발환경에서 TEXT LCD 관련라이브러리함수를제공 n lcd.c 와 avr_lib.c 라는파일에포함 n AVR Studio 에서이미지를 Build 할때이 lcd.c 파일과 avr_lib.c 파일을함께포함시켜야함. TEXT LCD 용라이브러리함수 n lcdinit : TEXT LCD 초기화 n lcdgotoxy(unsigned char x, unsigned char y): TEXT LCD 의커서를원하는위치로이동. n lcddatawrite( unsigned char data ): TEXT LCD 에하나의문자출력 n lcdprintdata(char* data, unsigned char nbytes) : TEXT LCD 에 nby tes 길이의문자열을출력 n lcdclear() : TEXT LCD 의화면을지움.

실습 14 : TEXT LCD 에글자쓰기 구동프로그램 : 사용포트와핀선언 사용할포트를선언하는헤더화일 : lcdconf.h n lcdconf.h 이예제에서는 MCU 모듈의 C 포트와 G 포트를사용 #ifdef LCD_PORT_INTERFACE #ifndef LCD_CTRL_PORT #define LCD_CTRL_PORT PORTG #define LCD_CTRL_DDR DDRG #define LCD_CTRL_RS 0 #define LCD_CTRL_RW 1 #define LCD_CTRL_E 2 #endif #ifndef LCD_DATA_POUT #define LCD_DATA_POUT PORTC #define LCD_DATA_PIN PINC #define LCD_DATA_DDR DDRC #endif #endif TEXT LCD 제어포트선언 TEXT LCD 데이터포트선언

실습 14 : TEXT LCD 에글자쓰기 구동프로그램 : 사용포트와핀선언 사용할포트를선언하는헤더화일 : lcdconf.h TEXT LCD 제어포트선언 매크로선언 매크로상수의미 예 #define LCD_CTRL_PORT 포트데이터레지스터 PORTA, PORTC #define LCD_CTRL_DDR 데이터방향레지스터 DDRA, DDRC #define LCD_CTRL_RS TextLCD RS핀 0 ~ 7 의값 #define LCD_CTRL_RW TextLCD RW핀 0 ~ 7 의값 #define LCD_CTRL_E TextLCD E핀 0 ~ 7 의값 TEXT LCD 데이터포트선언 매크로선언 매크로상수의미 사용예 #define LCD_DATA_POUT 포트데이터레지스터 PORTA, PORTC #define LCD_DATA_PIN 입력핀어드레스 PINA, PINC #define LCD_DATA_DDR 데이터방향레지스터 DDRA, DDRC

실습 14 : TEXT LCD 에글자쓰기 구동프로그램 : 소스분석 Textlcd.c 1) #include<avr/io.h> #include"lcd.h int main(){ 2) lcdinit(); 3) lcdgotoxy(0,0); lcddatawrite('h'); 4) lcddatawrite('e'); lcddatawrite('l'); lcddatawrite('l'); lcddatawrite('o'); lcdgotoxy(3,1); // H' 출력 // e' 출력 // l' 출력 // l 출력 // 0 출력 // 현재커서위치를 (3,1) 위치로이동 5) lcdprintdata("mcu World!!",12); return 0; }

실습 14 : TEXT LCD 에글자쓰기 실행결과 H e l l O M C U W o r l d!!

SRAM(Static RAM) SRAM(static random access memory) 전력이공급되는한, 메모리내의데이터비트들의내용이계속유지되는램 DRAM 과는달리, SRAM 은주기적으로재생시킬필요가없다 DRAM 에비해더빠르게데이터에액세스할수있음. 값이상대적으로비싸다 임베디드시스템의고속데이터처리용, 컴퓨터의캐시메모리와비디오카드의 RAMDAC 의일부로사용됨.

SRAM(Static RAM) SRAM 의핀기능 핀이름 /CS /OE /WE I/O0~I/O7 A0~A16 기능 Chip Select Output Enable Input Write Enable Input Data Input/Output Address Input CS : 메모리버스에연결된칩들을구분하기위한신호 OE : CS에의해선택된메모리의데이터를읽어낼때사용 WE: 선택된메모리칩에데이터를써넣을때사용 I/O0~I/O7 : 데이터버스, 데이터를실어보냄 A0~A16 : 어드레스버스, 메모리의주소를알려줌

SRAM(Static RAM) SRAM 의제어신호동작 SRAM 제어신호에따른진리표

SRAM(Static RAM) SRAM 의제어신호동작 SRAM 의 Read 와 Write 동작시신호들의타이밍 Read Cycle

SRAM(Static RAM) SRAM 의제어신호동작 SRAM 의 Read 와 Write 동작시신호들의타이밍 Write Cycle

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 실습개요 ATmega128 의외부메모리인터페이스를이용하여 SRAM 을제어하는방법을실습 외부메모리인터페이스에 SRAM 과 TEXT LCD 를연결 UART 포트를이용하여 PC 와통신연결 PC 에서입력하는문자열을 SRAM 에한문자씩차례로저장하였다가, 한번에꺼내서 TEXT LCD 에출력 실습목표 ATmega128 외부메모리인터페이스동작원리이해 ( 레지스터설정 ) SRAM 동작원리이해 SRAM의제어방법습득

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 MCU 모듈 TEXT LCD 모듈 사용모듈 : MCU 모듈, E 포트 UART 모듈연결 메모리모듈, TEXT-LCD 모듈, UART 모듈 B,D 포트 TextLCD 모듈연결 A,C,G 포트메모리모듈연결 Data BUS (D0~D7) Control 신호 (Rs, RW, E) RS 232 포트 USB-to-Serial 포트 메모리모듈 SRAM I 2 C ROM SPI Flash UART 모듈 Signal UART 모듈 SRAM BUS 신호

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 사용모듈 메모리모듈의 SRAM 부회로 n 74LCX573 : D-Type Latch n K6R1008 : 64KByte * 8 비트 SRAM

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 모듈결선방법 MCU 모듈 UART 모듈 메모리모듈 TEXT-LCD 모듈

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 모듈결선방법 MCU 모듈 TEXT LCD 모듈 MCU 모듈 Memory 모듈 PD0~PD7 PB0 PB1 D0~D7 RS RW PA0~PA7 PC0~PC7 S_AD0~S_AD7 S_A8~S_A15 PB2 E PG0 S_WR PG1 S_RD MCU 모듈 PE0 UART 모듈 RX PG2 S_ALE PE1 TX

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 구동프로그램 : 사전지식 외부메모리를사용을위한제어레지스터설정 n 외부메모리 Enable n MCUCR 레지스터의 SRE 비트를 1 로세팅 n 메모리의영역분할및대기사이클을설정 n XMCRA의 SRL(2:0) 비트를설정하여메모리의섹터를나눌것인지, 아닌지를결정 n 상위 (Upper) 와하위 (Lower) 메모리섹터들에대한대기사이클 (Wait-State) 를설정 n 여기서는메모리영역을 0x1100~0x7FFF까지의하위섹터와 0x8000~0xFFF F까지의상위섹터로나누어사용 n 각메모리섹터의대기사이클은 0 n 메모리를위해어느정도의핀을할당할것인지를결정 n n n n XMCRB 레지스터의 XMBK 비트를세팅하여 BUS-Keeper를사용할것인지아닌지를결정여기서는 BUS-Keeper는사용하지않고, 메모리는 60KByte 전체영역을사용따라서, C 포트의모든핀들은외부메모리 (SRAM) 에할당외부메모리의주소영역 : 0x1100~0XFFFF

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 구동프로그램 : 사전지식 외부메모리 ( 여기서는 SRAM) 을액세스하는방법 n 포인터변수를이용하여접근 n 외부메모리의주소영역이 0x1100~0XFFFF n 메모리읽기 n A = *(volatile unsigned char *)0x1100; n 메모리쓰기 n *(volatile unsigned char *)0x1100 = 0xAA; n volatile : 컴파일러가최적화과정에해당메모리의영역을제거해버리는것을막기위해사용

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 구동프로그램 : 소스분석 Lcdconf.h #ifdef LCD_PORT_INTERFACE #ifndef LCD_CTRL_PORT #define LCD_CTRL_PORT PORTB #define LCD_CTRL_DDR DDRB #define LCD_CTRL_RS 0 #define LCD_CTRL_RW 1 #define LCD_CTRL_E 2 #endif #ifndef LCD_DATA_POUT #define LCD_DATA_POUT PORTD #define LCD_DATA_PIN PIND #define LCD_DATA_DDR DDRD #endif #endif

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 구동프로그램 : 소스분석 EXT_SRAM.c 1) #include<avr/io.h> #include<util/delay.h> #include"lcd.h #define read_xram(address) (*(volatile unsigned char *)(0x1100+address)) #define write_xram(address,value) ((*(volatile unsigned char *)(0x1100+address))= value) void putch(unsigned char data){ while((ucsr0a & 0x20) == 0); UDR0 = data; UCSR0A = 0x20; } /* UCSR0A 레지스터중에서 5 번째비트 (UDREn) 를세트하여 UDRE0 를클리어함. */

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 1) unsigned char getch(){ unsigned char data; while((ucsr0a & 0x80) == 0); data = UDR0; UCSR0A = 0x80; /* UCSR0A 레지스터중에서 7번째비트를세트하여 RXC0를클리어함. */ return data; } int main(){ unsigned char i=0,j=0; unsigned char line1,line2; unsigned char Tmp=0; unsigned char text[]="\n\r**************************************" "\n\r EXT-SRAM TEST Program! " "\n\r TextLCD에출력할데이터를입력하세요 \n\r" " ( 종료 : Enter키, 32바이트이내 )\n\r" "\ **************************************\n\r >> ";

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 2) MCUCR = 0x80; // 외부메모리 enable XMCRA = 0x40; // lower sector = 0x1100-0x7fff,Upper sector = 0x 8000-0xffff XMCRB = 0x00; 3) DDRE = 0xfe; // Rx( 입력 0), Tx ( 출력, 1) UCSR0A = 0x00; UCSR0B = 0x18; // Rx, Tx enable UCSR0C = 0x06; // 비동기방식, No Parity bit, 1 Stop bit UBRR0H = 0x00; UBRR0L = 0x03; //7.3728 MHz -> 115200 bps /* UBRRnH/L레지스터는 16비트중에서 12비트만사용하여 USARTn모듈의송수신속도를설정 */ 4) lcdinit(); //TextLCD 초기화

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 5) while(text[j]!='\0') putch(text[j++]); while(1){ Tmp = getch(); putch(tmp); if((tmp == '\r') i > 32) { break; } write_xram(0x0100+i,tmp); _delay_ms(10); i++; } //text[j] 를증가시켜가면서출력 //Tmp 를 UART 로전송 //10ms 단위의딜레이간격

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 6) if(i<=16){ line1 = i-1; line2 = 0; } else{ line1 = i - (i-16); line2 = i-16-1; } _delay_ms(100); //100ms단위의딜레이간격 7) for(j=0;j<line1;j++){ // 읽어들인문자열출력 lcddatawrite(read_xram(0x0100+j)); _delay_ms(10); //10ms단위의딜레이간격 } lcdgotoxy(0,1); // 현재커서위치를왼쪽위로 1열만큼이동 for(j=0;j<line2;j++){ // 읽어들인문자열출력 lcddatawrite(read_xram(0x0100+j+line1)); _delay_ms(10); //10ms단위의딜레이간격 } return 0; }

실습 15 : 외부메모리 I/F 에 SRAM 붙이기 실행결과