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

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

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

Исключения этого можно добиться только включением на выходе счетчика буфера. Считывание в микропроцессор данных при этом производится из буфера, перезапись данных в буфер из счетчика производится периодически, но она запрещается на время обращения микропроцессора к этому буферу. Управление работой буфера реализуется на аппаратном уровне, поэтому с точки зрения программы он доступен в любой момент времени. Работа счетчика при этом ни на какое временя не блокируется – он постоянно работает, в этом смысле говорят о считывании информации с него "на лету". Примером аппаратной реализации такого счетчика в интегральном исполнении является БИС таймера К580ВИ53.

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: