какую функцию выполняет таймер счетчик
Таймер-счетчик – это устройство, заложенное в структуру МК48, позволяющее под управлением программы осуществлять временные выдержки в микропроцессорной системе и подсчитывать количество импульсов, если это необходимо, поступающих на вход T1 микроЭВМ. Существует принцип организации временных выдержек, использующий то, что известно время выполнения каждой команды. Например, зная, что команда NOP выполняется за один машинный цикл, то есть 2,5 микросекунды, можно запрограммировать выдержку времени в 10 микросекунд, включив в программу 4 команды NOP. Более длинные временные интервалы можно реализовывать, используя команду цикла типа DJNZ. Например, следующий программный фрагмент реализует программную выдержку в 380 микросекунд.
MOV R5, #50 ; 2 цикл=5 мкс
M1: NOP ; 1 цикл=2,5 мкс
DJNZ R5, M1; 2 цикла=5 мкс
Как получились эти 380 микросекунд? Команда DJNZ уменьшает значение регистра R5 на единицу и проверяет, не равно ли новое значение нулю. Если не равно, то программа переходит на метку M1. Так как начальное значение R5 равно 50, то две последние команды будут выполняться 50 раз. Это даст программную выдержку в 375 микросекунд. Первая команда выполняется за 5 микросекунд. Суммарное время равно 380 микросекунд.
Такой метод организации временных выдержек не рационален, так как в течение всего времени процессор работает только на эту выдержку и больше ничего делать не может. Возникает вопрос: а нельзя ли освободить процессор от этой рутинной работы, возложив функции таймирования на некоторое другое устройство?
Таким устройством в микроЭВМ является таймер-счетчик. При организации программных выдержек роль процессора заключается теперь в загрузке таймера-счетчика некоторым числом, величина которого определяет величину программной выдержки времени, и запуску таймера на счет. Далее процессор освобождается, а таймер-счетчик прерывает работу процессора, когда закончит временную выдержку.
Разрядность таймера-счетчика равна 8, то есть максимальное число, которое можно загрузить в таймер-счетчик равно 255. Команды загрузки и чтения таймера-счетчика MOV T, AиMOV A, T.
После загрузки таймера-счетчика каким-либо числом можно выполнить команду запуска таймера-счетчика на счет. Это команда STRT T. Счетчик работает на суммирование и каждые 80 микросекунд увеличивает свое значение на единицу. При переполнении, то есть когда его значение достигнет 255, таймер-счетчик сбрасывается, то есть обнуляется и продолжает счет с нуля. Этот момент фиксируется в триггере флага и триггере переполнения таймера-счетчика. Триггер флага можно опросить в любом месте программы и узнать достиг ли таймер-счетчик переполнения. Это достигается выполнением команды JTF ad8.
Покажем на примере как можно организовать выдержку времени с использованием таймера-счетчика методом опроса триггера флага. Пусть требуется сформировать импульс положительной полярности длительностью 800 микросекунд на выводе P10 порта P1. Так как дискретность счета таймера-счетчика равна 80 микросекунд и счетчик работает на суммирование, то число, загружаемое в счетчик, определяется как 256-100=156, то есть к числу 156 нужно добавить 100 дискрет по 80 микросекунд чтобы счетчик обнулился.
Введение
Таймер Т0 в режиме Normal
Для решения поставленной задачи, я рассуждаю следующим образом. Если бы один такт таймера Т0 имел период 1 мс, то мне бы это подошло. 20 тактов дают 20 мс. Какой коэффициент предделителя таймера позволит получить близкий к 1 мс период тактовой частоты? Можно посчитать.
Тактовая частота микроконтроллера Fcpu = 8000000 Гц
Период тактового сигнала микроконтроллера Tcpu = 1/Fcpu
Период тактового сигнала таймера Т0 равен Tt0 = (1/Fcpu)/k = k/Fcpu
При k = 1024 период тактовой частоты таймера Т0 будет равен Tt0 = 1024/8000000 = 0.128 мс
Ну хорошо, пусть один такт таймера это 0.128 мс, хватит ли разрядности счетного регистра, чтобы отсчитать этот временной интервал и сколько для этого понадобится тактов? Делим требуемый интервал времени (20 мс) на длительность одного такта таймера и получаем ответ.
n = t/Tto = 20 мс/ 0.128 мс = 156.25
Округлив до целого, получаем 156 тактов. Это меньше 255 (максимального значения счетного регистра), значит разрядности счетного регистра TCNT0 хватит.
Думаю, теперь понятно, как рассчитывать начальное значение TCNT0 для режима Normal:
Можно автоматизировать эту процедуру с помощью макросов. Например, так:
Но с таким макросом нужно быть начеку, при определенных значениях time и k могут возникать ошибки.
Теперь переходим к коду. Чтобы использовать таймер Т0 (да и любой другой тоже), его нужно настроить (инициализировать) и описать обработчик прерывания (если они используются).
Инициализация таймера состоит из следующих шагов:
— остановка таймера,
— задание режима Normal в TCCR0 без старта,
— установка начального значения TCNT0,
— сброс флагов в регистре TIFR,
— разрешение прерывания по переполнению в TIMSK,
— установка предделителя в TCCR0, то есть старт таймера
В данной последовательности возможны вариации.
Для нашей задачи код инициализации будет выглядеть так:
Вторая строчка инициализации, по сути, бесполезна, она добавлена для наглядности. Чтобы четко видеть, какой режим таймера устанавливается.
Сброс флагов прерываний в регистре TIFR выполняется записью 1 в соответствующий разряд. Эту операцию нужно выполнять именно перезаписью регистра, а не с помощью побитового ИЛИ. И вот почему.
В результате сброшены оба флага, а мы хотели сбросить один.
Синтаксис описания обработчиков прерывания у разных компиляторов немного отличается. Для IAR`a обработчик прерывания таймера Т0 по событию переполнение будет выглядеть так:
Первая строка обработчика (TCNT0 = T_POLL;) выполняет перезапись счетного регистра, то устанавливает его начальное значение. Если этого не сделать, таймер продолжит счет с 0. Перезапись счетного регистра нужно выполнять в начале обработчика прерывания.
Весь код для нашей задачи будет выглядеть примерно так. (Код приведен для IAR`a. Для других компиляторов нужно изменить заголовочные файлы и обработчик прерывания.)
Управление выводом OC0
В режиме Normal таймер Т0 может изменять состояние вывода OC0 при совпадении счетного регистра и регистра сравнения. Причем даже без прерываний. Варианты управления определяются разрядами COM01 и COM00 регистра TCCR0.
Вот пример программы, генерирующей прямоугольный сигнала на выводе ОС0.
Вывод ОС0 будет менять свое состояние на противоположное при нулевом значении счетного регистра.
Несколько моментов относительно использования таймера
Обработчик прерывания таймера (да и любой другой периферии) нужно делать как можно короче.
Если расчетное значение для счетного регистра (или регистра сравнения) округляется, то временной интервал будет отсчитываться таймером с погрешностью.
Если нужно отсчитать большой временной интервал, разрядности таймера может не хватить. В этом случае нужно использовать или 16 разрядный таймер, или программный.
И последнее. Может случится ситуация, что обработка прерывания таймера задержится (например, по вине другого обработчика) и регистр TCNT0 уже посчитает несколько тактов. Если просто перезаписать значение TCNT0, то следующее прерывание вызовется позже, чем нужно. Получится, что предыдущее (задержанное) и новое прерывания не выдержат требуемый интервал.
Эту ситуацию можно сгладить, если выполнять перезапись счетного регистра вот так:
TCNT0 = TCNT0 + startValue;
Сложение текущего значения счетного регистра с инициализируемым, учтет эти лишние такты. Правда есть одно НО! При больших значения startValue операция сложения может вызвать переполнение счетного регистра.
Например, startValue = 250, а таймер успел досчитать до 10. Тогда операция сложения приведет к такому результату:
Берем 8 разрядов от 260 получаем 4. В TCNT0 запишется 4.
Ссылки
Циклический таймер включения и выключения: особенности работы, разновидности устройств
Отправим материал на почту
Использование таймеров позволяет запрограммировать работу бытовых приборов в течение различных периодов времени. Речь может идти о бойлерах, чайниках, кондиционерах и многих других. При выборе подходящего реле времени необходимо понимать, на какие характеристики нужно обращать внимание и знать, как найти модель, которая наилучшим образом подойдёт к конкретным условиям эксплуатации.
Что представляют собой таймеры
Они обеспечивают подачу определённых сигналов различным устройствам в точно установленные моменты времени. Природа бытовых приборов или промышленного оборудования при осуществлении управления не имеет решающего значения.
Выключатель с таймером отключения может работать как с небольшими промежутками времени, так и осуществлять управление на протяжении дней, недель или месяцев. Мастер должен обеспечить надлежащее электрическое соединение. При программировании нужно установить время, когда должен быть подан сигнал.
Иногда такие реле времени имеют дополнительные полезные свойства. Например, таймер для чайника или кофеварки может находиться в одном корпусе с розеткой. Таким образом владелец легко может сразу установить временные параметры работы устройства.
Для чего используются
Применение реле времени распространено в бытовых условиях. Например, при работе кондиционера могут потребоваться действия, осуществляемые циклически, через определённые промежутки времени. Например, охлаждение или подогрев (в зависимости от погодных условий), которые выполняются с часовым перерывом.
Переключатель поможет подогреть пищу перед обедом. Если хозяин оставляет дом на некоторое время в течение холодного сезона, ему лучше выключить отопление. Но если он делает это всего на пару дней, он может организовать его периодическое включение с минимальными параметрами.
Реле времени позволяет организовать управление любыми бытовыми устройствами, которые работают от электрического тока, установить нужный владельцу режим работы. Таймеры также широко применяются для управления различными промышленными процессами, обеспечивая точное соблюдения временной последовательности действий.
Можно привести другие примеры использования:
Если хозяева квартиры уехали в отпуск, с помощью реле времени можно обеспечить эффект присутствия жильцов в доме. Например, таймер может включать свет в заданное время до тех пор, пока люди не вернутся.
Особенности работы таймера
Применение реле времени поможет не только рационально управлять бытовыми приборами, но и позволит обеспечить экономию электроэнергии. Например, возможно использование выключателя с задержкой времени. Качественный прибор должен обладать следующими характеристиками:
Этот прибор является сложным электронным устройством, которое может быть запрограммировано пользователем для различных целей.
Разновидности устройств
В таймерах механического типа присутствует циферблат с лепестками, расположенными по кругу. Каждый из них соответствует определённому времени. Дискретность составляет 15 или 30 минут. Комбинируя нажатые или отпущенные лепестки, можно установить, когда оборудование будет включено, а в каких случаях — нет. Также существуют марки, управление в которых построено на вращении специального колёсика и использовании нескольких рычажков. Один из простых вариантов — выключатель с задержкой времени.
Основным достоинством прибора является простая конструкция. Невысокая дискретность, отсутствие возможности реализации сложных алгоритмов ограничивает применение этого устройства.
Ролик поможет понять, как выбрать реле времени:
Видео описание
Как подобрать таймер, реле времени их виды и принцип работы.
Основой для отсчёта времени является работа встроенного двигателя. Такие таймеры отключения для выполнения работы должны иметь источник электропитания. При регулярном использовании могут быстро изнашиваться шестерёнки колёсика, с помощью которого делаются настройки времени.
Модели, в которых применяется электронный таймер, более сложно устроены, но предоставляют пользователям лучшие возможности. Большинство моделей рассчитано на программирование действий на протяжении недели, однако есть и такие, с которыми можно работать в течение более длительного времени. С помощью таких устройств можно также реализовать простые алгоритмы, например, для выключателя с задержкой отключения.
Здесь имеется удобный жидкокристаллический дисплей для отображения информации. При приобретении владелец сможет воспользоваться следующими особенностями:
При работе с электронным устройством можно заранее составить программу действий и записать в память. Наличие кнопок и дисплея придаёт наглядность процессу создания алгоритма.
Недостатком таких систем некоторые пользователи считают необходимость вводить программу.
Классификация таймеров
Распределение может быть сделано по различным признакам. Каждое реле времени требует наличия электропитания. Некоторые из устройств питаются из сети, в других используется аккумулятор. Есть модели, в которых предусмотрены оба способа.
В видео рассказано о таймере включения света для аквариума:
Видео описание
Таймер механический включения и выключения освещения в аквариуме.
В первом случае при сбое электропитания возможно возникновение проблем. Однако такие таймеры могут работать очень долго, не требуя к себе особого внимания. Устройства, использующие аккумулятор, обладают значительной степенью автономности, но действуют в течение ограниченного времени, до тех пор, пока заряд не закончится.
Для каждого такого устройства на практике устанавливается определённый режим работы. Важно, чтобы тот, который необходим владельцу был предусмотрен для этого прибора. Наиболее распространёнными являются следующие:
Когда говорят об астрономическом отсчёте речь идёт о таймере для включения света с наступлением тёмного времени суток. При этом прибор отслеживает продолжительность дня в течение года. Каждый раз включение света происходит тогда, когда в этом появляется необходимость.
Устройства можно классифицировать в зависимости от применяемого способа монтажа. Могут использоваться следующие варианты:
При приобретении нужно учитывать класс защищённости прибора от внешних условий. Также важно принимать во внимание мощность подключаемых к таймеру приборов.
Как выбрать подходящую модель
Таймер должен соответствовать задачам, для которых его приобретают. При изучении предложенных вариантов нужно учитывать следующее:
Если речь идёт о варианте, использующем сетевое питание, то нужно, чтобы он был не чувствителен к сбоям напряжения. В этих устройствах может быть предоставлен большой набор разнообразных функций. Необходимо убедиться, что среди них есть те, которые нужны.
Заключение
При выборе реле времени нужно решить, для выполнения каких задач покупается прибор. Важно, чтобы он имел подходящий уровень точности и был рассчитан на работу в соответствующем временном диапазоне. Нет необходимости покупать более сложный аппарат, чем нужно. Мощность таймера не должна быть меньше той, которые имеют подключаемые приборы. Правильно выбранный прибор поможет сделать жизнь покупателя намного комфортнее.
Архитектура однокристального микроконтроллера
Блок таймеров/счетчиков
Таймеры/счетчики (Т/С) предназначены для подсчета внешних событий, получения программно управляемых временных задержек и выполнения времязависимых функций.
В состав блока Т/С входят следующие основные элементы:
Назначение разрядов регистра режимов TMOD показано в табл. 14.8.






