В статье про таймеры мы столкнулись с проблемой переполнения счетчика. Отнюдь не только в счетчиках можно говорить об этом. Любая переменная, используемая в программе, имеет конечное значение. Если она записывается в 8-битном виде, то ее максимальное значение будет 255, если в 16-битном – то 65536.
Каждый раз, при достижении своего максимального значения, добавление некоторого числа приведет к переполнению. Например:
unsigned char i=255; // i без знаковый символьный может быть от 0 до 255
i++; /* к существующему значению i прибавляем единицу, так максимально значение 255, то произойдет переполнение и отсчет начнётся сначала. В итоге получим i=0*/
В процессе написания программы для устройства под управлением МК, необходимо продумывать всевозможные нюансы. Одним из таких нюансов, который рассмотрим в этой статье, есть энергопотребление МК.
Если будущее устройство планируется запитывать от независимого источника питания (например, электросети), то вопрос прожорливости МК становится не столь важным, а вот как быть с устройствами, которые работают от аккумуляторов или батареек?
Рассмотрим использования таймера TMR0 на примере программы обработки прерываний. Наша задача: с помощью таймера TMR0 отмерять время паузы между миганиями светодиодов. Пусть эта пауза будет 0,3 секунды. Будем использовать внешний осциллятор с тактовой частотой 4 Мгц.
Из Статья 13. Микроконтроллеры PIC. Немного теории. Таймеры. мы знаем, что при таких условиях тик таймера будет происходить каждую 1 мкс, а нам нужно отсчитать 0,3 с = 300 000 мкс. Напомню, что данный таймер умеет считать только до 255. Даже если использовать самый большой преддеритель, то с помощью таймера TMR0 можно посчитать 256*256=65536 мкс, после чего будет переполнение и отсчет начнется заново. Значит, одним таймером, для решения поставленной задачи, не обойтись. Как быть?
Для работы с временными интервалами в МК есть встроенный таймер, иногда и не один. С его помощью можно формировать импульсы заданной длинны через равные промежутки времени, а так же выполнять работу счетчика – подсчет импульсов за единицу времени.
Начнем с того, что в разных МК бывают разные таймеры. Что бы посмотреть, какие таймеры встроены в конкретный МК, смотрим в даташит для сего камня.
Рассмотрим какие бывают таймеры и их краткую характеристику. Так как их в некоторых МК может быть несколько, то каждый таймер имеет свое название.