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

 
 
> Вопрос по работе ATmega162 с внешней памятью
Vladimir_T
сообщение Dec 5 2006, 13:31
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Почему при обращении к внешней памяти, данные не стробируются сигналами WR/RD? Вот код, но что-то не учел, подскажите, пожалуйста... Давно бьюсь, документацию до дыр зачитал....

#define write_reg_addr 0x2000

MCUCR |= 1 << SRE; // enable external static memory
SFIOR |= 1 << XMBK; // enable bus keeper
SFIOR &= ~((1 << XMM0) | (1 << XMM1)); //enable section

*(byte*)write_reg_addr = 0x01; // Test XRAM
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Vladimir_T
сообщение Dec 5 2006, 18:16
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Когда сбрасываешь флаг доступа к внешней памяти, то сигналы появляются. Все работает

MCUCR &= ~(1 << SRE); // disable external static memory
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 5 2006, 19:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Непонял... Это что же получается: бит SRE в MCUCR работает строго наоборот, чем описано об этом в документации? Какое тогда его значение после сброса? По документам - ноль. Если и у Вас - также, то как mega162 нормально работает с портами PA, PC, PD7...PD6 в случае, если бит SRE никто не изменяет?
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 5 2006, 21:19
Сообщение #4


кекс
******

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



IAR сам инициализирует шину памяти.
General Options -> System ->Enable External Memory Bus

Для M162 IAR по-умолчанию инициализирует шину вот таким вот образом:

LDI R16, 0xC0 // <-- (1 << SRE) | (1 << SRW10)
OUT MCUCR, R16

проект с такой инициализацией уже давно в серии,
вероятно Вам стоит поискать проблему где-то в другом месте,
возможно Fuse бит M161C у Вас запрограммирован.
Go to the top of the page
 
+Quote Post
Vladimir_T
сообщение Dec 6 2006, 07:36
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073



Спасибо за помощь. Fuse бит M161C, действительно установлен. Проверил в настройках проекта
General Options -> System ->Enable External Memory Bus,
шина автоматически не инициализируется. но ведь утром программа заработала как надо, с инициализацией, как описал в посте #1. Странно это. Очень даже...
Проверял, конечно, по включении линии PA , PC инициализируютя как порты, а при установке бита SRE, они инициализируются как шина XMEM - все как описано в документе.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 6 2006, 09:09
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Так, может быть, все дело в fuse M161C? В mega161 нет работы с внешней памятью - вот работа с ней в mega162 в режиме совместимости с mega161 и происходит как-то криво?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:45
Рейтинг@Mail.ru


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