Аппаратные средства микроконтроллеров

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

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид реферат
Язык русский
Дата добавления 03.12.2011
Размер файла 346,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Аппаратные средства микроконтроллеров

1. Корпуса устройств

Когда рассматривается «монтаж прибора в корпус», то будет описываться материал (герметик), используемый для защиты кристалла, и технология соединения кристалла с проводниками на печатной плате. От выбора того или иного корпуса зависит цена, размер и качество конечного изделия. Для защиты кристаллов используются два основных материала: пластмасса и керамика.

Наиболее распространенными являются пластмассовые корпуса. Кристалл, помещенный в такой корпус, соединяется с внешними выводами при помощи тонких алюминиевых проволочек, которые привариваются к кристаллу с использованием ультразвука. Некоторые кристаллы присоединяются к внешним выводам с помощью технологии «С4», которая будет описана позже. Для заливки пластиковых корпусов используется эпоксидный герметик. Когда герметик затвердеет, кристалл становится защищенным от света, влаги и механического воздействия.

Микроконтроллеры с памятью EPROM, помещенные в пластмассовый корпус, обычно называются однократно программируемыми (ОТР - One-Time Programmable). Такой микроконтроллер может быть запрограммирован только один раз, так как пластиковый корпус не позволяет производить стирание содержимого памяти программ типа EPROM путем освещения кристалла ультрафиолетом (рис 1).

Рис. 1 - Пластмассовый корпус для однократно программируемых приборов

Одна из основных причин размещения микроконтроллера в керамическом корпусе - это возможность создания в нем кварцевого окошка для стирания EPROM (рис 2). Когда используется керамический корпус, кристалл приклеивается к его нижней половине и соединяется проводниками с рамкой, на которой расположены внешние выводы. Керамические корпуса обычно выпускаются со штыревыми выводами, которые вставляются в сквозные металлизированные отверстия на печатной плате (монтаж по технологии РТН (Plated-Through Hole)). Для пластмассовых корпусов возможен более широкий выбор вариантов монтажа на плате. Керамический корпус может значительно увеличить стоимость отдельной микросхемы, так он более чем в 10 раз дороже пластмассового. Поэтому микроконтроллеры в керамических корпусах используются обычно во время отладки разрабатываемых систем, когда дополнительные расходы из-за применения корпусов с кварцевым окошком являются оправданными.

Рис. 2 - Керамический корпус с кварцевым окошком

Технология установки микросхемы на печатную плату существенно изменилась за последние годы. В 80-х годах практически все микросхемы выпускались со штыревыми выводами, которые запаивались в отверстия на печатной плате (рис 3). Преимуществом этой технологии монтажа (РНТ-технология) является ее простота - для производства таких плат не требуется сложное оборудование и специальная подготовка. Недостатком является то, что отверстие занимает на плате значительную площадь, и расстояние между соседними выводами микросхемы должно быть существенно больше, чем при использовании технологии поверхностного монтажа (SMT - Surface Mount Technology), когда выводы микросхемы припаиваются к поверхности платы (рис. 4).

Рис. 3 - Сквозное соединение. Рис. 4 - Сравнительные размеры ТН и SMT корпусов

Для SMT-монтажа используются корпуса с двумя основными типами выводов (рис. 5): типа «gull wing» и типа «J». Оба типа выводов имеют свои преимущества. Корпуса с выводами типа «gull wing» позволяют производить ручную пайку и обеспечивают более простой контроль паянных соединений. Применение корпусов с выводами типа «J» уменьшает площадь печатной платы. В настоящее время корпуса с выводами «gull wing» значительно более популярны, так как их использование позволяет применять более простое производственное оборудование и обеспечить переход к сверхплотному монтажу, когда расстояния между центрами выводов уменьшаются до 0,41 мм.

Рис. 5 - Планарная технология корпусов

Уменьшение размера корпуса и шага расположения выводов позволяет значительно увеличить плотность упаковки компонентов на плате, которая определяется количеством корпусов, размещаемых на единице площади. Типичное значение шага расположения выводов для РТН-корпусов составляет 2,54 мм, тогда как шаг для SMT-корпуса имеют шаг выводов от 1,27 мм до 0,41 мм. SMT-корпуса с малым шагом выводов известны под названием «fine pitch».

