메모리 사용법에 대해 질문하겠습니다..

익명 사용자의 이미지

안녕하세요..
atmega에서 내부 메모리 외부메모리에 대해 공부하고 사용하는 중인데 정말 이해가 안가서 질문합니다..

1. 외부 메모리의 주소가 0x2200에서 0xFFFF까지인데 하나의 atmega에 외부 메모리를 두개를 연결하였습니다.
그러면 메모리 1에서 사용되는 주소가 있다면 그 외의 주소를 입력하면 외부 메모리 2로 연결이 되는건가요?..

2.그렇다면 외부 메모리의 주소설정은..어떻게하는건가요...?

3. 외부 메모리 접근 때에는

MCUCR = 0x80;
XMCRA = 0xC1;
XMCRB = 0x80;

위의 레지스터를 설정하였었는데, 내부 메모리 때에도 레지스터를 설정해줘야 하는 건가요?

읽어주셔서 감사합니다.

jachin의 이미지

일단 아래 링크의 PDF 자료를 읽어보시면, 아실 수 있으실 겁니다. (13쪽에 답이..)

http://artoa.hanbat.ac.kr/lecture_data/microprocessor/2014/%EC%A0%9C10%EC%9E%A5%20%EC%99%B8%EB%B6%80%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%20(HBE-MCU-Multi%20AVR).pdf

1, 2번 답은 자료에서 보시면 아실 수 있으실테고, 3번은 1, 2번 과정에서 설정한 내용일겁니다. 내부 메모리에는 레지스터 설정을 할 필요는 없습니다. 외부 메모리의 경우는 Memory Mapped I/O 구조이기 때문에 인터럽트와 외부 메모리 레지스터 설정이 필요한 겁니다. 다음 자료의 15쪽을 참조하시기 바랍니다.

https://www.gme.cz/data/attachments/dsh.958-112.1.pdf

글쓴이의 이미지

1,2 번 답변에 있어 pdf파일을 읽어봤습니다.
이 레지스터 쓰임에 대해 알게되었는데!! 아래 사진처럼 메모리 상위, 하위를 어떻게 또 지정해줘야 하나요??

댓글 첨부 파일: 
첨부파일 크기
Image icon 11111.PNG32.87 KB
jachin의 이미지

15쪽에 A, B, 레지스터를 통해 C 포트 핀을 어떻게 메모리와 연결하는지 결정할 수 있도록 보여주고 있습니다. 따라서 C 포트핀에 메모리가 어떻게 붙어있는지 확인하시면 됩니다. 이미 만들어져 있는 보드이면 회로도를 참조하시고, 만드실 예정이시라면, 포트 C 에 몇 핀을 연결하고, 어떻게 제어할지 결정하시면 됩니다.

글쓴이의 이미지

메모리 1과 2의 PortC를 어디까지 사용하냐에 따라 달라진다 하셨는데
1번처럼 portC의 사용이 다른 경우 레지스터를 각각 설정하여 메모리 사용에 따라 레지스터 설정과 주소 접근을 해야하고,
2번처럼 portC의 사용이 같은 경우 하나의 레지스터로 주소 접근을 하면 되는건가요?

1) 메모리 1과 2의 PortC의 사용이 다를 경우
void Memory1(void)
{
XCUCR = (1< XMCRA = (1< XMCRB = (1< } //0x1100~0x7FFF

void Memory2(void)
{
XCUCR = (1< XMCRA = (1< XMCRB = (1< } //0x8000~0xFFFF

2) 메모리 1과 2의 PortC의 사용이 같은 경우
void Memory1(void)
{
XCUCR = (1< XMCRA = (1< XMCRB = (1< } //0x1100~0x7FFF, 0x8000~0xFFFF, 주소에 접근하면 알아서 메모리로 들어감..?..

jachin의 이미지

MCUCR, XMCRA, XMCRB 레지스터는 메모리 주소 설정과 관련이 있지, 주소를 레지스터에 주는 것이 아닙니다.

두 번째 링크에 ATMega 16 레퍼런스 메뉴얼에서 메모리 맵에 대한 이야기가 나옵니다. 주소범위에 따라 내부 EEPROM, SRAM, 외부 메모리 주소 영역 으로 주어져 있습니다. 외부 메모리 주소 영역으로 접근하려고 하면, XCUCR, XMCRA, XMCRB 에 설정한 대로 Port C 핀에 주소 신호와 데이터 신호, 메모리 제어 신호가 나가는 겁니다.

메뉴얼을 잘 읽어보세요.

글쓴이의 이미지

이상하게 질문해도 답변해주셔서 감사합니다.
좀더 공부하고 생각하도록하겠습니다!!!ㅎㅎ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.