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

 
 
> Количество стробов ALE, Работа с внешним ОЗУ
tonjo
сообщение Nov 25 2006, 19:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190



Не понимаю, зачем при работе с внешним ОЗУ mega посылает три строба ALE за один период чтения или записи? Помогите пожалуйста разобраться!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Nov 27 2006, 16:56
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(tonjo @ Nov 25 2006, 16:21) *
Не понимаю, зачем при работе с внешним ОЗУ mega посылает три строба ALE за один период чтения или записи? Помогите пожалуйста разобраться!

Вроде не должно быть так. Мега должна посылать один строб ALE за один цикл чтения/записи в/из внешней памяти (3+ тактов процессора). В цикле чтения/записи внешней памяти не должно быть обращения к внутренней ОЗУ.

Как вы определили, что именно за ОДИН период чтения посылается три строба ALE? Какие команды вы использовали для чтения и записи?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
tonjo
сообщение Nov 27 2006, 22:04
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190



Цитата(=GM= @ Nov 27 2006, 16:56) *
Как вы определили, что именно за ОДИН период чтения посылается три строба ALE? Какие команды вы использовали для чтения и записи?

То что за один период чтения или записи - то это посмотрел осциллографом. Т.е. идет строб ALE, затем адрес, данные. Потом строб WR или RD заканчивается и появляются ещё два строба ALE, расстояние между которыми примерно 1мкс (контроллер работает на частоте 8МГц).
На С пишу недавно и не исключаю, что неправильно написал программу (контроллер mega128). Привожу код:

#define offset 0x1100
void WriteByte(unsigned char Addr, unsigned char Data)
{
unsigned char *pSRAM = (unsigned char *)(offset+Addr);
*pSRAM = Data;
}
unsigned char ReadByte(unsigned char Addr)
{
unsigned char *pSRAM = (unsigned char *)(offset+Addr);
return *pSRAM;
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 05:49
Рейтинг@Mail.ru


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