Задача. Не меняя набор возможностей на плате с 8031 во главе и не слишком трогая плату, расширить доступ к 5- 6 дополнительным регистрам. Первоначальная программа уже расковырена и не вызывает проблем ее модернизации с учетом новых регистров ввода вывода. Выбор на расширение пал на рилтаймклок RTC VT82885(DS18887 и др) . На его место в панельку встанет модуль расширения с установленным туда же RTC. На RTC приходит шина данных,CS(83xxh),ALE, RD,WR. Адресация внутренних регистров RTC, как помнится с 0 по 127 (8300...837f h) А все что выше 8380h хочу забрать для адресации дополнительных регистров. Набросал схемку расширения адресации регистров.(буфер шины не указан и пока не знаю нужен ли) Вопрос. Ничего не упустил?
А не смущает, что у MCS51 существует 2 типа movx - с Ri и DPTR в качестве указателя адреса? Ведь исходя из типа применяемых команд и работа дешифратора адреса/выборки кристалла отличаться будет... да и чем наборчик из сдвиговых регистров не устраивает - там всего-то 3 вывода надобно...
Даже если и использовать movx c Ri, то это только на первые 256 байт , что никак не скажется на адресах 83хх. Поэтому доступ только c DPTR. Кстати не помню, что фиксируется в P2 при movx c Ri? То что было до команды movx? То есть достаточно mov P2,#83h до и movx @Ri,A сработает? Переделка под другие типы, конечно, возможна, но приведет еще и к переделке модуля этих регистров. Честно говоря, этот модуль уже практически готов и переделка его не стоит планах.
А надо бы помнить - при movx @ri,a\movx a,@ri - Р2 НЕ ИСПОЛЬЗУЕТСЯ! (сохраняются предыдущие значения) Отсюда и возможные ошибки - при ВПД в 256 байт разработчик вероятнее всего воспользуется "короткими" командами, тем более, что там больше возможностей обмена с РПД. А Р2 будет использован для максимум "хитрого выбора" (ибо все равно содержит адрес ВПП это ведь 8031, а не машина со встроенным флеш-блоком пограммной памяти). Кстати, самой первой ступенью подобной "модернизации" была бы замена МК на AT89S52... или чего подобного с встроенной памятью программ.
Ну это уже про детские ошибки Когда, к примеру, в прерываниях начинают работать c Movx @Ri забыв про порт 2 спасибо что напомнили: повторение -мать учения
Есть ошибки программиста, есть ошибки схемотехника не ведающего особенностей как самого МК, так и его периферийных модулей. А есть и суммарный результат для любителя самоделок...
А по моему у меня ошибка. Что будет на шине данных при чтении из дополнительного регистра, если и RTC "подумает", что к нему обращение? Нужно посмотреть, что выдаст RTC на шину при адресации несуществующего регистра -выше 127. Тогда уж придется формировать CS для RTC иначе
Дак сначала хош с даташитом на RTC ознакомьтесь - там половина необходимой периферии ИНТЕГРИРОВАНА в самой ИС, а при замене/эквиваленте это все внешней "рассыпухой" городить прийдется.
Все верно, просмотрю и даташит еще раз. Но CS он и в Африке CS. Это по моему более надежно CS= CS(83xxh) +А7, если учесть сколько подобных версий RTC было сделано
Одна и та же область адресов используется как дешифратором, так и RTC, при условии наличия раздельных шин адреса... а тут как посмотреть - кусочек схемы (и скорее быстронабросанный скан) - не показатель.
Проще сделать "комбик" - повесить на одном адресе сдвиговый регистр (или 3-4регистра), загоняя на них последовательно необходимые битовые комбинации. А те входы/выходы регистров уже использовать в собственных целях. Тихоходное конечно сооружение, зато надежно и с широкими возможностями - практически второй параллельный интерфейс для МК видимый как программный SPI.
Сейчас этот форум просматривают: Google [Bot] и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения