НТ48ехх:
микропотребление + МТР-память
Николай РАКОВИЧ
Микроконтроллеры с однократно программируемой памятью (ОТР) широко используются в серийных изделиях благодаря своей надежности, простоте в эксплуатации и дешевизне. Однако программы с течением времени имеют тенденцию, как и «железо», устаревать, а их модернизация для контроллеров с ОТР достаточно проблематична. Наиболее простое решение этой проблемы — применение микроконтроллеров с многократно программируемой памятью (МТР) — не всегда подходило из-за разницы в стоимости микроконтроллеров с ОТР и МТР. Компания Holtek Semiconductor решила эту проблему, выпустив микроконтроллеры с МТР-памятью, стоимость которых сопоставима с ценами на микроконтроллеры с ОТР-памятью.
Микроконтроллеры нового семейства НТ48Ехх позволяют перепрограммировать память программ до 1000 раз с помощью интерфейса внутрисистемного программирования (ISP) (можно использовать код, написанный для уже используемых микроконтроллеров). Эта возможность быстро и легко изменять программу микроконтроллера в уже выпускаемых изделиях позволяет снизить затраты и время на их модернизацию, а также сократить время разработки новых устройств. Например, код программы можно записать непосредственно перед отгрузкой изделий заказчику.
Серия 8-разрядных микроконтроллеров I/O типа HT48Eхх состоит из пяти новых приборов: НТ48Е06, НТ48Е10, НТ48Е30, НТ48Е50 и НТ48Е70. Основные характеристики этих микроконтроллеров приведены в таблице 1.
Подробнее параметры микроконтроллеров серии НТ48Ехх разберем на примере НТ48Е30.
Микроконтроллер HT48E30, как и остальные приборы этого семейства, представляет собой высококачественный 8-разрядный микроконтроллер с RISC-архитектурой, специально разработанный для управления множеством линий ввода/вывода (рис. 1). Очень небольшое потребление (табл. 2), гибкость при работе с линиями ввода/вывода, внутренний программируемый делитель частоты (PFD) прибора, программируемый для формирования на выходе различных частот, вместе с таймером/счетчиком событий, контроллером прерываний и другими функциями предоставляют разработчикам широкие возможности применения этих приборов в самых различных устройствах. Если сюда добавить еще встроенные таймер и генератор, функции HALT и WAKE-UP, сторожевой таймер, драйвер зуммера и низкую цену,
Таблица 1. Основные характеристики микроконтроллеров НТ48Ехх
Характеристика НТ48Е06 НТ48Е10 НТ48Е30 НТ48Е50 НТ48Е70
Двунаправленные линии ввода/вывода 19 19 23 33 56
Многократно программируемая память программ (МТР), бит 1024x14 1024x14 2048x14 4096x15 8192x16
EEPROM память данных, бит 128x8 128x8 128x8 256x8 256x8
ОЗУ данных, бит 64x8 64x8 96x8 160x8 224x8
Рабочее напряжение при fSYS = 4 МГц при fSYs = 8 МГц ca сс
Сброс при снижении напряжения питания +
Вход прерывания, совмещенный с линией ввода/вывода +
8-битный программируемый таймер/счетчик событий с прерыванием по переполнению и 8-битным предварительным делителем +
Встроенный кварцевый и RC-генератор +
Сторожевой таймер +
Память программ может быть перезаписана 1000 раз +
Дифференциальный драйвер зуммера и поддержка внутреннего программируемого делителя частоты (PFD) +
Функции HALT и WAKE-UP для пониженного потребления +
Двухуровневый стек +
Время выполнения команд при частоте 8 МГц и напряжении питания Vdd = 5 В до 0,5 мкс +
Команды манипуляции с битами +
14-разрядные команды +
63 мощных команды +
Перезапись EEPROM памяти данных, раз 106
Время хранения данных в EEPROM памяти при отключенном питании не менее, лет 10
Выполнение всех команд 1 или 2 цикла
Поддержка внутрисистемного программирования (ISP) +
Корпус 18-контактный DIP/SOP, 20-контактный SSOP 24-контактный SKDIP/SOP 24/28- контактный SKDIP/SOP 28-контактный SKDIP/SOP, 48 контактный SSOP 48-контактный SSOP, 64-контактный QFP
Таблица 2. Рабочие напряжения и токи потребления НТ48Ехх
Параметр Условия Мин. Тип Макс.
Рабочее напряжение, В f SYS — 4 Міц fSYS — 8 МГц 2,2 3,3 - 5.5 5.5
Рабочий ток, мА (кварцевый генератор), напряжение питания 3 В Без нагрузки, fSYS — 4 МГц - 0,6 1,5
напряжение питания 5 В - 2 4
Рабочий ток, мА ^С генератор), 0,8 2,5 1,5 4
напряжение питания 3 В напряжение питания 5 В Без нагрузки, fSYS — 4 МГц -
Рабочий ток, мА, напряжение питания 5 В Без нагрузки, fSYS — 8 МГц - 4 8
Ток в режиме ожидания (сторожевой таймер запущен), мкА Без нагрузки, система HALT - - 5 10
Ток в режиме ожидания (сторожевой таймер остановлен), мкА Без нагрузки, система HALT - - 1 2
Резистор нагрузки, кОм, напряжение питания 3 В напряжение питания 5 В 20 10 60 30 100 50
INT/PGO
Рис. 1. Блок-схема микроконтроллера серии НТ48хх на примере НТ48Е30
то получается универсальный прибор, почти идеальный для применения в самых различных устройствах — от промышленных систем управления, потребительских товаров до контроллерных подсистем и т. д.
Чтобы не повторяться, остановимся на тех особенностях НТ48Ехх, которые являются определяющими для этого семейства.
Линии ввода/вывода
Все двунаправленные линии ввода/вывода (23 — для НТ48Е30) могут работать как на ввод, так и на вывод. Регистры линий ввода/вывода обозначаются от РА до РС и РG и находятся в памяти данных по адресам [12H], [14H], [16H] и [1EH] (для НТ48Е30). При приеме данных на вход эти порты не работают как защелки, поэтому их содержимое должно быть считано по фронту Т2 команды MOV A [m]_ (m=12H, 14H, 16H или 1EH). Регистры работают как защелка при выводе данных, и их состояние не меняется до тех пор, пока не будут записаны новые данные.
Для создания нужной конфигурации ввода/вывода каждая линия имеет собственный регистр управления (PAC, PBC, PCC, PGC), который позволяет динамически конфигурировать структуру входа (триггер Шмитта) и выхода (КМОП) с или без нагрузочных резисторов программным способом. Если для входа возможны различные варианты структуры, то КМОП-выход является единственно возможным.
По сбросу на линиях ввода/вывода «висят» высокие уровни или они находятся в высо-коимпедансном состоянии (в зависимости от нагрузочных резисторов). Доступ к регистрам-защелкам ввода/вывода реализован побитно, и их установка или сброс выполняются по командам SET [m].i иCLR [m].i (m=12H, 14H, 16H или 1EH). Для упрощения труда разработчика некоторые команды начинают работать с входящими данными, а завершают свою работу уже с выходом. Например, команды SET [m].i, CLR [m].i, CPL [m], CPLA [m] считывают состояние порта в микропроцессор, выполняют определенные операции (в побитном режиме), а затем записывают результаты в защелки или в аккумулятор.
Запуск НТ48Ехх может выполняться по каждой линии порта А. Кроме того, для всех линий ввода/вывода реализована возможность подключения нагрузочных резисторов (побитно): при выборе этой функции на линию ввода/вывода подключается нагрузочный резистор по питанию. Следует отметить, что работа линии ввода/вывода во входном режиме без нагрузочного резистора может привести к высокоимпедансному состоянию.
Для работы с пьезоизлучателем BZ предназначены две линии — РВ0 и РВ1. Если задан режим сигнала BZ, то при появлении сигнала переполнения от таймера/счетчика событий 0 на выводы РВ0/РВ1 подается импульсный сигнал звуковой частоты. Эти выходные сигналы управляются только регистром данных РВ0. Входной режим при этом остается без изменений.
Для снижения потребления в высокоимпе-дансном режиме рекомендуется неиспользуемые линии устанавливать как выходные выводы (программным способом).
Память программ
В ИС серии НТ48Ехх (с возможностью перезаписи до 1000 раз!) хранятся исполняемые команды. Кроме того, в этой памяти находятся данные, таблица и входы прерываний.
Функционально память программ разбита на несколько блоков (рис. 2).
ооон Программа инициализации
004Н Подпрограмма обработки внешнего прерывания
008Н Подпрограмма обработки прерывания от таймера/счетчика событий
пООН nFFH Таблица поиска (256 слов)
700Н 7FFH Таблица поиска (256 слов)
Рис. 2. Память программ микроконтроллера серии НТ48хх на примере НТ48Е30 (n = 0—7)
Блок с начальным адресом 000H предназначен для инициализации программ. После сброса программа всегда начинает работать с адреса 000Н.
В блоке 004Н находится программа обслуживания внешнего прерывания. Если на выводе INT появляется активный сигнал, прерывание разрешено и стек не полон, то программа начнет работу с ячейки памяти с адресом 004Н.
Программа обработки прерываний от таймера/счетчика событий (при переполнении последнего и разрешении прерывания) запускается с адреса 008Н.
Любая часть памяти программ может быть использована для размещения таблицы поиска. По командам TABRDC [m] (текущая страница, одна страница — 256 слов) и TABRDL [m] (последняя страница) содержимое младшего байта передается в специальную память данных, а старшего байта — в TBLH (08H). В таблице жестко определено место младшего байта, остальные биты табличного слова преобразуются в младшую часть регистра TBLH, а оставшиеся 2-битные слова читаются как ноль. Содержимое регистра старшего байта таблицы (TBLH) можно только прочитать, а указатель таблицы (TBLP 07Н) работает и на чтение, и на запись. Если основная программа и подпрограмма
обслуживания прерывания (ISR) выполняют команду чтения, то содержимое TBLH в основной программе должно быть изменено командой чтения, используемой в ISR. Однако это может привести к ошибке. Поэтому необходимо избегать одновременного чтения в основной программе и в подпрограмме обработки прерывания. Все табличные команды выполняются за два цикла.
Память данных
Память данных (RAM) делится на две части (неравные): регистры специальных функций и память общего назначения. В основном память полностью доступна для записи/чтения, за исключением нескольких регистров, которые только читаются. Регистры специальных функций аналогичны таким же регистрам микроконтроллеров с ОТР, поэтому только перечислим их: регистры косвенной адресации (R0; 00Н), таймер/счетчик событий (TMR; 0DH), регистр управления таймером/счетчиком событий (TMRC; 0EH), регистр младшего байта программного счетчика (МР; 01Н), аккумулятор (АСС; 05Н), указатель таблицы (TBLP; 07Н), регистр старшего байта таблицы (TBLH; 08Н), регистр состояния (STATUS; 0АН), регистр управления прерыванием (INTC;0BH), регистр установки параметров сторожевого таймера (WDTS; 09H), регистры ввода/вывода (PA; 12H, PB; 14H, PC; 16H, PG; 1EH) и регистры управления вводом/выводом (PAC; 13H, PBC; 15H, PCC; 17H, PGC; 1FH). Оставшаяся память до адреса 20Н зарезервирована для будущего применения и при чтении всегда дает 00Н. Память общего применения с адресом от 20Н до 7FH используется для данных и управляющей информации.
С каждой ячейкой памяти непосредственно можно выполнять арифметические, логические операции, а также операции инкремента, декремента и команды циклического сдвига. За исключением нескольких специальных битов, каждый бит памяти данных может быть установлен или сброшен командами SET [m].i и CLR [m].i. Возможна также косвенная адресация через регистры указания памяти (МР).
Доступ к EEPROM памяти данных с организацией 128x8 бит выполняется через трехпроводной последовательный интерфейс с помощью регистра управления EECR (косвенная адресация), расположенного по адресу 40Н в банке 1. Для работы с этой памятью используются семь команд: READ, ERASE, WRITE, EWEN, EWDS, ERAL и WRAL с 10-разрядной организацией (1 стартовый бит, 2 бита кода операции и 7 адресных битов).
С целью экономии времени и денег Holtek Semiconductor предусмотрела в ИС серии НТ48Ехх внутрисистемное программирование для программирования и перепрограммирования микроконтроллера, уже установленного в устройстве. Использование про-
Таблица 3. Трехпроводной интерфейс для внутрисистемного программирования
Вывод Функция Описание
PAO SDATA Ввод/вывод последовательных данных
PA4 SCLK Вход тактового сигнала
RES RESET Сброс устройства
VDD VDD Напряжение питания
VSS VSS «Земля»
стого 3-проводного интерфейса (табл. 3) позволяет, таким образом, работать с памятью программ и памятью данных EEPROM непосредственно на кристалле.
Счетчик программ
Счетчик программ управляет последовательностью выполнения команд, которые хранятся в ПЗУ программ, и определяет полный диапазон памяти программ. Его содержимое увеличивается на 1 после выборки кода команды из памяти. При выполнении команд перехода (безусловного и условного), загрузки в регистр PCL, входа и возврата из подпрограммы, инициализации сброса, внутреннего и внешнего прерываний или возврата из прерывания счетчик программ выполняет переход программы загрузкой адреса, соответствующего конкретной команде.
Системный тактовый генератор работает или от кварца или от RC-цепи и формирует 4 отдельные тактовые последовательности, четыре такта которой составляют один цикл команд. Для ускорения выполнения команд применяется конвейерная система, при которой выборка команды выполняется за один командный цикл, а декодирование и выполнение — за второй, что позволяет реально выполнять команду за один цикл. Два цикла на выполнение команды необходимо только в том случае, если команда изменяет содержимое программного счетчика (вызов подпрограммы или безусловный переход).
К вышесказанному следует добавить, что компания Holtek выпускает чрезвычайно мощный и дружественный набор средств разработки, в составе которого внутрисхемный эмулятор, интегрированная среда разработки HT-IDE3000, работающая под ОС Windows, программаторы, примеры применения и т. д. Все эти средства разработки являются очень эффективным набором, гарантирующим быструю разработку и отладку прикладных программ. Кроме того, компания Holtek Semiconductor теперь выпускает Starter Kit для этих приборов, которые обеспечивают новичков основными аппаратными и программными средствами. При помощи пяти имеющихся примеров можно быстро ознакомиться с работой и внутренней архитектурой микроконтроллеров для преодоления обычных трудностей и неудач, возникающих при разработке новых устройств. ■