Чтобы оценить, как выбор корпуса влияет на плотность упаковки компонентов на плате, рассмотрим пример использования РТН-корпуса с шагом выводов 2,5 мм и SMT-корпуса с шагом 1,27 мм. SMT-корпус в два раза меньше по всем измерениям - это значит, что на месте одного РТН-корпуса можно разместить четыре SMT-корпуса. Кроме того, при отсутствии отверстий компоненты могут размещаться с обеих сторон печатной платы. В результате получаем увеличение плотности упаковки в восемь раз.

Чтобы повысить плотность упаковки компонентов и увеличить число выводов микросхемы, шаг выводов для SMT-корпусов был уменьшен до 0,5 мм. Но в процессе разработки корпусов с большим числом выводов были предложены новые технологии, которые позволяют упростить монтаж печатных плат.

Для производителя установка и снятие SMT-корпусов реализуется проще, чем РТН-корпусов. На посадочные места наносится специальная смесь припоя и флюса, которая называется паяльной пастой. Затем плата помещается в печь, где паста расплавляется и припаивает микросхему к плате. Чтобы снять компонент с платы, его выводы обдуваются горячим воздухом или азотом, который расплавляет припой, после чего компонент может быть удален. В то время как производителю, имеющему специальное оборудование, легче работать с SMT-корпусами, для инженера-разработчика или радиолюбителя это намного сложнее (особенно если микросхему требуется снять с платы для перепрограммирования).

Для микросхем с большим количеством выводов (более 300) РТН-корпуса обычно не используются из-за их большого размера. С SMT-корпусами также возникают проблемы, так как трудно обеспечить параллельность всех выводов, нарушение которой вызывает брак при монтаже микросхем на плату. Для монтажа кристаллов с очень большим количеством выводов используются технологии шариковых выводов - BGA (Ball Grid Array), непосредственного монтажа кристаллов на плату - СОВ (Chip On Board) и автоматического монтажа на ленту - ТАР (Таре Automated Bonding).

В технологии BGA для присоединения микросхемы к плате используется двумерная матрица шариков припоя, расположенных на нижней стороне корпуса (рис. 6). Для микросхем с большим числом выводов BGA-корпуса дают значительное преимущество по сравнению с традиционными SMT-корпусами. Рассмотрим в качестве примера 304-выводную микросхему. SMT-корпус представляет собой плоский прямоугольный корпус QFP (Quad Flat Pack), по четырем сторонам которого расположены выводы с шагом 0,52 мм. BGA-корпус содержит матрицу 16х19 шариковых выводов с шагом 1,27 мм. Минимальный размер каждой стороны SMT-корпуса составит 3,9 см (площадь корпуса 15,4 см2), тогда как размер BGA-корпуса составит 2,16х2,54 см (5,5 см2). В рассмотренном примере BGA-корпус занимает в три раза меньшую площадь, чем QFP. Кроме того, BGA-корпус проще устанавливать и паять на плату, так как он имеет больший шаг выводов.

Рис. 6 - Корпус типа BGA

Выводы QFP-корпуса очень хрупкие, так как при шаге 0,52 мм их диаметр составляет всего около 0,3 мм. Шариковые выводы BGA-корпуса значительно более твердые. Из-за хрупкости выводов установка и пайка SMT-корпусов обычно осуществляется полностью автоматически, без участия человека. При монтаже BGA-корпусов нет необходимости соблюдать такие предосторожности.

Установка BGA-корпусов на плату и их демонтаж требуют того же оборудования, что и SMT-корпуса. Однако для контроля качества монтажа плат с BGA-корпусами требуется более сложная аппаратура, включая рентгеновские установки. BGA-корпуса имеют более высокое качество: процент брака для SMT-корпусов составляет 0,002-0,005, а для BGA-корпусов - 0,0001-0,0002 и менее.

При использовании технологии СОВ (Chip On Board) кристалл непосредственно монтируется на плату. В настоящее время применяются два способа крепления кристаллов.

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

Рис. 7 - Корпус типа СОВ.

