1. Назначим в качестве источника тактирования для счетчика временной базы программируемый делитель, на вход которого подается fBUS=8 МГц;
2. Установим коэффициент деления программируемого делителя частоты на входе счетчика временной базы, равный 4. Тогда частота тактирования счетчика будет равна 2 МГц, что соответствует разрешающей способности счетчика 0,5 мкс. Выбранная таким образом разрешающая способность должна быть достаточна для формирования периода следования и длительности импульса;
3. По условию задачи частота
формируемого сигнала составляет 519 Гц, что соответствует периоду следования Т = 1/519 = 0.0019268 с;
4. Вычислим длительность высокого и низкого уровня сигнала на интервале периода. По условию задачи коэффициент заполнения равен 77%. Длительность искомых временных интервалов составляет:
Длительность_1 = 0.77*(0.0019268) = 0.001484 с
Длительность_0 = 0.23*(0.0019268) = 0.0004432 с
5. Преобразуем полученные временные интервалы в целое число периодов частоты тактирования счетчика временной базы:
Код_1 = 0.001484 с/0.5 мкс = 2968 тактов
Код_0 = 0.0004432 с /0.5 мкс = 886 тактов
На рис. 4.44 приведена упрощенная блок схема алгоритма генерации импульсной последовательности. Ниже представлен исходный текст программы на Си (timer2.c), в котором используется метод программного опроса триггера события в канале выходного сравнения.
Рис. 4.44. Блок схема алгоритма генерации импульсной последовательности с заданными временными параметрами
Предложенный к рассмотрению программный фрагмент (timer2.c) отличается своей простотой и легкостью отладки. Это объясняется использованным методом программного опроса триггера события канала. Однако такой способ генерации импульсного сигнала становится непригодным, если по условию задачи управления необходимо формировать сразу несколько импульсных сигналов, и в каждом из них должны быть точно реализованы их временные параметры. Поэтому рассмотрим способ генерации импульсного сигнала с использованием подсистемы выходного сравнения таймера и подсистемы прерывания.