디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

AVR에 외부메모리 달기. (입출력확장 / 어드레스맵핑)

유리한갤로그로 이동합니다. 2007.11.12 10:00:53
조회 6857 추천 0 댓글 86
														

예전에 공부할때 퍼왔던 건데..

출처는
http://control.new21.org/ez2000/ezboard.cgi?db=avr&action=read&dbf=8&page=0&depth=1


외부 메모리를 다는것과

입출력 포트 확장 (어드레스 맵핑)

은 일맥 상통한다.




-------------------------------------------------------------------------



## AVR 에다가 외부 메모리 달기 ##

별 신기한 내용도 아닌데다가, 엄청나게 쉽기까지 하니깐..
막바로 시작합니다.

일단 이하의 내용은 전부 데이터쉬트에 다 있습니다.
거의 한글 번역, 요약 정도의 수준이라고 보심됩니다.

ATmega128 로 진행했습니다만, 다른 AVR도 마찬가지일껍니다.
(128은 단종되었는데...;;)

AVR 의 어드레스라인은 16비트입니다.
따라서 0xffff 까지 어드레싱이 가능하다는 얘기가 되고,
이는 최대 메모리가 64Kbyte 까지 된다는 말이되죠.

데이터쉬트에서,
Atmega128 의 핀배열을 보면,

. AD7:0: Multiplexed low-order address bus and data bus.
. A15:8: High-order address bus (configurable number of bits).
. ALE: Address latch enable.
. RD: Read strobe.
. WR: Write strobe.

이런 핀들이 있습니다.
바로 외부메모리에 입출력하기위한 핀들입니다.

좀 이상한 점을 발견하실수 있을껍니다.

A15-A8 과
AD7-AD0 번 이렇게 두그룹으로 나눠져있습니다.

이것만 보고 "아하..이런방식으로 동작하는구나..." 라는 느낌이 떠오른다면,
당신은 Master of AVR 칭호를 받을 자격이 있다는 것이 되죠!

.......

아까 말했듯이, 어드레스는 16bit 입니다.
A15-A8,AD7-AD0 이렇게 총 16개의 다리가 전부 ADDRESS 에 연결되죠.

그다음 데이터는?

AD 의 D 가 바로 Data 라는 뜻이겠죠.

AD7-AD0 이렇게 8개가 Data 전송에 사용됩니다.

........

이상합니다... 당연히 이상하죠...
다른사람이 심사숙고해서 만든 "꼼수"를 첨 대하는 사람은 당연히
심리적인 거부감이 들게 마련입니다.

어드레스의 하위 8비트와 데이터 8비트가 공유되고 있습니다.


////////////////////////////////////////////////////////////////////
여기서, 일반적인 SRAM 에다가 입출력할때의 방식에 대한 설명

hynix.gif
<사진1 : SRAM 입출력 방법>

이게 머냐! 라고 하시겠지만... 이게 전붑니다.

어드레스 들어오고, 데이터 들어올때 Write 신호뜨면 써집니다.

어드레스 들어오고, Read 신호뜨면 값 내보내줍니다....;;;

그니깐... 마이컴 쪽에서 해야할일은 그냥 타이밍만 잘 맞춰주면 끝.
///////////////////////////////////////////////////////////////////


다시 AVR 로 돌아와서,

하위어드레스 8비트와 데이터 8비트가 겹치는 문제를 해결해주는것이 바로
"LATCH" 입니다.

LATCH 가 무엇이냐... 74573 입니다.
주로 마이컴에서 IO 포트 확장하기 위해 사용됩니다.
클럭이 들어올때 INPUT을 캡쳐해가지고 Output 에 유지시켜주는 칩이죠.

(74573 에 대해 자세한건 주위 고수분들께 여쭙거나, 독학하세요.)


요기서 블럭다이어그램!

avr_mem.gif
<사진2 : ATmega128 과 외부 SRAM 의 연결>

위에서 제가 설명한 글이랑 이 그림이랑을 비교해보시면 금방이해가 될껍니다.

어드레스 16비트가 먼저 나오고,
LATCH 신호가 뜨면 74573 은 하위어드레스 8비트를 유지하게 됩니다.
그다음 AVR 은 AD7-AD0 을 입력(데이터읽을때), 출력(데이터쓸때) 로 변환시키고,
해당 읽기/쓰기 작업을 수행합니다.

////////////////////////////////////////////

아.. 괜히 복잡하게 설명한게 아닌가 모르겠군요...;;;