Второй способ известен под названием «технология С4» и фактически очень похож на BGA-процесс, описанный ранее. Шариковые выводы, используемые в этом процессе, называются «выпуклостями» (bumps), потому что они намного меньше BGA-шариков (рис 8). Первоначально эта технология была разработана IBM для монтажа кристаллов в керамических корпусах без использования соединительных проволочек.

Рис. 8 - Монтаж на плату с использованием технологии С4

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

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

Имеется еще одна технология монтажа, которая представляет собой комбинацию SMT и СОВ. Это автоматический монтаж на ленту - TAB (Tape Automated Bonding). В данном случае контактные площадки кристалла привариваются к медной ленте с изолирующим покрытием, на которой путем штамповки создана рамка с выводами. Эти выводы затем припаиваются к металлическим проводникам на печатной плате (рис. 9.)

Рис. 9 - Корпус типа ТАВ

Впервые ТАВ-технология появились в середине 1980 года, как способ сборки микросхем с большим числа выводов. С усовершенствованием SMT-корпусов и изобретением BGA технология TAB в значительной степени устарела, хотя еще используется некоторыми производителями. Сложность ТАВ-технологии заключается в необходимости применения специализированного автоматического оборудовании для установки и пайки припаивания ТАВ-компонентов, а также в трудности контроля паяных соединений.

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

2. Питание микроконтроллеров

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

Как указано выше, практически все современные микроконтроллеры производятся по CMOS-технологии, поэтому они потребляют значительно меньше мощности, чем ранее выпускавшиеся биполярные или NMOS-микро-контроллеры.

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

Обратим внимание на обозначения, используемые при описании питания. Обозначения «Vcc» и «Vdd» применяются для указания напряжения питания (обычно +5 В, хотя возможны и другие значения). Аналогично, обозначения «Vss» and «Gnd» используются для указания «земли». Мы будем использовать «Vdd» для обозначения питания (даже когда производитель использует «Vcc») и «Gnd» для обозначения «земли».

Потребляемая мощность

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

Собственная мощность - это мощность, которую потребляет микроконтроллер, когда к его выводам не подключены внешние устройства. Значение этой мощности зависит, главным образом, от тока потребляемого при переключении CMOS-элементов, который является функцией скорости работы микроконтроллера.

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

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

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

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

Использование «спящего» режима может уменьшить потребляемую мощность с уровня в несколько милливатт до микроватт.

«Спящий» режим - это виртуальный выключатель, реализованный внутри микроконтроллера. Его использование обеспечивает ряд преимуществ. Во-первых, такой виртуальный выключатель дешев и надежен - при его включении-выключении отказы возникают значительно реже, чем при работе электромеханического выключателя. Во-вторых, в «спящем» режиме сохраняется содержимое памяти данных RAM. А последнее преимущество чисто эстетическое: устройства, которые можно включать и выключать кажутся мне более привлекательными.

«Спящий» режим имеет один потенциальный недостаток, существенный для некоторых приложений: время, необходимое для выхода из «спящего» режима и запуска тактового генератора может достигать десяти милисекунд. Действительно, такая задержка может оказаться слишком большой при взаимодействии с другой компьютерной системой. Однако если основной задачей микроконтроллера является работа с человеком, то такая задержка проблем не вызывает.

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

Подключение питания

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

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

3. Запуск микроконтроллера (сброс в начальное состояние). Актирование системы

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

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

Рис. 10 - Схема формирования сигнала запуска RESET

В этой схеме сигнал RESET на входе микроконтроллера становится активным (принимает значение логического 0) приблизительно через 22 мс (время задержки Td = 2,2 RC) после включения питания. Этого времени достаточно для стабилизации напряжения питания и установки требуемой частоты тактового генератора прежде, чем начнет работать микроконтроллер.

Кнопка RESET используется в процессе разработки устройства для сброса микроконтроллера в начальное состояние. При отладке устройства очень полезно иметь возможность выполнения сброса, чтобы обеспечить повторный запуск микроконтроллера. Резистор сопротивлением 100 Ом, который включен последовательно с конденсатором, служит для ограничения тока разряда конденсатора в момент сброса (заряженный конденсатор является источником большого тока, когда он закорачивается на «землю»). Эта схема может быть использована для запуска микроконтроллеров, у которых сигнал RESET имеет высокий активный уровень (например, микроконтроллер 8051), путем инвертирования напряжения на конденсаторе (например, с помощью микросхемы типа 7404).

