HT48ехх микроконтроллер компании Holtek Semiconductor: микропотребление + МТР-память

№ 10’2006
PDF версия
Микроконтроллеры с однократно программируемой памятью (ОТР) широко используются в серийных изделиях благодаря своей надежности, простоте в эксплуатации и дешевизне. Однако программы с течением времени имеют тенденцию, как и «железо», устаревать, а их модернизация для контроллеров с ОТР достаточно проблематична. Наиболее простое решение этой проблемы — применение микроконтроллеров с многократно программируемой памятью (МТР) — не всегда подходило из-за разницы в стоимости микроконтроллеров с ОТР и МТР. Компания Holtek Semiconductor решила эту проблему, выпустив микроконтроллеры с МТР-памятью, стоимость которых сопоставима с ценами на микроконтроллеры с ОТР-памятью.

Микроконтроллеры с однократно программируемой памятью (ОТР) широко используются в серийных изделиях благодаря своей надежности, простоте в эксплуатации и дешевизне. Однако программы с течением времени имеют тенденцию, как и «железо», устаревать, а их модернизация для контроллеров с ОТР достаточно проблематична. Наиболее простое решение этой проблемы — применение микроконтроллеров с многократно программируемой памятью (МТР) — не всегда подходило из-за разницы в стоимости микроконтроллеров с ОТР и МТР. Компания Holtek Semiconductor решила эту проблему, выпустив микроконтроллеры с МТР-памятью, стоимость которых сопоставима с ценами на микроконтроллеры с ОТР-памятью.

Микроконтроллеры нового семейства НТ48Ехх позволяют перепрограммировать память программ до 1000 раз с помощью интерфейса внутрисистемного программирования (ISP) (можно использовать код, написанный для уже используемых микроконтроллеров). Эта возможность быстро и легко изменять программу микроконтроллера в уже выпускаемых изделиях позволяет снизить затраты и время на их модернизацию, а также сократить время разработки новых устройств. Например, код программы можно записать непосредственно перед отгрузкой изделий заказчику.

Серия 8-разрядных микроконтроллеров I/O типа HT48Eхх состоит из пяти новых приборов: НТ48Е06, НТ48Е10, НТ48Е30, НТ48Е50 и НТ48Е70. Основные характеристики этих микроконтроллеров приведены в таблице 1.

Таблица 1. Основные характеристики микроконтроллеров НТ48Ехх

Подробнее параметры микроконтроллеров серии НТ48Ехх разберем на примере НТ48Е30.

Микроконтроллер HT48E30, как и остальные приборы этого семейства, представляет собой высококачественный 8-разрядный микроконтроллер с RISC-архитектурой, специально разработанный для управления множеством линий ввода/вывода (рис. 1). Очень небольшое потребление (табл. 2), гибкость при работе с линиями ввода/вывода, внутренний программируемый делитель частоты (PFD) прибора, программируемый для формирования на выходе различных частот, вместе с таймером/счетчиком событий, контроллером прерываний и другими функциями предоставляют разработчикам широкие возможности применения этих приборов в самых различных устройствах. Если сюда добавить еще встроенные таймер и генератор, функции HALT и WAKE-UP, сторожевой таймер, драйвер зуммера и низкую цену, то получается универсальный прибор, почти идеальный для применения в самых различных устройствах — от промышленных систем управления, потребительских товаров до контроллерных подсистем и т. д.

Рис. 1. Блок-схема микроконтроллера серии НТ48хх на примере НТ48Е30
Таблица 2. Рабочие напряжения и токи потребления НТ48Ехх

Чтобы не повторяться, остановимся на тех особенностях НТ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).

Рис. 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), регистр управления таймером/счетчиком событий (TMRС; 0ЕH), регистр младшего байта программного счетчика (МР; 01Н), аккумулятор (АСС; 05Н), указатель таблицы (TBLP; 07Н), регистр старшего байта таблицы (TBLН; 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Н до 7FН используется для данных и управляющей информации.

С каждой ячейкой памяти непосредственно можно выполнять арифметические, логические операции, а также операции инкремента, декремента и команды циклического сдвига. За исключением нескольких специальных битов, каждый бит памяти данных может быть установлен или сброшен командами SET [m].i и CLR [m].i. Возможна также косвенная адресация через регистры указания памяти (МР).

Доступ к EEPROM памяти данных с организацией 128‡8 бит выполняется через трехпроводной последовательный интерфейс с помощью регистра управления EECR (косвенная адресация), расположенного по адресу 40Н в банке 1. Для работы с этой памятью используются семь команд: READ, ERASE, WRITE, EWEN, EWDS, ERAL и WRAL с 10-разрядной организацией (1 стартовый бит, 2 бита кода операции и 7 адресных битов).

С целью экономии времени и денег Holtek Semiconductor предусмотрела в ИС серии НТ48Ехх внутрисистемное программирование для программирования и перепрограммирования микроконтроллера, уже установленного в устройстве. Использование простого 3-проводного интерфейса (табл. 3) позволяет, таким образом, работать с памятью программ и памятью данных EEPROM непосредственно на кристалле.

Таблица 3. Трехпроводной интерфейс для внутрисистемного программирования

Счетчик программ

Счетчик программ управляет последовательностью выполнения команд, которые хранятся в ПЗУ программ, и определяет полный диапазон памяти программ. Его содержимое увеличивается на 1 после выборки кода команды из памяти. При выполнении команд перехода (безусловного и условного), загрузки в регистр PCL, входа и возврата из подпрограммы, инициализации сброса, внутреннего и внешнего прерываний или возврата из прерывания счетчик программ выполняет переход программы загрузкой адреса, соответствующего конкретной команде.

Системный тактовый генератор работает или от кварца или от RC-цепи и формирует 4 отдельные тактовые последовательности, четыре такта которой составляют один цикл команд. Для ускорения выполнения команд применяется конвейерная система, при которой выборка команды выполняется за один командный цикл, а декодирование и выполнение — за второй, что позволяет реально выполнять команду за один цикл. Два цикла на выполнение команды необходимо только в том случае, если команда изменяет содержимое программного счетчика (вызов подпрограммы или безусловный переход).

К вышесказанному следует добавить, что компания Holtek выпускает чрезвычайно мощный и дружественный набор средств разработки, в составе которого внутрисхемный эмулятор, интегрированная среда разработки HT-IDE3000, работающая под ОС Windows, программаторы, примеры применения и т. д. Все эти средства разработки являются очень эффективным набором, гарантирующим быструю разработку и отладку прикладных программ. Кроме того, компания Holtek Semiconductor теперь выпускает Starter Kit для этих приборов, которые обеспечивают новичков основными аппаратными и программными средствами. При помощи пяти имеющихся примеров можно быстро ознакомиться с работой и внутренней архитектурой микроконтроллеров для преодоления обычных трудностей и неудач, возникающих при разработке новых устройств.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *