реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подключение внешней памяти через мультиплексированную шину, ATMEGA128 чтение, запись из внешней памяти
nagserg
сообщение Dec 22 2005, 09:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Подскажите пожалуйста как обратится к внешней памяти, используя альтернативные выводы (ALE, WR, RD)?
Работаю в CodeVision

........

MCUCR = 0x80; // Разрешаем работу с внешним ОЗУ

XMCRB = 0x07; // Адресные выводы порта С A8...A15 не использовать

а вот как прочитать записать по определенному адресу? Подскажите пожалуйста.
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 22 2005, 09:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(nagserg @ Dec 22 2005, 12:21) *
Подскажите пожалуйста как обратится к внешней памяти, используя альтернативные выводы (ALE, WR, RD)?
Работаю в CodeVision

........

MCUCR = 0x80; // Разрешаем работу с внешним ОЗУ

XMCRB = 0x07; // Адресные выводы порта С A8...A15 не использовать

а вот как прочитать записать по определенному адресу? Подскажите пожалуйста.

Почитайте здесь (на русском), лучшего описания использованияпамяти памяти не встречалось:
http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/2.htm


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Rash
сообщение Dec 22 2005, 09:51
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



А какую внешню память в качестве ОЗУ используете, её тип?
Go to the top of the page
 
+Quote Post
nagserg
сообщение Dec 22 2005, 11:03
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Честно говоря я использую не память, а контроллер USB ISP1581, который использует такой же интерфейс - мультиплексированную шину адреса/данных. Вот не совсем понятно как прочитать, записать байт по определенному адресу.
Go to the top of the page
 
+Quote Post
BVU
сообщение Dec 22 2005, 11:58
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Цитата(nagserg @ Dec 22 2005, 14:03) *
Честно говоря я использую не память, а контроллер USB ISP1581, который использует такой же интерфейс - мультиплексированную шину адреса/данных. Вот не совсем понятно как прочитать, записать байт по определенному адресу.

Посмотрите блок схему подключения USB ISP1581 к микроконтроллеру.
http://www.gaw.ru/html.cgi/txt/publ/interface/usb.htm
и соотнесите адресное пространство внешней памяти своего микроконтроллера с имеющимися адресамиадресами в USB ISP1581.
Писать и читать ячейки данной памяти (USB ISP1581), точно так же как и память внутреннюю. Можете объявить ее, как массив или присвоить начальной области значение указателя. А наверняка там имеются и регистры управления, для инициализации устройства. Лучше всего организовать структуру в которой бы описывалась внутренняя организация регистров и ячеек памяти для данных. Для компилятора надо указывать тип данных, как внешняя память.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
mse
сообщение Dec 22 2005, 12:58
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата
XMCRB = 0x07; // Адресные выводы порта С A8...A15 не использовать

Круто... У м128, ваще-то, 4К нутрянной мемори. Так что из А8...А15, кой-кого пользовать, таки, придёцца ;О) Ымею в виду, что-нить типа CS для внешней микрухи. Ну и писать, соотвецтвенно, в память выше $1100, предварительно опустив/подняв CS в нуную позу. Вот.
Go to the top of the page
 
+Quote Post
nagserg
сообщение Dec 22 2005, 13:03
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Цитата(BVU @ Dec 22 2005, 14:58) *
Цитата(nagserg @ Dec 22 2005, 14:03) *

Честно говоря я использую не память, а контроллер USB ISP1581, который использует такой же интерфейс - мультиплексированную шину адреса/данных. Вот не совсем понятно как прочитать, записать байт по определенному адресу.

Посмотрите блок схему подключения USB ISP1581 к микроконтроллеру.
http://www.gaw.ru/html.cgi/txt/publ/interface/usb.htm
и соотнесите адресное пространство внешней памяти своего микроконтроллера с имеющимися адресамиадресами в USB ISP1581.
Писать и читать ячейки данной памяти (USB ISP1581), точно так же как и память внутреннюю. Можете объявить ее, как массив или присвоить начальной области значение указателя. А наверняка там имеются и регистры управления, для инициализации устройства. Лучше всего организовать структуру в которой бы описывалась внутренняя организация регистров и ячеек памяти для данных. Для компилятора надо указывать тип данных, как внешняя память.


Вот например в ISP1581 есть адрес Mode 0x0C.
Задача: записать в этот адрес какое-нибудь число, затем прочитать.
Просто сначала хочу хотя бы это научится, потом буду думать как соотнести адресное пространство внешней памяти контроллера с адресами в USB1581
Go to the top of the page
 
+Quote Post
mse
сообщение Dec 22 2005, 13:12
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата
от например в ISP1581 есть адрес Mode 0x0C.
Задача: записать в этот адрес какое-нибудь число, затем прочитать.