Для некоторых микроконтроллеров можно удалить RC-цепь в схеме запуска, так как внутри них имеется схема, обеспечивающая задержку включения (пуск тактового генератора и начало выполнения первой команды программы). В этом случае схема запуска может быть упрошена, как показано на рис. 11. Посмотрев на эту схему, вы, возможно, подумаете, что схему можно еще более упростить, просто подключив вывод RESET к шине питания Vdd. Это верно, но использовать такое включение следует только после того, как схема будет полностью отлажена. Однако при этом целесо-образно включить токоограничивающий резистор, чтобы иметь возможность повторного запуска путем закорачивания вывода RESET на «землю».

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

Для решения этой проблемы существуют устройства - мониторы питания, которые следят за уровнем напряжения Vcc/Vdd. Если это напряжение падает ниже определенного уровня (обычно 4.5В), то вырабатывается сигнал RESET. Как правило, такие мониторы питания содержат схему задержки и работают аналогично описанной выше RC-схеме запуска. Они монтируются в такой же корпус, как трехвыводной транзистор.

Рис. 11 - Модифицированная схема RESET

Тактирование системы

Если вы проектировали схемы тактовых генераторов для микропроцессоров, то вы будете приятно удивлены, когда начнете разрабатывать такие схемы для микроконтроллеров. Микроконтроллеры построены так, что требуют минимального числа внешних элементов для генерации тактовых импульсов.

Большинство микроконтроллеров способны работать в очень широком диапазоне частот: от нуля до десятков мегагерц. Это возможно благодаря использованию полностью статической логике. Некоторые разработчики используют тактовую частоту в 1 Гц и менее при отладке программного обеспечения. Широкий диапазон возможных рабочих частот позволяет разработчику лучше настроить микроконтроллер на выполнение конкретных заданных функций.

Существует три способа задания тактовой частоты микроконтроллера, каждый из которых имеет свои достоинства и недостатки. Первый способ - использование кварцевого резонатора, подключенного согласно схеме на рис. 1 Этот способ позволяет очень точно задать тактовую частоту микроконтроллера (разброс частот обычно составляет не более 0,01%). Такой уровень точности требуется для организации интерфейса микроконтроллера с другими устройствами или обеспечения точного хода часов реального времени.

Номиналы емкостей конденсаторов в данной схеме определяются производителем микроконтроллера для конкретной резонансной частоты кварца. Иногда требуется включить резистор большого номинала (порядка нескольких МОм) между выводами Clk0 и Clk1, чтобы генератор работал стабильно. Часто производитель советует использовать переменный конденсатор, подключаемый к выводу Clkl, чтобы обеспечить возможность точной подстройки частоты.

Рис. 12 - Тактирование с использованием кварцевого резонатора

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

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

Если схема перегружена из-за включения слишком большой емкости, то форма импульсов будет похожа на нижний рисунок 13, или вместо импульсов вообще будет постоянное напряжение на уровне примерно Vdd/

Рис. 13 - Хорошая и плохая формы импульсов для микроконтроллера PICMicro

Два основных недостатка этого способа синхронизации - необходимость подключения дополнительных компонентов и хрупкость кристаллов кварца Оба этих недостатка могут быть устранены, если использовать керамический резонатор. Керамические резонаторы существенно более стойки к ударной нагрузке, и многие из них имеют встроенные конденсаторы, вследствие чего количество требуемых внешних компонентов уменьшается с трех до одного. Керамические резонаторы обычно имеют разброс частот порядка нескольких десятых процента (около 0,5%).

Следующий способ синхронизации - использование RC-генератора. В этом случае необходимая частота тактовых импульсов задается путем соответствующего выбора постоянной времени RC-цепи (рис 14). Это самый дешевый способ задания частоты, но, к сожалению, наименее точный. Если кварц обеспечивает поддержание частоты с точностью в тысячные доли процента, керамический резонатор - в десятые доли процента, то RC-цепь дает точность порядка десятков процентов. Так, при экспериментах с микроконтроллерами PIC было установлено, что точность RC-генератора составляет примерно 20%. Очевидно, что это неприемлемо для многих приложений, где требуется точный подсчет времени. Однако имеются области применения, где такая точность является вполне достаточной.

