Рефераты. 8-разрядные КМОП RISC микроконтроллеры с внутрисистемно программируемым Flash ПЗУ

При возникновении прерывания в счетчик команд загружается адрес соответствующего вектора прерывания. Если прерывания используются в программе, по адресам векторов прерываний должны размещаться команды перехода к подпрограммам обработки прерываний.

Как и во всех микроконтроллерах AVR, в микроконтроллерах семейства Mega используется конвейерная обработка команд.

Абсолютный вызов подпрограммы -- команда CALL

При выполнении команды после сохранения в стеке текущего значения счетчика команд в последний загружается число, являющееся операндом команды. С помощью этой команды можно осуществлять вызов в пределах всего адресного пространства имеющихся на сегодняшний день микроконтроллеров AVR.

Команда абсолютного вызова подпрограмм выполняется за 4 машинных цикла.

Косвенный вызов подпрограммы -- команда ICALL

Команда ICALL сначала сохраняет в стеке значение счетчика команд. Затем в счетчик команд загружается содержимое индексного регистра. Максимально возможная величина перехода составляет 64К слов (128 Кбайт), поэтому данная команда также не имеет ограничений по области действия.

Как и команда RCALL, команда косвенного вызова подпрограмм вы-полняется за 3 машинных цикла.

Команды возврата из подпрограмм

В конце каждой подпрограммы обязательно должна находиться команда возврата из нее. В системе команд микроконтроллеров семейства имеется две таких команды. Для возврата из обычной подпрограммы, вызываемой командой RCALL, используется команда RET. Для возврата из подпрограммы обработки прерывания используется команда RETI.

Обе команды восстанавливают из стека содержимое счетчика команд, сохраненное там перед переходом к подпрограмме. Команда возврата из подпрограммы RETI дополнительно устанавливает в «1» флаг общего разрешения прерываний I регистра SREG, сбрасываемый аппаратно при возникновении прерывания.

На выполнение каждой из команд возврата из подпрограммы требуется 4 машинных цикла.

Стек

Во всех микроконтроллерах семейства стек реализован программно. Он размещается в памяти данных, и его глубина определяется только размером свободной области памяти программ. В качестве указателя стека во всех моделях используется пара регистров ввода/вывода SPH:SPL, расположенных по адресам $ЗЕ ($5Е) и $3D ($5D) соответственно. Так как после подачи напряжения питания (или после сброса) в регистрах содержится нулевое значение, в самом начале программы указатель стека необходимо проинициализировать, записав в него значение верхнего адреса памяти данных.

При вызове подпрограмм адрес команды, расположенной за командой вызова, сохраняется в стеке. Значение указателя стека при этом уменьшается на 2, т. к. для хранения счетчика команд требуется 2 байта. При возврате из подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. Значение указателя стека соответственно увеличивается на 2. То же происходит и во время прерывания. При генерации прерывания адрес следующей команды сохраняется в стеке, а при возврате из подпрограммы обработки прерывания он восстанавливается из стека.

Во всех моделях микроконтроллеров семейства стек доступен программно. Для работы со стеком в наборе команд имеется две команды: команда занесения в стек (PUSH) и команда извлечения из стека (POP).

Порты ввода/вывода

Общие сведения

Каждый порт микроконтроллеров состоит из определенного числа выводов, через которые микроконтроллер может осуществлять прием и передачу цифровых сигналов. Задание направления передачи данных через любой контакт ввода/вывода может быть произведено программно в любой момент времени.

Выходные буферы всех портов, имея симметричные нагрузочные харак-теристики, обеспечивают высокую нагрузочную способность при любом уровне сигнала. Нагрузочной способности достаточно для непосредствен-ного управления светодиодными индикаторами.

Входные буферы всех выводов построены по схеме триггера Шмитта. Для всех входов имеется возможность подключения внутреннего подтяги-вающего резистора между входом и шиной питания.

Отличительной особенностью портов микроконтроллеров семейства Mega (как и всех микроконтроллеров AYR) при использовании их в качестве цифровых портов ввода/вывода общего назначения является реализация истинной функциональности вида «чтение/модификация/запись». Благо-даря этому можно выполнять операции над любым выводом (с помощью команд SBI и CBI), не влияя на другие выводы порта. Это относится к изме-нению режима работы контакта ввода/вывода, к изменению состояния вы-ходного буфера (для выходов) и к изменению состояния внутреннего подтя-гивающего резистора (для входов).

Регистры портов ввода/вывода