Код
  ...
      cbi   portX,_CS_ISP1581_
      ldi   r16,direct_data
      sts  $1100+$0c,r16
      lds  r16,$1100+$0c
      sbi  portX,_CS_ISP1581_
  ...
Go to the top of the page
 
+Quote Post
nagserg
сообщение Dec 22 2005, 14:06
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Спасибо огромное за ответы, смысл понятен, хотелось бы конечно на Си, а то я в ассемблере ни бум-бум.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Dec 22 2005, 14:44
Сообщение #10


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



char *ptr_p, getit;

ptr_p = (char*)0xffff;

getit = *ptr_p; // read

*ptr_p = getit; // write


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 25 2005, 23:56
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Rash @ Dec 22 2005, 11:51) *
А какую внешню память в качестве ОЗУ используете, её тип?


Используем SRAM. дешевые и доступные микросхемы UT621024-LL70, UT62256-LL70.
Стандартная схема включения через защелки (LATCH). В качестве защелки используем отечественный 1533ИР22. А для работы с внешней памятью в C не требуется никаких специфических телодвижений.. MCUCR = ( 1 << SRE) и все..

на асме аналогично

Код
ldi al, (1 << SRE)
out MCUCR, al


и читать/писать ld/st, lds/sts как и внутренний SRAM.

Читать с определенного адреса:
Код
ldi  ZH, High( Определенный адрес)
ldi  ZL, Low( Определенный адрес)
ld  AL, Z


на C будет типа такого:

Код
  char* vp = (char *)Определенный Адрес;
  char  a;
   a = *vp;  // читать
   *vp = a;  // писать
Go to the top of the page
 
+Quote Post
_artem_
сообщение Dec 26 2005, 00:10
Сообщение #12


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



defunct , ram kotorij ti upomyanul - on nizkoskorostnoj . Na 16 MHz ne ponyanet bez wait steyta. Lucse ispolzovat fast asynchronous sram's szaderzkoj do 20 nanosec. Primeri podobnyx chipov mozno nayti v STK501 guide gde recommenduyutsya tipy sram'ov dlja zapajki .


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
nagserg
сообщение Dec 26 2005, 09:19
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



char* vp = (char *)Определенный Адрес;
char a;
a = *vp; // читать
*vp = a; // писать

Так всё работает прекрасно, но вот возник такой вопрос: создана структура типа:

typedef union
{
unsigned char byte;
struct
{
unsigned char b0 : 1;
unsigned char b1 : 1;
unsigned char b2 : 1;
unsigned char b3 : 1;
unsigned char b4 : 1;
unsigned char b5 : 1;
unsigned char b6 : 1;
unsigned char b7 : 1;
} bit_field;
} as_bit_field_of_byte;
Go to the top of the page
 
+Quote Post
nagserg
сообщение Dec 26 2005, 10:49
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 12-05-05
Пользователь №: 4 940



Цитата(nagserg @ Dec 26 2005, 12:19) *
char* vp = (char *)Определенный Адрес;
char a;
a = *vp; // читать
*vp = a; // писать

Так всё работает прекрасно, но вот возник такой вопрос: создана структура типа:

typedef union
{
unsigned char byte;
struct
{
unsigned char b0 : 1;
unsigned char b1 : 1;
unsigned char b2 : 1;
unsigned char b3 : 1;
unsigned char b4 : 1;
unsigned char b5 : 1;
unsigned char b6 : 1;
unsigned char b7 : 1;
} bit_field;
} as_bit_field_of_byte;


Каким образом привязать адрес этой структуры к "Определенному адресу" char* vp = (char *)Определенный Адрес;
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 27 2005, 00:00
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(_artem_ @ Dec 26 2005, 02:10) *
defunct , ram kotorij ti upomyanul - on nizkoskorostnoj . Na 16 MHz ne ponyanet bez wait steyta. Lucse ispolzovat fast asynchronous sram's szaderzkoj do 20 nanosec. Primeri podobnyx chipov mozno nayti v STK501 guide gde recommenduyutsya tipy sram'ov dlja zapajki .


20нс абсолютно не нужно. Не настолько быстр AVR как этого хотелось бы.

Приведенная мной 70нс память, работает без дополнительных waitstate и на 14.7456 Mhz, и на 16 Mhz. AVR считывает ячейку памяти (без waitstate) за три такта, длительность такта будет равна 62.5 нс при Fosc = 16Mhz, соответственно длительность строба RD/WR равна 2*62.5нс = 125 нс, что вполне удовлетворяет требованиям памяти (у приведенных микросхем памяти длительность цикла чтения/записи - 70нс).
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01526 секунд с 7
ELECTRONIX ©2004-2016