Рис. 14 - Подключение RC-цепи для генерации тактовых импульсов

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

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

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

Некоторые микроконтроллеры содержат встроенные RC или кольцевые генераторы, которые позволяют микроконтроллеру работать без внешних схем синхронизации. Работа внутреннего генератора обычно разрешается путем соответствующего программирования регистра конфигурации, которое производится вместе с программированием памяти программ микроконтроллера.

4. Командные циклы. Программный счетчик. АЛУ

Командные циклы

Вас, вероятно, удивит, что командные циклы не тоже самое, что такты синхронизации. Командный цикл обычно состоит из нескольких тактов, которые необходимы процессору для выполнения команды. На рис. 15 показан командный цикл, состоящий из четырех тактов. В течение командного цикла микропроцессор или микроконтроллер выполняет необходимые операции, используя тактовые сигналы для синхронизации этих операций.

Рис. 15 - Командный цикл и машинные такты

Некоторые команды требуют для выполнения более одного командного цикла. Это затрудняет расчет времени выполнения программы. Часто для определения этого времени приходится обращаться к документации или использовать симулятор / отладчик.

Программный счетчик

Программный счетчик PC (Program Counter) используется для указания следующей команды выполняемой программы. Реализация этой функции значительно осложняется, когда необходимо сохранить содержимое PC при вызове подпрограмм и обработке запросов прерывания или обеспечить ветвление программы. Рис. 16 иллюстрирует выполнение некоторых функций программного счетчика, однако на практике они оказываются существенно более сложными.

Рис. 16 - Программный счетчик

Программный счетчик представляет собой счетчик с параллельным вводом-выводом. На рис. 16 показано функционирование PC в процессоре с Принстонской архитектурой. В процессорах этого типа содержимое PC поступает по шине данных в схему управления памятью, указывая адрес считываемой команды. Часто PC входит в состав схемы управления памятью - это позволяет избежать передачи адреса по внутренней шине данных. Важные особенности функционирования программного счетчика - параллельная загрузка нового содержимого, поступающего с шины данных, возможность сброса (возврат к адресу первой команды программы), реализация инкремента (увеличение содержимого для адресации следующей команды). Сигналы, обеспечивающие выполнение этих операций, формируются дешифратором команд, который управляет последовательностью действий микроконтроллера.

Параллельная загрузка используется для записи в PC адреса перехода при выполнении команды «jmp» (безусловный переход) или «call» (вызов подпрограммы). В компьютерах с Принстонской архитектурой этот адрес поступает по шине данных. В 8-разрядных микроконтроллерах разрядность PC обычно больше, чем 8 бит (так как при такой разрядности адреса объем доступной памяти программ составляет всего 256 байт). При загрузке в PC нового адреса, он поступает по шине данных частями по 8 бит, что требует выполнения дополнительных машинных циклов. Чтобы сократить время загрузки PC, некоторые процессоры имеют команды ветвления «branch», при которых загружаются только 8 младших разрядов адреса, а старшие разряды остаются без изменения. При выполнении такой команды достаточно передать по шине данных только один байт, тогда как для загрузки полного 16-разрядного адреса требуется пересылка двух байт.

Начальное содержимое PC после запуска микроконтроллера может иметь любое значение. Хотя наиболее очевидным представляется использование в качестве начального значения 0000h, некоторые микроконтроллеры начинают выполнение программы с других адресов. Аналогичная ситуация имеет место с адресами («векторами») прерываний. При обслуживании прерываний в PC обычно загружают содержимое, которое отличается от адреса, загружаемого при начальном запуске микроконтроллера, однако для реализации прерывания и запуска могут использоваться одни и те же аппаратные средства.

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

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

Другая проблема может возникнуть, когда программный счетчик достигнет конца адресуемой памяти. Некоторые микроконтроллеры в этом случае осуществляют циклический переход к команде, размещенной по адресу 0000h, в других микроконтроллерах дешифратор команд продолжает инкрементировать программный счетчик, что приводит к выполнению неопределенных команд.

