Источники тактовой частоты для МК Для того чтобы микроконтроллер мог работать на него нужно подать тактовые импульсы (синхроимпульсы). Данная частота распределяется по всем узлам внутри МК. Все операции внутри МК проходят под такт этой частоты. Максимальная тактовая частота работы МК MEGA16 составляет 16 МГц. При данной частоте он способен выполнять 16 миллионов инструкций в секунду – т.е. его производительность составляет 16 MIPS. Источником тактовых импульсов могут служить: 1) внешний кварцевый резонатор; 2) внешний генератор импульсов; 3) внутренний (встроенный) генератор импульсов. При необходимости точно соблюдать временные интервалы нужно использовать внешние источники тактовых импульсов, т.к. частота работы внутреннего генератора не стабильна. В качестве внешних источников тактового сигнала используют кварцевые резонаторы («кварцы») или генераторы частотой до 8 МГц (Рис. 1, 2).  Рис. 2. Кварцевый резонатор («кварц») слева, генераторы справа. МК MEGA16 содержит в своем составе 4 внутренних источника тактовых импульсов: • 1 МГц; • 2 МГц; • 4 МГц; • 8 МГц. Выбор источника тактового сигнала и максимальная частота 16 МГц достигаются при помощи настроечных битов (fuse bits - «фьюзы») и регистра калибровки частоты OSCCAL. Чем выше тактовая частота МК – тем более быстро работает МК, но за это приходится расплачиваться более высоким потреблением энергии и тепловыделением. Принцип работы таймера Источником тактовой частоты для таймера могут служить: 1) рабочая (тактовая) частота МК (внутренний источник частоты); 2) синхроимпульсы, поданные на определенный вывод МК (внешний источник частоты). Тактовая частота МК перед подачей на счетчик таймера может быть уменьшена/увеличена – это настраивается в регистре управления таймером. Увеличение частоты таймера приведет к более быстрой его работе. Прерывание таймера по переполнению Схема работы МК с включенным таймером0 и разрешенным прерыванием по переполнению для него (Рис. 3).  Рис. 3. Прерывание таймера по переполнению На счетчик таймера подается тактовая частота МК уменьшенная делителем таймера0 (настройки делителя рассмотрены далее). При запуске таймера в работу, его счетчик (TCNT0) начинает считать импульсы (счетчик инкрементируется на 1 за один период). Подсчет ведется от 0 до максимального значения (для 8-битного таймера – 255), далее происходит переполнение счетчика таймера и отсчет продолжается с нуля. При переполнении таймера происходит прерывание, и микроконтроллер выполняет следующую последовательность действий: 1) выполнение основной программы прерывается; 2) выполняется обработчик прерывания для таймера0 по переполнению; 3) продолжается выполнение основной программы с инструкции, на которой оно было прервано. Для того чтобы прерывание произошло, необходимо чтобы оно было разрешено при помощи регистра маски прерываний для таймеров TIMSK (бит TOIE0 = 1), а также были разрешены прерывания при помощи глобального флага разрешения прерываний (команда sei();). Глобальный флаг разрешения/запрещения прерываний (регистр статуса SREG, бит I) позволяет запретить возникновение прерываний (вне зависимости от их источника). Прерывание таймера по совпадению  Рис. 4. Прерывание таймера по совпадению Принцип работы таймера при разрешенном прерывании по совпадению (Рис. 4) практически ничем не отличается от принципа работы таймера по переполнению. Счетчик таймера считает импульсы – а прерывание (TIMER0_COMP_vect) возникает при совпадении значения счетчика (TCNT0) и заранее запрограммированного опорного значения (OCR0). В данном случае OCR0 = 200. При достижении счетчиком опорного значения, счетчик можно сбрасывать в 0. Это достигается настройками регистра управления таймера0. Для того чтобы прерывание возникло, оно должно быть разрешено в регистре маски прерываний таймеров (TIMSK, бит OCIE0) и должны быть разрешены прерывания (SREG, бит I). Прерывание таймера по переполнению и по совпадению Оба прерывания могут работать одновременно (Рис. 5).  Рис. 5. Прерывание таймера по переполнению и по совпадению При одновременном возникновении нескольких прерываний (на Рис. 5 данный случай не показан), первым выполнится прерывание, имеющее больший приоритет, потом выполнится прерывание с меньшим приоритетом, а потом продолжится выполнение основной программы. ШИМ Широтно-Импульсная Модуляция (PWM – Pulse Width Modulation) это способ задания аналогового сигнала цифровым методом, то есть из цифрового выхода, дающего только нули и единицы получить какие-то плавно меняющиеся величины. В данной работе этот режим не рассматривается и не используется. |