Easyelectronics.ru

Электроника для всех
Текущее время: 18 окт 2019, 19:01

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 21 мар 2019, 17:15 
Здравствуйте!

Зарегистрирован: 21 мар 2019, 17:11
Сообщения: 2
Добрый день. Собрал простую схемку в симуляторе (архив прилагаю ниже). Программа элементарная - дёргаю ноги порта P1 и работаю с пока отсутствующей на схеме внешней памятью. Но как только начинаю выполнять эту же программу с ПЗУ, начинается необъяснимое. Счетчик PC принимает некорректные значения, порт P1 не переключается. Почему? Что происходит? Опытным путём установил, если закомментировать все команды movx, программа с ПЗУ выполняется корректно. Как так? Неужели ядро 8051 не позволяет обращаться к внешней памяти по время исполнения программы с ПЗУ? Где я допустил ошибку?


Вложения:
scheme.png
scheme.png [ 32.83 Кб | Просмотров: 676 ]
simscheme.zip [46.78 Кб]
Скачиваний: 39
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 21 мар 2019, 20:18 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4097
Откуда: г. Липецк
Сходу не ответишь, применение MOVX отменяет /PSEN и вместо него вырабатываются /RD или /WR. Единственное что пришло в голову, посадите /CE (chip enable) на землю.
P.S. Вы случайно SW1 не на ходу переключаете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 22 мар 2019, 19:16 
Здравствуйте!

Зарегистрирован: 21 мар 2019, 17:11
Сообщения: 2
SW1 переключаю и так и сяк - что перед стартом, что во время симуляции - на конечный результат это не влияет...
Посадил CE на землю, безуспешно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 22 мар 2019, 23:13 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4097
Откуда: г. Липецк
Скачал simscheme.zip, посмотрел, полный пипец. Одни магические числа, надо переводить в удобочитаемый код.
Утрирую конечно, понять можно, но читать неприятно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 25 мар 2019, 07:53 
Заглядывает иногда

Зарегистрирован: 14 ноя 2014, 15:16
Сообщения: 51
Скорее всего модель не совсем правильно смоделирована.
Я как-то пытался этот проц в sleep загнать - он после
прерывания вообще улетал не понятно куда.
Хотя не плохо-бы проверить в реале.
А вообще-то для этого есть Data Memory Map / Code Memory Map.
И вроде от туда даже можно исполнять код.
А с внешней памятью постоянно сыпятся сообщения о коллизии на шине.
Хотя код исполняется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 25 мар 2019, 16:54 
Старожил

Зарегистрирован: 08 июл 2013, 17:00
Сообщения: 234
Потискал проект. Обрати внимание на адреса, когда вылезает окно с сообщением: такое ощущение, что отрисовщик окон делает это в тот момент, когда модель инкрементирует РС, то есть модель делает

inc PC
inc PC
inc PC

а не РС=РС+2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Proteus внешняя EEPROM, странное поведение регистра PC
СообщениеДобавлено: 26 мар 2019, 19:35 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4097
Откуда: г. Липецк
Применять программные модели Proteus так-же как и настоящий камень это ошибка. Программная модель может эмулировать чтение команд из внешней памяти данных, но читать будет все равно из файла указанного в ее свойствах. Ведь програмная модель находится в DLL и не может прочитать Netlist схемы и разобрать его по правилам PSpice. Так никакого быстродействия компьютера не хватит. Покажу как это выглядит, сначала работаем c внешним ОЗУ без имитации использования внешней памяти программ (RamData.png).
Теперь в свойствах контроллера включим "Simulate Program Fetches" и имитируем использование внешней памяти программ (RomData.png).
И для чего это имитировать, программа для контроллера будет совершенно одинакова как при использовании внутренней, так и при использовании внешней памяти программ, зачем все усложнять?


Вложения:
RamData.png
RamData.png [ 16.46 Кб | Просмотров: 392 ]
RomData.png
RomData.png [ 16.81 Кб | Просмотров: 392 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB