Таймеры в микроконтроллерах Лабораторная работа №2 Таймеры Цель работы: разобраться с внутренним устройством, принципом работы и настройки таймеров для микроконтроллеров. Общая информация 1.1 Микроконтроллеры являются сердцем многих современных устройств и приборов, в том числе и бытовых. Самой главной особенностью микроконтроллеров, с точки зрения конструктора-проектировщика, является то, что с их помощью легче и зачастую гораздо дешевле реализовать различные схемы. На рисунке изображена структурная схема типичного современного микроконтроллера.  Из рисунка видно, что микроконтроллер может управлять различными устройствами и принимать от них данные при минимуме дополнительных узлов, так как большое число периферийных схем уже имеется непосредственно на кристалле микроконтроллера. Это позволяет уменьшить размеры конструкции и снизить потребление энергии от источника питания. Для сравнения: при использовании традиционных микропроцессоров приходится все необходимые схемы сопряжения с другими устройствами реализовывать на дополнительных компонентах, что увеличивает массу, размеры и потребление электроэнергии. Типичные схемы, присутствующие в микроконтроллерах. 1. Центральное процессорное устройство (ЦПУ) — сердце микроконтроллера. Оно принимает из памяти программ коды команд, декодирует их и выполняет. ЦПУ состоит из регистров, арифметико-логического устройства (АЛУ) и цепей управления. 2. Память программ. Здесь хранятся коды команд, последовательность которых формирует программу для микроконтроллера. 3. Оперативная память данных. Здесь хранятся переменные программ. У большинства микроконтроллеров здесь расположен также стек. 4. Тактовый генератор. Этот генератор определяет скорость работы микроконтроллера. 5. Цепь сброса. Эта цепь служит для правильного запуска микроконтроллера. 6. Последовательный порт — очень полезный элемент микроконтроллера. Он позволяет обмениваться данными с внешними устройствами при малом количестве проводов. 7. Цифровые линии ввода/вывода. По сравнению с последовательным портом с помощью этих линий возможно управлять одновременно несколькими линиями (или проверять несколько линий). 8. Таймер. Используется для отсчета временных интервалов. 9. Сторожевой таймер. Это специальный таймер, предназначенный для предотвращения сбоев программы. Он работает следующим образом: после запуска он начинает отсчет заданного временного интервала. Если программа не перезапустит его до истечения этого интервала времени, сторожевой таймер перезапустит микроконтроллер. Таким образом, программа должна давать сторожевому таймеру сигнал - все в порядке. Если она этого не сделала, значит, по какой-либо причине произошел сбой. Микроконтроллеры AVR представляют собой однокристальные 8-разрядные RISC-контроллеры (Reduced Instruction Set Computer – компьютер с сокращённым набором команд), обладающие программируемой FLASH – памятью и EPROM памятью (Erasable Programmable Read Only Memory – стираемое программируемое постоянное запоминающее устройство), выпускаемые фирмой ATMEL (Advanced Technology Memory and Logic). Название AVR они получили в честь двух студентов, участвовавших в разработке микропроцессоров и выдвинувших идею восьмиразрядного RISC ядра: Альфа Богена и Вергарда Воллена. Alf + Vergard +Risc. 1.2 Таймер (англ. timer < time время) — прибор производственно-технического, военного или бытового назначения, в заданный момент времени, выдающий определённый сигнал, либо включающий — выключающий какое либо оборудование через своё устройство коммутации электроцепи (Рис. 1).  Рис. 1.Таймер, выполненный на МК Atmel Большей частью под таймерами подразумеваются устройства, отмеряющие заданный интервал времени с момента запуска (вручную или электрическим импульсом) с секундомером обратного отсчёта, вместе с тем, существуют таймеры, момент срабатывания которых задаётся установкой необходимого времени суток (так называемые таймеры реального времени), в этом случае таймер имеет в своём составе часы или устройство хранения времени, простейшим таймером такого рода является будильник. Таймеры, имеющие достаточную точность и предназначенные для установки длительности каких-либо процессов в промышленном производстве, на транспорте, в связи, научных исследованиях аттестуются в качестве средств измерений. Некоторые виды таймеров имеют программное устройство для обеспечения срабатывания в разные моменты времени, с выдачей сигналов по разным каналам, например, для включения в определённой последовательности разных бытовых приборов. Также, существуют программные таймеры, реализующие сходные функции. В программировании, таймером является объект, возбуждающий событие по истечении заданного промежутка времени. Событием является посылка сообщения, вызов функции, установка параметров объекта ядра и т.д. Обычно, данный тип таймеров поддерживается операционной системой, причём часто поддержка таймеров существует на уровне аппаратуры. Микроконтроллер MEGA16 содержит в своем составе 3 таймера и дополнительный сторожевой таймер (Watchdog Timer). Timer0 и Timer2 – 8-битные таймеры, а Timer1 – 16-битный. Сторожевой таймер (Watchdog timer) – аппаратно реализованная схема контроля за зависанием системы. Представляет собой таймер, который периодически должен сбрасывается контролируемой системой. Если сброса не произошло в течение некоторого интервала времени, происходит принудительная перезагрузка системы. В некоторых случаях сторожевой таймер может посылать системе сигнал на перезагрузку («мягкая» перезагрузка), в других же — перезагрузка происходит аппаратно (например, замыканием контактов кнопки Reset). Автоматизированные системы, не использующие оператора человека, хотя тоже подвержены ошибкам, зависаниям и другим сбоям (в т.ч. аппаратным), с использованием сторожевых таймеров увеличивают стабильность работы – нет необходимости ручного сброса. Поэтому наиболее частое использование их – встроенные системы различного назначения. Таймеры в микроконтроллерах Применительно к микроконтроллерам, таймер – это цифровой счетчик осуществляющий подсчет импульсов подаваемых на него. Источником импульсов могут служить: • тактовые импульсы МК (от внешнего генератора/кварца или внутреннего генератора); • импульсы, подаваемые непосредственно на вход таймера с внешнего источника. Принцип работы таймера предельно прост – он считает импульсы. Подсчет ведется в регистре-счетчике таймера. Т.к. регистры 8-миразрядные, то подсчет ведется от 0 до 255 (период переполнения таймера), потом происходит переполнение счетчика и он сбрасывается в 0. Для каждого таймера можно настроить делитель импульсов – заставить таймер считать каждый 2-й, 4-й, 8-й и т.д. импульсы (что приведет к увеличению времени периода переполнения таймера). Таймер является источником двух типов прерываний: • по переполнению; • по совпадению. По переполнению – таймер отсчитывает импульсы от 0 до максимально возможного значения (для 8-миразрадного таймера - 255) и при переполнении возникает прерывание по переполнению. По совпадению – таймер отсчитывает импульсы от 0 до определенного опорного значения (выбирается при программировании таймера) и при совпадении счетчика с опорным значением возникает прерывание по совпадению. Сам счетчик таймера при этом либо сбрасывается, либо продолжает считать до максимального значения (выбирается при программировании таймера). Данный режим позволяет достаточно точно настраивать временные промежутки. Для каждого таймера можно разрешить/запретить оба источника прерываний (по умолчанию оба запрещены). |