Арифметико-логическое устройство

Арифметико-логическое устройство (АЛУ) процессора используется для выполнения всех математических операций в программе. Эти операции включают сложение, вычитание, логическое И, логическое ИЛИ, сдвиг содержимого регистров и установку содержимого регистра состояния в соответствии с полученными результатами. АЛУ не используется при чтении или записи данных или команд, оно служит только для обработки данных.

АЛУ можно представить как аппаратный блок, который обрабатывает два слова данных (операнды) и сохраняет полученный результат (рис. 17). Как вводятся операнды в АЛУ и куда поступает результат - зависит от конкретного типа микроконтроллера. В этом состоит одно из основных различий между разными типами процессоров и их системами команд. Некоторые микроконтроллеры выбирают один операнд из регистра-аккумулятора и сохраняют результат также в аккумуляторе. Другие микроконтроллеры позволяют использовать различные источники операндов и места размещения результатов.

Рис. 17 - Структура АЛУ

АЛУ обычно работают только с положительными целыми числами. Однако при выполнении вычитания получаются отрицательные числа, если вычитаемое больше уменьшаемого. Для представления отрицательных чисел используется дополнительный код («дополнение до двух»). Это необходимо учитывать при знакомстве с работой АЛУ.

Рассмотрим, как выполняется команда вычитания на примере микроконтроллера Microchip PIC. Вместо вычитания одного числа из другого, происходит добавление отрицательного числа:

А - В = А + (-В).

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

Если есть схема преобразования отрицательных чисел в дополнительный код, то нет необходимости использовать схему вычитания. Достаточно иметь в составе АЛУ сумматор, который реализует вычитание с помощью следующей замены:

.

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

В «классических» АЛУ, которые имеют сумматор и вычитатель, часто используется общий флаг «переноса-заема». Этот флаг устанавливается в 1, когда результат сложения больше, чем 00FFh или результат вычитания меньше нуля. В обоих случаях флаг используется для указания того, что значение 8-и старших бит результата зависят от результата, полученного при операции над 8-ю младшими битами.

Если АЛУ не содержит вычитателя (как и приведенном выше примере), то флаг переноса также устанавливается после сложения или вычитания, но он имеет другое значение. Чтобы понять это, рассмотрим пару примеров. Первый пример показывает, что происходит, когда одно число вычитается из другого числа, которое больше первого:

0077h - 0055h = 0077h + (-0055h) = 0077h + 00AAh + 1 = 0122h

Результат получился больше, чем 00FF, что приводит к установке флага переноса I в младшем бите старшего байта (флаг переноса / заема в этом случае не равен 1). Младшие восемь бит равны 22h (что и ожидалось) - это значение будет записано в качестве результата в приемник

Следующий пример иллюстрирует ситуацию, когда большее число вычитается из меньшего числа:

0055h - 0077h = 0055h + (-0077h) = 0055h + 0088h + 1 = 00DEh

В этом примере младшие 8 разрядов представляют число 22 в дополнительном коде (что и ожидалось), а бит переноса в старший байт (флаг переноса) равен 0. такой как ожидалось. В «классическом» АЛУ для данного примера результат также будет иметь значение 00DEh, но установится флаг заема-переноса равный 1.

Нетрудно заметить, что в АЛУ, не использующем вычитатель. флаг переноса устанавливается в 1, когда результат вычитания положительный, и сбрасывается в 0. когда результат отрицательный. Поэтому формируемый бит переноса в старший байт в этом случае можно было бы назвать флагом «перенос-знак», так как при вычитании он указывает знак результата.

Необходимо иметь в виду, что различные представители одного семейства микроконтроллеров обычно имеют одинаковые АЛУ. В некоторых семействах АЛУ реализуют определенные операции, например, умножение, которые не выполняются микроконтроллерами других семейств. Дополнительные функции, которые обеспечивают различные микроконтроллеры одного семейства, реализуются путем включения в их структуру дополнительных аппаратных средств, аналогично периферийным устройствам. При этом структура и функции АЛУ сохраняются, так как вводимые в микроконтроллер дополнительные устройства используют свои регистры, которые не связаны с регистром состояния и аккумуляторами. Наглядным примером этого является семейство 8-разрядных микроконтроллеров 68НС05, выпускаемых фирмой Motorola.

