?Л" - НАЧИНАЮ Щ ИМ
для реализации динамической индикации, перио-
дического опроса состояния каких-либо датчиков,
счета времени (секундомеры, часы и др.), форми-
рования звуковых сигналов и т.п. Мы обязатель-
но разберем несколько практических схем и соот-
ветствующих программ реально действующих по-
лезных устройств, но сделаем это после полного
изучения всех таймеров и всех их режимов.
А теперь попрактикуемся в измерении перио-
да произвольных сигналов. Для этого соберем сле-
дующую схему (рис. 10) и рассмотрим програм-
му, которая измеряла бы период поступающего
.на ее вход сигнала и зажигала бы один из трех
светодиодов в зависимости от диапазона частот,
в котором находится измеренное значение. С не-
которой натяжкой эту схему можно назвать час-
тотомером ©.
Светодиоды HL1 .
..HL3 желательно взять раз-
ных цветов. Разъем для программирования мик-
роконтроллера не показан, подключается он так
же, как и на учебной схеме №113 (надеюсь, вы со-
бираете схемы на макетке, так что для этой ис-
пользуете в качестве основы предыдущую).
При помощи транзистора VT1 измеряемый сиг-
нал усиливается и в нем фильтруются высокочас-
тотные составляющие (благодаря С2). Если вы
планируете “исследовать” сигнал синусоидальной
формы, конденсатор С2 лучше исключить, так на
вход INTO будут поступать прямоугольные импуль-
сы с периодом входного сигнала. С конденсато-
ром С2 форма сигнала на входе INTO будет дале-
ка от прямоугольной, т.е. вход будет работать в нетипич-
ном режиме (аналоговый сигнал на цифровом входе), но
тем не менее будет продолжать реагировать на уровень
сигнала. В этом случае следует быть готовым к тому, что
наша программа будет получать большое количество лож-
ных сведений об уровне сигнала на входе INTO - все то
время, пока уровень сигнала находится между порого-
выми значениями логических 0 и 1. Для целей обучения
это не страшно, а в реальных конструкциях такого режи-
ма следует избегать.
Алгоритм работы нашей программы, как всегда, сна-
чала “построим в голове”. На входе INTO мы имеем пери-
одически повторяющийся сигнал, период которого мы
должны измерить. Если бы речь шла о длительности вы-
сокого уровня сигнала - можно было бы задействовать
для этого TimerO в режиме управления по входу INTO (при
GATE0=1), но в условии задачи оговорено измерение пе-
риода, так что этот вариант не подходит, придется изме-
рять период иначе. Давайте продумаем, как бы мы сами
это делали на месте микроконтроллера? Прежде всего,
мы должны обнаружить
начало
очередного импульса. Для
этого необходимо сначала получить текущее значение
уровня сигнала на входе INTO, а затем дождаться, когда
он изменится на противоположный - это и будет начало
очередного измеряемого периода. С этого момента мы
должны начать измерение времени, для чего лучше всего
подходит таймер в режиме счета системных тактов. Пока
таймер считает, мы должны дождаться
д в у х с м е н
уровня
сигнала на противоположный, т.е. отсчитать период, пос-
ле чего таймер остановить. То, что насчитает таймер к
этому моменту, и будет значением длительности перио-
да входного сигнала. Затем мы должны проанализиро-
вать значение счетчика таймера, определив, в какой ди-
апазон заранее рассчитанных значений оно попадает, и
зажечь один из трех светодиодов по условию задачи, а
потом снова повторить все сначала.
Все пока просто, но мы обязательно должны предус-
мотреть вариант, когда сигнал на входе имеет слишком
низкую частоту, т.е. таймер может переполниться. Кро-
ме того, необходимо все измерения проводить перио-
дически, причем достаточно часто, чтобы мигание све-
тодиодов не было заметно (т.е. чаще, чем 25 раз в се-
кунду). Для организации периодичного измерения ис-
пользуем прерывание от Т іт е М , аналогично рассмот-
ренному ранее. При этом нас ожидает еще один под-
водный камень - ведь ожидание начала импульса мо-
жет длиться больше, чем период прерываний от ТітеМ ,
что так же необходимо предусмотреть в программе (т.е.
если мы никак не можем дождаться начала импульса,
скорее всего на вход ничего не подано, и все светодио-
ды должны погаснуть).
При решении поставленной задачи постараемся из-
бежать сложного обработчика прерываний - используем
принцип семафора. Этот принцип широко используется
Радиолюбитель - 10 /2 0 0 7 У
43
предыдущая страница 43 Радиолюбитель 2007-10 читать онлайн следующая страница 45 Радиолюбитель 2007-10 читать онлайн Домой Выключить/включить текст