Шим и AVR таймер.Общие сведение.

Цифровые устройства, какмикроконтроллер, может легко работать с входами и выходами, который имееттолько два состояния включен и выключен. Такимобразом, вы можете легко использовать ее для контроля состояния светодиода то есть вкл. или выкл..Таким же образом вы можете использовать его для управления любымэлектрическим прибором вкл / выкл, при использование надлежащих драйверов(транзистор, тиристор, реле ит.д.). Но иногда нужно больше, чем просто " включено" и"выключено" контроль над устройством. Если вы хотите контролироватьяркость светодиода (или лампы), или скорости двигателя постоянного тока, тоцифровые (вкл / выкл) сигналы просто не могут это сделать. Этузадачу можно решить с помощью метода называемого PWM или широтно-импульсноймодуляция.

PWMявляется метод, используемый для генерации аналоговых сигналов от цифровыхустройств, как MCU. Почти всесовременные микроконтроллеры обладают аппаратной генерацией сигнала ШИМ. В этомуроке мы будем изучать основы техники PWM и позже мы увидим, как осуществитьгенерацию PWM в микроконтроллерах AVR.

Цифровыеустройства, как и микроконтроллер, могут генерировать только два уровня на выходе,High = 5В и LOW = 0В. Но что,если мы хотим, чтобы генерировать 2,5 В или 3.1v или напряжение между 0-5 вольтна выходе? Для этих видов требования вместо того,чтобы генерировать постоянное выходное напряжение мы генерируем квадратную волну, которая имеет.High= 5В и LOW = 0В (см. рисунок 1).

 

 

 

Нарисунке вы можете увидеть PWM сигнал. Каквы можете видеть, что это только цифровой сигнал (может быть легко сгенерерованMCU). Но позвольте мне прояснитьнекоторые его свойства.

Сигналостается "ON" в течение некоторого времени  и "OFF" в течение некоторого времени.

  •  Ton = Время выхода остается High.
  • Toff = Время выхода остается Low.
  • Когда мощность высока, напряжение 5В
  • Когда мощность низка, напряжение – 0В
  • T = период времени = Toff + Ton

 

Рабочийцикл.

Онопределяется:

  

Таким образом  выможете увидеть, что это просто процент от полного периода времени. На рисунке выше (рис. 1) можно увидеть, что Ton = Toff = половина периода времени. Таким образом производительность составляет 50%. Если частота таких волн достаточно велика (скажем, 500 Гц), мощность, которую мы получим на выходе, является половина5V т.е. 2,5 вольт. Таким образом, если этот выход связан с двигателем,то онбудет работать на 50% его полной скорости. ТехникаPWM используется, чтобы генерировать любое напряжение между двумя напряжениями(например,между 0-12В). Хитрость заключается в том, чтобы изменять рабочий цикл между0-100% и получить тот же процент входного напряжения на выход. Нижеприведены некоторые примеры PWM сигналов при различных нагрузках.


 

  Итак,вы только что видели, как мы можем генерировать аналоговые напряжения с цифровой системы с помощью PWM техники. Еслина выход поставить R / C фильтр вы получите чистый уровней сигналов постоянноготока, а не квадратные волны. Ноэто не является обязательным для приводных двигателей или длярегулирования  яркости светодиодов.  

 

 AVRТаймер

  Таймерстандартные функции практически каждого микроконтроллера.Таким образом очень важно изучать их использование. МикроконтроллерAVR имеет очень мощные и многофункциональные таймеры. Поэтому этот раздел описывает лишь основныесведения.

Таймеры, какправило, имеют разрешение 8 или 16 бит. Такимобразом, 8 бит таймера могу удерживать значения в пределах 0-255. Ноэтот регистр имеет магическое свойство! Егозначение возрастает или уменьшается автоматически в заданное скорости. Иэта операция не требует вмешательство центрального процессора.

 

Так как,таймер работает независимо от центрального процессора,это может использоваться,чтобы измерить точное время. Таймер при определенных условияхвыполняет какое-либо действие или автоматически информирует центральныйпроцессор. Одним из основных условий является ситуация, когда таймер достигсвоего максимального значения (255 для 8 битных таймеров) и возвращается к 0. Вэтом случае таймер может выдавать прерывание процессору, для такого случаядолжна быть написана служба ISR для обработки события.
 
 

 

Использование 8 BIT Таймер (Timer0)

Одно кристальный микроконтроллер ATmega16 и AtMega32 есть три различных таймера,из которых самый простым является TIMER0.Его разрешение составляет 8 BIT т. е. он может рассчитывать от 0 до 255. Делитель частоты - механизм для того, чтобы генерировать синхроимпульсы для таймера  центрального процессора. Делитель частоты обычно используется, чтобы разделить эту тактовую частоту и произвести синхроимпульсы для таймера.Регистры таймеров, приводятся ниже.TCCR0- счетчик времени Регистр управления. Эта информация будет использоватьсядля настройки таймера. 

 

 

Каквы можете видеть есть 8 бит каждый из которых используется для определенныхцелей. Для этого урока я буду акцентировать внимание только на последние трибита CS02 CS01 CS00. Онииспользуются для создания предварительного делителя  потаймеру

Этотрегистр используется для включения / выключения прерываний, связанных стаймерами. Этот регистр управления прерываниями всех трех таймеров. Последние два бита (BIT BIT 1 и 0)Управление прерываний Timer0. Timer0имеет два прерывания, но в этой статье я расскажу вам только об одом. Это бит, когда установлен в положение"1" позволяет вызвать прерывания. Теперьнаступило время для практических занятий. Мы увеличим переменную "счет"  при каждом прерывание,если "счет" достигнет 61, то мы будемпереключать PORTC0, который подключен со светодиодом вновь установим значение "счет" в ноль.Синхронизирующий вход  Timer0 = 16MHz/1024=15625 Гц. Частотапереполнения = 15625 / 256 = 61,0352 Гц.

 Настройка Timer0

  Предварительного делителя = FCPU/1024 TCCR0 | = (1 <<CS02) | (1 <<CS00);
  Включить переполнения разрешения прерывания TIMSK | = (1 <<TOIE0);
  Инициализировать счетчик TCNT0 = 0; 
 
ПРИЛОЖЕНИЯ: 
 
  Исходный код смотрите в архиве