Сложность АЛУ во многом определяет сложность всего микроконтроллера в целом. Часто над созданием АЛУ работает группа разработчиков, сравнимая по составу с той, которая работает над остальной частью микропроцессора или микроконтроллера (и даже большая, когда разрабатывается процессор аналогичный по сложности персональному компьютеру). От того, как работает АЛУ, зависит функционирование процессора, входящего в состав микроконтроллера, а значит и функционирование всего микроконтроллера.

микроконтроллер питание мощность таймер

5. Сторожевые таймеры. Прерывания

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

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

Это устройство вызывает сброс микроконтроллера, если его содержимое не будет обновлено в течение определенного промежутка времени (обычно от десятков миллисекунд до нескольких секунд). Если изменение содержимого программного счетчика не соответствует заданной программе, то команда модификации сторожевого таймера не будет выполнена. В этом случае сторожевой таймер производит сброс микроконтроллера, устанавливая его в исходное состояние.

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

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

Прерывания

Многие пользователи считают, что прерывания - это та часть аппаратного обеспечения, которую лучше оставить в покое, так как их использование требует превосходного знания процессора для разработки программы обработки прерывания. В противном случае при возникновении прерывания система «засыпает» или «идет вразнос». Такое чувство обычно появляется у разработчика после опыта работы с прерываниями для персонального компьютера, который имеет ряд особенностей, усложняющих создание обработчика прерываний. Многие из этих проблем не имеют места в оборудовании, реализованном на базе микроконтроллеров. Использование в данном оборудовании прерываний может существенно упростить его разработку и применение.

Если вы никогда не имели дело с прерываниями, то у вас возникнет вопрос - что это такое? В компьютерной системе прерывание - это запуск специальной подпрограммы (называемой «обработчиком прерывания» или «программой обслуживания прерывания»), который вызывается сигналом аппаратуры. На время выполнения этой подпрограммы реализация текущей программы останавливается. Термин «запрос на прерывание» (interrupt request) используется потому, что иногда программа отказывается подтвердить прерывание и выполнить обработчик прерывания немедленно (рис 19).

Рис. 18 - Выполнение прерывания

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

Первый возможный ответ - «не реагировать на прерывание, пока не завершится выполнение текущей задачи» - реализуется путем запрещения (маскирования) обслуживания запроса прерывания. После завершения задачи возможен один из двух вариантов: сброс маски и разрешение обслуживания, что приведет к вызову обработчика прерывания, или анализ значения битов («поллинг»). указывающих на поступление запросов прерывания и непосредственное выполнение программы обслуживания без вызова обработчика прерывания. Такой метод обработки прерываний используется, когда требуется обеспечить заданное время выполнения основной программы, так как любое прерывание может нарушить реализацию необходимого интерфейса.

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

Обработчик прерывания всегда обеспечивает следующую последовательность действий:

1. Сохранить содержимое регистров контекста.

Сбросить контроллер прерываний и оборудование, вызвавшее запрос.

3. Обработать данные.

4. Восстановить содержимое регистров контекста.

5. Вернуться к прерванной программе.

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

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

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

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

Восстановление регистров контекста и выполнение команды возврата из прерывания переводит процессор в состояние, в котором он находился до возникновения прерывания.

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

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

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

Адрес, который загружается в программный счетчик при переходе к обработчику прерывания, называется «вектор прерывания». Существует несколько типов векторов. Адрес, который загружается в программный счетчик при запуске микроконтроллера (reset) называется «вектор сброса». Для различных прерываний могут быть заданы разные вектора, что избавляет программу обслуживания от необходимости определять причину прерывания. Использование различными прерываниями одного вектора обычно не вызывает проблем при работе микроконтроллеров, так как чаще всего микроконтроллер исполняет одну единственную программу. Этим микроконтроллер отличается от персонального компьютера, в процессе эксплуатации которого могут добавляться различные источники прерываний. (Если вы когда-либо подключали два устройства к портам СОМ1 и COM3, то вы представляете, о чем идет речь). В микроконтроллере, где аппаратная часть хорошо известна, не должно возникнуть каких-либо проблем при совместном использовании векторов прерываний.