Обращение к портам производится через регистры ввода/вывода. Под каждый порт в адресном пространстве ввода/вывода зарезервировано по 3 адреса, по которым размещены следующие регистры: регистр данных пор-та PORTx, регистр направления данных DDRx и регистр выводов порта PINx. Действительные названия регистров получаются подстановкой названия порта вместо символа «х», соответственно регистры порта А называются PORTA, DDRA, PINA, порта В -- PORTB, DDRB, PINB и т. д. Поскольку с помощью регистров PIN* осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения, тогда как ос-тальные два регистра доступны и для чтения, и для записи.

Таймеры

Таймер/счетчик ТО имеет минимальный набор функций. Он может использоваться только для отсчета и измерения временных интервалов или как счетчик внешних событий, возможность генерации сигналов с широтно-импульсной модуляцией (ШИМ) фиксированной разрядности, а также возможность работать в асинхронном режиме в качестве часов реального времени.

Таймер/счетчик Т2 полностью аналогичен таймеру/счетчику ТО

Таймер/счетчик ТЗ имеет те же функциональные возможности, что и ТО, он может работать в качестве широтно-импульсного модулятора, но уже переменной разрядности и к тому же многоканальный.

Сторожевой таймер

Как и микроконтроллеры остальных семейств, все микроконтроллеры семейства Mega имеют в своем составе сторожевой таймер, предназначенный для защиты микроконтроллера от сбоев в процессе работы. Исполнение сторожевого таймера одинаково для всех моделей семейства.

Сторожевой таймер имеет независимый тактовый генератор, поэтому он работает даже во время нахождения микроконтроллера в любом из спящих режимов. Типовое значение частоты этого генератора равно 1 МГц при Vcс=5.0В. Фактическая частота генератора зависит oт напряжения питания устройства, температуры, технологического разброса.

Если сторожевой таймер включен, то через промежутки времени равные его периоду, он выполняет сброс микроконтроллера. Чтобы избежать сброса при нормальном выполнении программы, сторожевой таймер необходимо регулярно сбрасывать через промежутки времени, меньшие его периода. Сброс сторожевого таймера осуществляется командой WDR.

Для управления сторожевым таймером предназначен регистр WDTCR, который во всех моделях расположен по адресу $21 ($41).

Назначение выводов таймеров/счетчиков

Каждый таймер/счетчик использует один или более выводов микрокон-троллера. Эти выводы -- линии портов ввода/вывода общего назначения, а функции, реализуемые этими выводами при работе совмест-но с таймерами/счетчиками, являются их альтернативными функциями.

Аналоговый компаратор

Модуль аналогового компаратора входит в состав всех без исключения микроконтроллеров семейства Mega. Будучи включенным, компаратор позволяет сравнивать значения напряжений, присутствующих на двух выводах микроконтроллера. Результатом сравнения является логическое значение, которое может быть прочитано из программы. По результату сравнения может быть сгенерировано прерывание, а также осуществлен захват состояния таймера/счетчика Т1. Последняя функция позволяет, в частности, измерять длительности аналоговых сигналов.

Используемые компаратором выводы являются контактами портов вво-да/вывода общего назначения

Чтобы указанные выводы могли использоваться аналоговым компаратором, они должны быть сконфигурированы как входы (соответствующий разряд регистра DDRx установлен в «1»). Кроме того, необходимо отключить внутренние подтягивающие резисторы записью лог. 0 в соответствующий разряд регистра PORTх.

Аналого-цифровой преобразователь

Модуль 10-разрядного АЦП последовательного приближения входящий в состав моделей имеет следующие основные параметры:

* абсолютная погрешность: ±2 МЗР;

* интегральная нелинейность: ±0.5 МЗР;

* быстродействие: до 15 тыс. выборок/с.

На входе модуля АЦП всех моделей имеется 8-канальный аналоговый мультиплексор, предоставляющий в распоряжение пользователя 8 каналов с несимметричными входами.

В качестве источника опорного напряжения для АЦП может использоваться как напряжение питания микроконтроллера, так и внутренний либо внешний источник опорного напряжения.

В процессе работы АЦП может функционировать в двух режимах:

* режим одиночного преобразования, когда запуск каждого преобразования инициируется пользователем;

* режим непрерывного преобразования, когда запуск преобразований выполняется непрерывно через определенные интервалы времени.

Универсальный асинхронный (синхронный/асинхронный) приемопередатчик

Все без исключения микроконтроллеры семейства Mega имеют в своем составе модули либо универсального асинхронного (UART), либо универсального синхронно/асинхронного (USART) приемопередатчика. Более того, в некоторых моделях имеется по два таких модуля. Заметим, что модули USART при работе в асинхронном режиме совместимы с модулями UART как по расположению разрядов управляющих регистров, так и по функционированию. Небольшие различия имеются только в работе схемы буферизации блока приемника модулей и в названии (но не в назначении) некоторых разрядов управляющих регистров.

Страницы: 1, 2, 3, 4, 5, 6, 7



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.