Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 229 ров/счетчиков может работать как с использованием прерываний, так и без прерываний. Далее мы рассмотрим оба эти варианта. И начнем мы с более простого случая. Итак, заново сформулируем нашу задачу: «Доработать программу «Бегущие огни», изменив процедуру форми рования задержки. Новая процедура должна использовать один из вну тренних таймеров/счетчиков и не использовать прерывания.» Схема Так как мы разрабатываем не самостоятельное устройство, а лишь усо вершенствуем управляющую программу, то схема устройства (рис. 5.11) не изменяется. Алгоритм Как известно, в микроконтроллере ATtiny2313 имеются два встро енных таймера-счетчика. Поэтому сначала нам нужно выбрать, какой из них мы будем использовать. Исходить будем из заданного времени задержки 200 мс. Как известно, для формирования временных интерва лов таймер/счетчик просто подсчитывает тактовые импульсы от систем ного генератора. Частота сигнала этого генератора в нашем случае равна 4 МГц. А период импульсов 1/4=0,25 мкс. Для того, чтобы получить на выходе 200 мс, необходимо иметь коэффициент деления, равный 200-10 ’ 3 /0,25-10 ’ 6 =800-10 3 (восемьсот тысяч раз). Микросхема ATtiny2313 содержит два таймера. Один восьмиразряд ный и один шестнадцати. Восьмиразрядный таймер имеет максимальный коэффициент пересчета 2 8 =256, а шестнадцатиразрядный — 2 16 =6553б. То есть даже шестнадцатиразрядного таймера нам не хватит для формиро вания требуемой задержки. Придется воспользоваться предварительным делителем. Этот делитель производит предварительное деление тактового сигнала перед тем, как тот поступит на вход таймера/счетчика. Программным путем можно выбрать один из четырех фиксирован ных коэффициентов деления (см. приложение). Выберем самый боль шой возможный коэффициент деления предделителя (1024). Тогда на его выходе мы получим сигнал с частотой 4- 10 6 / 1024 = 3906 Гц. Период такого сигнала будет равен 1/3906 ~ 0,256- 10' 3 с или 0,256 мс. Именно этот сиг нал поступает на вход нашего таймера, который обеспечивает оконча тельное деление. Посчитаем коэффициент деления, который наш таймер должен нам обеспечить: 200/0,256 = 780. Такой коэффициент пересчета нам может обеспечить только таймер Т1. Итак, мы определились как с выбором таймера, так и с его настрой ками. Теперь можно приступать к созданию новой подпрограммы
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==