Последнее, что осталось рассмотреть, - это программные прерывания. Существуют процессорные команды, которые могут быть использованы для имитации аппаратных прерываний. Наиболее очевидное использование этих команд - это вызов системных подпрограмм, которые располагаются в произвольном месте памяти, или требуют для обращения к ним межсегментных переходов. Эта возможность реализована в микропроцессорах семейства Intel i86 и используется в базовой системе ввода-вывода BIOS (Basic Input/Output System) и операционной системе DOS персональных компьютеров для вызова системных подпрограмм без необходимости фиксирования точки входа. Вместо этого используются различные вектора прерываний, выбирающие команду, которая должна выполняться, когда происходит такое программное прерывание.

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

Размещено на Allbest.ru


Подобные документы

  • Семейство 16-разрядных микроконтроллеров Motorola 68HC12, их структура и функционирование. Модуль формирования ШИМ-сигналов. Средства отладки и программирования микроконтроллеров 68НС12. Особенности микроконтроллеров семейства MCS-196 фирмы INTEL.

    курсовая работа [239,6 K], добавлен 04.01.2015

  • Рассмотрение структуры и принципов работы таймеров/счетчиков (общего назначения, сторожевого, типов А, В, С, D, Е) микроконтроллеров и аналого-цифрового преобразователя семейства AVR с целью разработки обучающего компьютерного электронного пособия.

    курсовая работа [1,0 M], добавлен 06.03.2010

  • Классификация, структура, архитектура и модульная организация микроконтроллеров. Средства разработки программного обеспечения AVR-контроллеров. Директивы транслятора ассемблера, рабочая частота и циклы. Исследование арифметических и логических команд.

    методичка [3,0 M], добавлен 19.09.2019

  • Адресное пространство микроконтроллеров MSP430F1xx. Байтовая и словная формы инструкций. Система команд MSP микроконтроллеров. Периферийные устройства микроконтроллеров MSP430F1xx. Аналого-цифровой преобразователь ADC12, его технические характеристики.

    курсовая работа [278,1 K], добавлен 04.05.2014

  • Микроконтроллеры - микросхемы, предназначенные для управления электронными устройствами, их классификация. Структура процессорного ядра микроконтроллеров, основные характеристики, определяющие его производительность. CISC и RISC архитектура процессора.

    курсовая работа [43,2 K], добавлен 03.10.2010

  • Микроконтроллер (MCU) — микросхема, предназначенная для управления электронными устройствами. Их можно встретить во многих современных приборах, в том числе и бытовых. Рассмотрение архитектуры различных микроконтроллеров, ядра, памяти, питания, периферии.

    реферат [216,5 K], добавлен 24.12.2010

  • Классификация и структура микроконтроллеров. Структура процессорного ядра микроконтроллера, основные характеристики его производительности. Архитектура процессорного модуля, размер и тип встроенной памяти, набор периферийных устройств, тип корпуса.

    курсовая работа [41,7 K], добавлен 28.08.2010

  • Разработка микропроцессорной системы на основе микроконтроллера, основные этапы и особенности данного процесса. Принципы работы шагового двигателя. Аппаратные средства микроконтроллеров серии AT90S2313. Расчет стоимости сборки и отладки устройства.

    дипломная работа [1,4 M], добавлен 11.07.2010

  • Использование микроконтроллеров AVR фирмы Atmel в проектируемой аппаратуре. Архитектура и общие характеристики прибора, предназначение арифметики логического устройства и понятие флэш-памяти. Формат пакета данных, алгоритм их передачи и система команд.

    контрольная работа [427,3 K], добавлен 12.11.2010

  • Понятие и виды микроконтроллеров. Особенности программирования микропроцессорных систем, построение систем управления химико-технологическим процессом. Изучение архитектуры микроконтроллера ATmega132 фирмы AVR и построение на его основе платформы Arduino.

    курсовая работа [1,9 M], добавлен 13.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.