이상의 작업들은 AVR 이 하드웨어적으로 자동처리해주는 부분들입니다.

즉, 프로그램상에서 어드레스 지정해주고, 읽기 작업을 수행하면,
AVR 이 내부메모리인지 외부메모리인지 비교하고 알아서 위의 작업들을
수행한다음에, 결과값을 알려주게 됩니다.



///////////////////////////////////////////////////////////
///////// codevision 에서 외부 메모리 사용하기 ////////////
///////////////////////////////////////////////////////////

------------------------------------------------
컴파일러 : codevision 1.24.1e

연결된 하드웨어들 :

. ATmega128
. TextLCD 를 PortD 에다가 연결
. HY62CT081ED70C (Hynix, 32KByte SRAM)
. 74HC573
------------------------------------------------

회로도는 굳이 그리지 않겠습니다.
LCD 연결하는건 Codevision 처음 세팅하는곳에서 알려주고있고,
외부메모리와 AVR 을 연결하는건 AVR 데이터쉬트에서 알려줍니다.
(그리기 귀찮아~)

Codevision 에서 세팅

1. 외부메모리를 쓰겠다.
(32K 가 달려있고... wait 은 사용안하고... page 는.. 뭔지 잘모름..)

extern_set.jpg
<사진3 : 외부메모리 세팅>

2. TEXT LCD 가 연결되어있다.
(배선을 어떻게 연결해야하는지가 나옵니다.)

lcd_set.jpg
<사진4 : TextLCD 세팅>

그다음...

외부메모리상에 데이터를 쓰고 읽기위해 변수 선언.

/////////////////////////////////////////////////////////////////////////
    char * pExmem; // 외부메모리 사용을 위한 포인터
    pExmem = 0x5000;//포인터를 초기화... 외부메모리상의 적당한곳에다가 지정
/////////////////////////////////////////////////////////////////////////


그다음에 데이터 쓰고 읽은뒤, 읽은값을 TextLCD 에 출력~

/////////////////////////////////////////////////////////////////////////
    *(pExmem+i) = i;
       
    delay_ms(100);
       
    temp = *(pExmem+i);
     
lcd_gotoxy(0,0);
lcd_putchar(temp+48);

    i++;
                       
    if(i>10) i=0;
/////////////////////////////////////////////////////////////////////////

무쟈게 쉽습니다....

위와 같이 프로그램을 짰으니,
0x5000 번부터 0x5009 번까지 0 에서 9까지 숫자가 들어가게 되겠군요.


돌려보니 일단 글자들은 자~알 나옵니다.
자~알 나오니깐 외부메모리 입출력이 잘 되고 있는것이겠죠.

관련 소스 전체는 자료실에 올렸습니다.


