\
МИКРОКОНТРОЛЛЕРЫ
і
Александр Черномырдин
г. М агнитогорск
E-mail: chav1961 © ra d io lig a .co m
Д и н а м и ч е с к а я и н д и к а ц и я ,
р а б о та с м а тр и ц е й кл а в и а ту р ы и Э С П П ЗУ
fe v
О кончание.
Н ачало в № 4-5/2006
Работа с ЭСППЗУ
ЭСППЗУ - это электрически стираемое перепрограммируе-
мое запоминающее устройство емкостью 64 байта, инфор-
мация в котором не пропадает при выключении питания мик-
роконтроллера. Обычно в нем хранят различного рода иден-
тификационные номера или настройки, чтобы, например, при
включении микроконтроллера привести устройство в то со-
стояние, в котором оно было перед выключением. ЭСППЗУ
позволяет выполнять две операции - запись в ЭСППЗУ бай-
та по заданному адресу, и чтение из ЭСППЗУ байта с задан-
ным адресом.
Основная проблема при работе с ЭСППЗУ - скорость
доступа. Операция чтения из ЭСППЗУ занимает около
400 мксек, а записи - до 5 мсек (!), поэтому при работе с
ЭСППЗУ скорость работы программ резко падает (из-за дли-
тельного ожидания данных). Невысокая скорость работы с
ЭСППЗУ - довольно частое обвинение в адрес разработчи-
ков микроконтроллера КР1878ВЕ1, и в этом он действитель-
но проигрывает другим микроконтроллерам (впрочем, несу-
щественно), но, тем не менее, существует очень простое и
изящное решение этой проблемы, известное в “большом”
программировании на протяжении многих лет-теневое ОЗУ.
Идея теневого ОЗУ заключается в следующем. В начале
работы микроконтроллера, на стадии инициализации, содер-
жимое ЭСППЗУ предварительно считывается в специально
отведенную для этого область ОЗУ, которая и называется
теневым ОЗУ. Когда нам требуется прочитать информацию
Итак, вот ка к будет выглядеть работа с теневым ОЗУ:
из ЭСППЗУ, мы вместо этого забираем ее непосредствен-
но из нужной ячейки ОЗУ. Если же нам требуется записать
в ЭСППЗУ информацию, мы заносим ее в теневое ОЗУ, а
затем запускаем процесс записи первого байта теневого
ОЗУ в ЭСППЗУ (фактически - процесс вы грузки данных
из ОЗУ в ЭСППЗУ). Однажды запущенный процесс записи
выполняется затем параллельно с работой микроконтрол-
лера. После окончания записи первого байта аппаратура
процессора вырабатывает сигнал прерывания по записи в
ЭСППЗУ. В свою очередь, обработчик прерывания по запи-
си в ЭСППЗУ запускает процесс записи следующего байта,
и так продолжается до тех пор, пока все теневое ОЗУ не бу-
дет выгружено обратно в ЭСППЗУ. Такой способ работы с
ЭСП ПЗУ радикально решает проблему быстродействия - ни-
какое самое распрекрасное ЭСППЗУ не сравнится по скоро-
сти работы с оперативной памятью, а сам процесс записи
при этом растянут по времени и практически не загружает
процессор микроконтроллера.
Рассмотрим фрагмент программы, реализующий рабо-
ту с теневым ОЗУ. Будем предполагать, что в ЭСППЗУ хра-
нится 16 байт информации по адресам 00Ь.
.0РЬ. Теневое ОЗУ
для этой информации расположим по адресам В0Ь.
.ВРЬ. По
адресам А8Ь.
.А9Ь располагается следующая информация:
• А
8
Ь - адрес текущ его выгружаемого символа
в ЭСППЗУ.
• А9Ь) - адрес текущ его выгружаемого символа
в теневом ОЗУ
start: jmp
Ьедіп
jmp
int 15
; <1> Переход на обработчик Прерываний по записи в ЭСППЗУ
begin:
t
<2> Загрузка данных из ЭСППЗУ в теневое ОЗУ.
ldr
#A,4Oh
; Сегмент А - рабочие ячейки программы.
ldr
#C,38h
Сегмент С - область регистров ЭСППЗУ.
movl
%a0,OFh
; Последний адрес из ЭСППЗУ, который будем грузить
; в теневое ОЗУ.
ldr
#4,OBFh
г
Последний адрес теневого ОЗУ.
ldr
#5,AUTODECREMENT
$2:
mov
%cl,%a0
; <3> Загрузить адрес считываемой ячейки в регистр адреса
; ЭСППЗУ.
movl
%c0,00000010b
г
Запустить операция чтения.
$1:
bttl
%c0,00000010b
/
Операция закончена?
jnz
$1
; Пока нет.
..
mov
%d6,%c7
г
Переписать считанный байт в Теневое ОЗУ.
42
t
I
Радиолюбитель - 06/2006
предыдущая страница 42 Радиолюбитель 2006-06 читать онлайн следующая страница 44 Радиолюбитель 2006-06 читать онлайн Домой Выключить/включить текст