Принципы построения микропроцессорных таймеров
Принципы построения микропроцессорных таймеров
Рассмотренные синхронные последовательные порты позволяют достигнуть больших скоростей передачи данных, но провод, по которому ведётся передача синхросигнала, практически не несёт информации. Такой сигнал можно было бы сформировать и на приёмном конце линии передачи, если заранее договориться о скорости передачи. Единственная проблема — это то, что невозможно построить два абсолютно одинаковых генератора. Генераторы необходимо синхронизировать. Для синхронизации внутренних генераторов используется особое условие начала асинхронной передачи: старт. Всё время, пока не ведётся передача информации, на линии присутствует стоп-сигнал единичного уровня. Перед началом передачи каждого байта передаётся старт-бит, сигнализирующий приемнику о начале посылки данных, за которым следуют информационные биты. Стартовый бит всегда передаётся нулевым уровнем с длительностью, равной длительности информационных бит. В некоторых случаях после передачи информационных бит может передаваться, бит паритета (четности). Завершается передача данных стоп-сигналом. Минимальная длительность стопового сигнала должна быть 1,5 длительности информационных бит, но обычно используют паузу между соседними пакетами данных две длительности информационного бита. Временная диаграмма передаваемых сигналов при асинхронной передаче приведена на рисунке 6.
Рисунок 6. Временная диаграмма передаваемых сигналов при асинхронной передаче.
Продолжительность стопового бита не ограничена. Это позволяет регулировать скорость передачи в зависимости от скорости поступления информации.
Асинхронные последовательные порты широко используются в современной вычислительной технике. Для получения дополнительной информации можно обратиться к дополнительной литературе или к файлу
Таймерыпредназначены для формирования временных интервалов, позволяя микропроцессорной системе (компьютеру или микроконтроллеру) работать в режиме реального времени.
Таймеры представляют собой обычные цифровые счётчики, которые подсчитывают импульсы от высокостабильного генератора частоты. К системной шине микропроцессора таймеры подключаются при помощи параллельных портов.
Генератор частоты, входящий в состав таймера, определяет минимальный интервал времени, который может определять таймер. Интервалы времени, задаваемые таймером, могут устанавливаться только из дискретного набора допустимых времён. Дискретность установки этих интервалов времени тоже определяется частотой задающего генератора. Разрядность цифрового счётчика, входящего в состав таймера, определяет максимальный интервал времени, который может определять таймер.
Обычно используются 16-ти разрядные таймеры, поэтому, для подключения такого таймера к 8-ми разрядному процессору требуется два параллельных порта. Кроме того, таймером нужно управлять. Таймер нужно включать и выключать, часто требуется определять не возникало ли переполнение таймера (факт переполнения легко запомнить в дополнительном триггере, подключенном к выходу переноса счетчика таймера). Этот триггер называется флагом переполнения таймера. Триггер (флаг) включения и выключения таймера и флаг переполнения таймера подключают к системной шине микропроцессора через дополнительный порт ввода вывода.
Структурная схема таймера, построенного по описанным выше принципам, приведена на рисунке 1.
Рисунок 1. Структурная схема таймера.
В зависимости от типа использованного цифрового счетчика таймеры бывают суммирующие или вычитающие. Если в таймере используется суммирующий счётчик, то таймер называется суммирующим. Если в таймере используется вычитающий счётчик, то таймер называется вычитающим.
Использование вычитающего счётчика позволяет проще задавать интервалы времени. В этом случае записываемый в таймер код будет соответствовать интервалу времени:
В случае использования суммирующего таймера код, записываемый в таймер для задания интервала времени, определяется из другой формулы:
В этой формуле код, который заносится в таймер, представляет собой дополнение кода интервала времени до максимального кода, который можно записать в таймер. Максимальный код таймера определяется по разрядности таймера. В рассмотренном примере разрядность таймера равна 16. Это означает, что максимальный код равен 65535.
Достаточно часто суммирующие таймеры используются в режиме свободнобегущего таймера. Схема такого таймера приведена на рисунке 2.
Рисунок 2. Структурная схема свободнобегущего таймера с модулем сравнения.
Свободнобегущие таймеры используются как системные часы, задающие время внутри микропроцессорной системы. Для задания промежутков времени микропроцессор считывает значение текущего системного времени и суммирует с ним код задаваемого промежутка времени. Полученный результат записывается в регистр сравнения таймера. При совпадении значений таймера и регистра сравнения устанавливается флаг совпадения. Значение этого флага можно определить программным опросом или воспользоваться механизмом прерывания работы процессора.
Часто с одним свободно бегущим таймером работает несколько модулей сравнения. В этом случае они образуют набор модулей сравнения (PCA). Практически все современные микроконтроллеры и сигнальные процессоры оснащены таймерами с такими наборами модулей.
Кроме модулей сравнения с свободнобегущим таймером работают модули захвата, которые позволяют аппаратно запоминать время какого-либо внешнего события без участия центрального процессора. Структурная схема свободнобегущего таймера с модулем захвата приведена на рисунке 3.
Источник
Принципы построения таймеров
Таймеры предназначены для формирования временных интервалов, позволяя микропроцессорной системе работать в режиме реального времени.
Таймеры представляют собой обычные цифровые счётчики, которые подсчитывают импульсы от высокостабильного генератора частоты. К системной шине микропроцессора таймеры подключаются при помощи параллельных портов.
Генератор частоты, входящий в состав таймера, определяет минимальный интервал времени, который может определять таймер. Интервалы времени, задаваемые таймером, могут устанавливаться только из дискретного набора допустимых времЈн. Дискретность установки этих интервалов времени тоже определяется частотой задающего генератора. Разрядность цифрового счЈтчика, входящего в состав таймера, определяет максимальный интервал времени, который может определять таймер.
Обычно используются 16-ти разрядные таймеры, поэтому, для подключения такого таймера к 8-ми разрядному процессору требуется два параллельных порта. Кроме того, таймером нужно управлять. Таймер нужно включать и выключать, часто требуется определять не возникало ли переполнение таймера (факт переполнения легко запомнить в дополнительном триггере, подключенном к выходу переноса счетчика таймера). Этот триггер называется флагом переполнения таймера. Триггер (флаг) включения и выключения таймера и флаг переполнения таймера подключают к системной шине микропроцессора через дополнительный порт ввода вывода.
Структурная схема таймера, построенного по описанным выше принципам, приведена на рисунке 1.
Рисунок 1. Структурная схема таймера.
В зависимости от типа использованного цифрового счетчика таймеры бывают суммирующие или вычитающие. Если в таймере используется суммирующий счётчик, то таймер называется суммирующим. Если в таймере используется вычитающий счётчик, то таймер называется вычитающим.
Использование вычитающего счЈтчика позволяет проще задавать интервалы времени. В этом случае записываемый в таймер код будет соответствовать интервалу времени:
В случае использования суммирующего таймера код, записываемый в таймер для задания интервала времени, определяется из другой формулы:
В этой формуле код, который заносится в таймер, представляет собой дополнение кода интервала времени до максимального кода, который можно записать в таймер. Максимальный код таймера определяется по разрядности таймера. В рассмотренном примере разрядность таймера равна 16. Это означает, что максимальный код равен 65535.
Достаточно часто суммирующие таймеры используются в режиме свободнобегущего таймера. Схема такого таймера приведена на рисунке 2.
Рисунок 2. Структурная схема свободнобегущего таймера с модулем сравнения.
Свободнобегущие таймеры используются как системные часы, задающие время внутри микропроцессорной системы. Для задания промежутков времени микропроцессор считывает значение текущего системного времени и суммирует с ним код задаваемого промежутка времени. Полученный результат записывается в регистр сравнения таймера. При совпадении значений таймера и регистра сравнения устанавливается флаг совпадения. Значение этого флага можно определить программым опросом или воспользоваться механизмом прерывания работы процессора.
Часто с одним свободно бегущим таймером работает несколько модулей сравнения.
Кроме модулей сравнения с свободнобегущим таймером работают модули захвата, которые позволяют аппаратно запоминать время какого-либо внешнего события без участия центрального процессора. Структурная схема свободнобегущего таймера с модулем захвата приведена на рисунке 3.
Источник
Таймер — счетчик
Таймер-счетчик – это устройство, заложенное в структуру МК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 микросекунд чтобы счетчик обнулился.
Источник
Использование таймера в качестве измерителя длительности импульсов
Известно, что измерение длительности импульса можно произвести, подсчитав импульсы эталонной частоты. Принцип измерения длительности импульсов иллюстрируется временной диаграммой, приведенной на рис. 6.20. Например, если за время длительности импульса на вход счетчика таймера поступят 15 микросекундных импульсов, то длительность измеренного входного импульса равна 15 мкс.
Рис. 6.20. Временная диаграмма измерения длительности импульсов
Для измерения длительности импульсаизмеряемый сигнал подается на вывод микроконтроллера INTx, и в бит управления GATE записывается разрешающий сигнал логической единицы. Таймер/счетчик настраивается в режим таймера записью в бит C/Tx логического нуля. Содержимое таймера перед измерением длительности импульса обнуляется. Ассемблерный текст процедуры измерения длительности импульса приведен в листинге 20.1.
Листинг 20.1. Процедура измерения длительности импульса
Перевести таймер T0 в 16-разрядный режим ;
Работать от внутреннего генератора ;|+——Включать таймер от вывода микроконтроллера INT0 ;||++——-Перевести таймер T1 в 13-разрядный режим ;|+———Работать от внутреннего генератора ;+———-Запретить управление таймером от вывода INT1 MOV TH0, #0 ;Обнулить старший байт таймера MOV TL0, #0 ;Обнулить младший байт таймера SETB TR0 ;Включить измеритель ширины импульса TstLog0: JNB INT0, TstLog0 ;Подождать начало импульса TstLog1: JNB INT0, TstLog1 ;Подождать конец импульса CLR TR0 ;Отключить измеритель ширины импульса Если теперь на вход микроконтроллера INT0 подать импульс с неизвестной длительностью, то в регистрах TH0 и TL0 будет записана его длительность в микросекундах.
Использование таймера в качестве частотомера
Известно, что измерение частотыможно произвести, подсчитав количество периодов неизвестной частоты за единицу времени. Принцип измерения частоты иллюстрируется рис. 20.21. Например, если за 1 мс на вход счетчика таймера поступят 15 импульсов, то измеренная частота равна 15 кГц.
Рис. 6.21. Временная диаграмма измерения частоты
Измеряемый сигнал подается на вывод микроконтроллера Tx. Таймер/счетчик настраивается в режим счетчика записью в бит C/Tx логической единицы. Содержимое таймера обнуляется. Таймер включается на строго определенный интервал времени. Этот интервал задается другим таймером.
Пример исходного текста программы измерения частоты сигнала на выводе микроконтроллера T0 приведен в листинге 20.2.
Если теперь на вход микроконтроллера T0 подать сигнал с неизвестной частотой, то в регистрах TH0 и TL0 будет записана его частота в килогерцах.
Листинг 20.2. Процедура измерения частоты сигнала
Перевести таймер T0 в 16-разрядный режим ;
Работать от сигнала на выводе T0 ;|+——Запретить управление таймером от вывода INT0 ;||++——-Перевести таймер T1 в 16-разрядный режим ;|+———Работать от внутреннего генератора ;+———-Запретить управление таймером от вывода INT1 MOV TH0, #0 ;Обнулить старший байт счетчика MOV TL0, #0 ;Обнулить младший байт счетчика ;—измерение вести в течение 1 мс————————————— MOV TH1, #HIGH(-1000) ;Загрузить старший байт таймера MOV TL1, #LOW(-1000) ;Загрузить младший байт таймера MOV TCON,#01010000b ;Включить частотомер ;
Источник