//////////////// 외부메모리 입출력 강좌 끝~ /////////////////////////

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 내 돈 관리 맡기고 싶은 재태크 고수 같은 스타는? 운영자 26/01/12 - -
AD 집에서 즐기는 Fresh 미식회 운영자 25/12/22 - -
공지 프로그래밍 갤러리 이용 안내 [103] 운영자 20.09.28 49256 65
2910364 사내 라이브러리의 현실 [1] 프갤러(115.21) 18:01 22 1
2910363 근데 ai때메 망했다는데 보안은 왜 여전히 바닥이지 [3] ㅇㅇ갤로그로 이동합니다. 17:29 40 0
2910362 국비학원 친목질개병신같다 [5] 프갤러(211.235) 16:58 42 0
2910361 오산공군기지(공작사) 공고뜨면 절대 가지마라 프갤러(117.110) 16:17 31 0
2910360 나는 사내 라이브러리화 극혐인게 [5] 프갤러(115.21) 16:15 48 0
2910359 개죽이 시발련 사진 왜 띄우는거지? [1] 뉴프로갤로그로 이동합니다. 16:07 34 0
2910358 오 경영악화로 권고 사직당함 ㅇㅅㅇ [1] 류류(118.235) 15:52 40 0
2910357 노홍철이 잘 나가는 이유가 극좌라서 그렇누 ㅋㅋㅋㅋㅋㅋ [4] 프갤러(1.213) 15:45 29 0
2910356 회사 다닐려면 백신 맞아야해서 어쩔수 없이 맞앗다 <-개소리인 이유 야옹아저씨갤로그로 이동합니다. 15:44 21 0
2910355 공립 교사 하려는 학생입니다. 제가 따로 공부하고 싶은게 있어서 질문 [2] 프갤러(114.70) 15:30 32 0
2910354 요즘도 임베디드나 펌웨어는 mfc 씀? [8] ㅇㅇ갤로그로 이동합니다. 14:55 97 0
2910353 코드를 쉽게 짜야하는 이유 프갤러(115.21) 14:48 27 0
2910352 여기 제어하는 사람은 없냐 [7] 프갤러(115.21) 14:44 74 0
2910347 나혼자 산다 나는 자연인이다 나호남산다 나는 호남인이다 타이밍뒷.통수한방(1.213) 11:52 25 0
2910346 나님은 귀여운 MFC앱 시니어 개발자에욤 [5] 네오커헠(211.234) 11:35 137 0
2910344 미용사3사이즈와꾸티어맵어플로누가좀만들어주라 [1] 깃깃갤로그로 이동합니다. 11:02 30 0
2910343 화폐가 사용되는 지역을 기축통화로 집중하냐 지역통화로 분산하냐 결정 발명도둑잡기(118.235) 10:11 35 0
2910342 전쟁에서 사람이나 물자나 권력을 집중하냐 분산하냐 결정하는 이론 발명도둑잡기(118.235) 10:08 73 0
2910341 AI 없이 코딩하는 형들 대단하네 [2] 프갤러(59.16) 09:47 84 0
2910340 구형 스마트폰, 타블렛 활용법 [1] 발명도둑잡기(118.235) 09:36 70 0
2910339 프갤에 오는 이유 생각해보니까 ㅇ ㅅㅇ; [1] 프갤러(60.196) 09:34 53 0
2910338 자러감..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:16 28 0
2910337 임베디드 돈 못번다는애들 특징 [2] 초코냥갤로그로 이동합니다. 09:15 106 0
2910336 산책나갔다가 쪽팔려서 얼렁 들어옴 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:05 31 0
2910335 정치는 포장만 다르지 연예계와 같아!! [1] 발명도둑잡기(118.216) 09:00 47 0
2910333 방구가 멈추지않아 뿡...뿡...뿌닥.. [2] 초코냥갤로그로 이동합니다. 08:41 76 0
2910332 [칼럼] 작전명 ‘몽구스’에서 작전명 ‘확고한 결의’까지 발명도둑잡기(118.216) 08:38 14 0
2910331 68혁명 이후 보수 집권 [1] 발명도둑잡기(118.216) 08:18 65 0
2910329 [SK쉴더스] 생성형 AI활용 사이버보안 전문인력 양성과정 31기 (~2 프갤러(121.130) 06:43 31 0
2910327 인지과학조져라 손발이시립디다갤로그로 이동합니다. 05:52 62 0
2910325 음기 충전 발명도둑잡기(118.216) 05:26 61 0
2910323 Llm에 관심이 생겼는데 프갤러(39.118) 03:15 47 0
2910319 보아 갤러리 134ㆍ(106.102) 02:25 22 0
2910317 게임 팩 팔려고 내놓음. 넥도리아(220.74) 02:06 53 0
2910315 태연 / 커피찌거기 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:10 48 0
2910314 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 01:08 84 0
2910312 개인용 포트폴리오용치고는 퀄 괜찮음 RyuDOG갤로그로 이동합니다. 00:45 73 0
2910310 프갤은 역시네 [2] RyuDOG갤로그로 이동합니다. 00:35 105 2
2910308 나노바나나가 그려준 드럼통 [3] ㅇㅇ(58.29) 01.12 139 4
2910306 나노바나나 그닥 품질이 이정도 밖에 안됨 ㅇㅇ(58.29) 01.12 50 0
2910304 별표 좀 줘라 프갤러(220.79) 01.12 27 0
2910302 백준 푸는데 수학 ㅈㄴ 아름답네(스포주의) [1] 프갤러(116.126) 01.12 63 0
2910301 막 취업한 전공인데 막막하다 [1] ㅇㅇ(1.238) 01.12 64 0
2910300 미국산 운영체제들은 주기적으로 사용 모습 스크린샷을 찍고 있다 발명도둑잡기(118.216) 01.12 62 0
2910296 툼레이더 배구공(119.202) 01.12 33 0
2910294 임베디드 돈 받으면서 국비하려는데 어떰 [1] 프갤러(211.234) 01.12 54 0
2910291 나는 잘생겼습니다. [2] 배구공(119.202) 01.12 69 0
2910289 돈이 배구공(119.202) 01.12 37 0
2910287 내란 일으킨 반국가단체 간판만 바꾸고 새로운 시작? 발명도둑잡기(118.216) 01.12 21 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2