Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Логика коммутации разрядов здесь обеспечивается схемотехнически: при подаче логической единицы на вывод управления разрядами комбинация из двух разнопрлярных транзисторов не инвертирует уровень напряжения, и на нужный разряд подается питание 12 В. Наоборот, одиночные транзисторы управления сегментами инвертируют уровень, и наличие логической единицы на выводе МК заставляет коммутироваться нужный сегмент на "землю" (через токоограничивающий резистор).

Таймеры в режиме PWM
Области применения таймеров в режиме широтно-импульсной модуляции (по-английски, PWM— Pulse-Wide Modulation) довольно многообразны, соответственно в МК AVR таких режимов достаточно много, и различаются они способом обеспечения ШИМ, разрядностью и другими нюансами (есть режимы, где число разрядов задано жестко, а есть такие, когда разрядность определяет содержимое регистра "захвата"). Перебирать все варианты мы, естественно, не будем — в описании контроллеров, а также в литературе [1,2] достаточно подробно описаны эти режимы (и эти сведения занимают значительно больше места, чем другие функции таймеров). Остановимся только на простейшем применении PWM для воспроизведения звука с помощью контроллеров.

По сути, ШИМ представляет собой один из вариантов аналого-цифрового или цифро-аналогового преобразования. В аналоговом, варианте преобразование синусоидального сигнала в ШИМ-последовательность и обратно в синусоиду схематически выглядит так, как показано на рис. 8.6. Для прямого преобразования на один из входов компаратора подается сигнал опорной частоты fon, который имеет треугольную форму, на второй— исходный аналоговый сигнал UBX. При совпадении уровней на входах выход компаратора переключается "туда-обратно", и в результате формируется последовательность прямоугольных импульсов с несущей частотой /оп, в длительности которых оказывается закодирован уровень исходного аналогового сигнала. Если требуется потом опять выделить аналоговый сигнал, то такую последовательность подают на ключевой усилитель (на схеме он обозначен парой комплементарных транзисторов) и пропускают через фильтр для отсеивания опорной частоты.

Для успешного преобразования без потерь в спектре аналогового сигнала опорная частота должна быть вдвое выше самых высокочастотных гармоник исходного сигнала. Так, для речи с запасом достаточно 8 кГц, можно в принципе ограничиться и 4 кГц (обычный разговор укладывается в полосу частот 300 Гц-3 кГц).. Однако тогда для фильтрации опорной частоты (она также оказывается в звуковом диапазоне) понадобится достаточно качественный фильтр. Чтобы упростить конструкцию, желательно выбрать опорную частоту выше порога слышимости, который составляет около 16-20 кГц. Отметим, что для более эффективного использования спектра опорная частота может быть переменной (аналог такого режима в AVR также присутствует).

В чисто цифровом виде ШИМ реализуется немного иначе, чем в аналоговом — в роли компаратора и одновременно формирователя опорной частоты выступает счетчик в совокупности с регистром сравнения. Исходным сигналом здесь служит цифровой звук, записанный, естественно, без сжатия — в виде последовательности байт, характеризующих уровень сигнала, — и с заранее оговоренным битрейтом, т. е. числом отсчетов в единицу времени, которая здесь выступает аналогом опорной частоты. В простейшем случае число градаций аналоговой шкалы равно 256 (8-битовый звук) и битрейт за время звучания не меняется.

Тогда преобразование цифрового звука в ШИМ-последовательность может быть выполнено с помощью реверсивного или обычного суммирующего счетчика. Для этого нужно записать в регистр сравнения текущее число из последовательности отсчетов и запустить счетчик на счет с нуля в сторону увеличения. Когда число в счетчике сравняется с записанным в регистре, переключится знакомый нам вывод ОСх, одновременно счетчик сбрасывается, и начнет считать опять. За это время в регистр сравнения необходимо успеть записать число, соответствующее следующему отсчету. Такой режим называется Fast PWM, и реализуется, как единственно возможный в некоторых 8-разрядных счетчиках, а также, как один из вариантов, в 16-разрядных счетчиках.

В другом, более "продвинутом" варианте, называемом Phase Correct PWM, 16-разрядный счетчик работает как реверсивный. При этом он непрерывно считает сначала от нуля до максимального значения — модуля счета (который определяется либо заданной разрядностью, либо содержимым регистра "захвата"), затем обратно до нуля. При достижении нуля счет опять реверсируется в сторону увеличения, и все повторяется снова. При совпадении со значением в регистре сравнения, как и в предыдущем случае, переключается вывод ОСх, соответственно, содержимое этого регистра необходимо своевременно менять. Существуют и другие режимы (для семейства Mega), но мы будем использовать именно Phase Correct PWM, причем в семействе Classic для Timerl это единственно возможный режим. Диаграммы для всех этих режимов вы найдете в любом руководстве по МК AVR.



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru