Некоторые нюансы использования микроконтроллера W78E516.
Как-то разрабатывал устройство, управляемое микроконтроллером W78E516, в качестве индикатора применил графический ЖКИ WG12864A. При разработке печатной платы получилось, что шина данных индикатора была подключена к линиям порта Р2 микроконтроллера.
Включаю устройство. В основном не запускается, очень редко запуск все же происходит. И так, и сяк — ничего не получается. Провозился пару дней и все-таки разобрался.
Итак.
Как известно, W78E516 имеет два вида памяти программ: основную, объемом 64К (APROM) и дополнительную, объемом 4К (LDROM). Основное назначение LDROM – хранить программу, с помощью которой можно перепрошить основную память программ. Можно использовать и для других целей, а можно и не использовать. Таким образом, старт микроконтроллера может производиться как с нулевого адреса APROM, так и с нулевого адреса LDROM, причем активация старта LDROM происходит в том случае, если при подаче питания на микроконтроллер линии порта Р2 (!) Р2.6 и Р2.7 находятся в состоянии логического нуля. И, как оказалось, на линиях шины данных индикатора WG12864A при подаче питания появлялись нули, что приводило к старту программы микроконтроллера из LDROM, но, поскольку мной этот вид памяти в данном случае не использовался, то есть содержал коды 0FFH, микроконтроллер как бы «подвисал».
Таким образом, для обеспечения нормального функционирования микроконтроллера нужно было обеспечить при его старте надежные логические единицы на линиях Р2.6 и Р2.7.
Можно было переработать печатную плату, но желание и время отсутствовали — нужно было бы заново изготовить плату и спаять макет.
Поэтому было решено применить другой, несколько «извращенный» метод решения возникшей проблемы. Для LDROM была написана программа, повторяющая начальный фрагмент основной программы, инициализирующий, в частности, ЖКИ WG12864A. Оканчивалась программа в LDROM следующим фрагментом:
CHPENR:=$87;
CHPENR:=$59;
chpcon:=$83;
который позволял перейти старту программы, содержащейся в APROM. И все заработало.
В дальнейшем, при разработке платы серийного образца, линии порта Р2 Р2.6 и Р2.7 уже использовались иначе, проблема исчезла, также исчезла необходимость в программных «извращениях».
|