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





Phase Correct PWM мы будем применять для 8-битового звука, т. е. разрядность режима установим 8 бит (в 16-разрядном счетчике доступны еще режимы 9 и 10 бит). При этом счетчик считает от 0 до 255 и обратно, поэтому несущая частота ШИМ-последовательности (но не битрейт звука!) будет задаваться соотношением "частота на входе таймера/510". ' Зак. 400 ятия необходимо иметь достаточно быстрый контроллер и устанавливать коэффициент предделителя 1/1. Например, "кварц" с тактовой частотой 16 МГц даст несущую 31 372 Гц, которую легко отфильтровать простейшей RC-цепочкой, как на рис. 8.6. Обратите внимание, что никаких прерываний от Timerl в таком режиме не требуется, в работе находится лишь вывод ОС 1.

WAV-формат может нести и стереозвук (если разрешение восьмибитное, то первый байт соответствует сигналу левого канала, второй — правого, третий — опять левого и т. п.). Организовать в нашей программе стереозвук очень просто — достаточно попеременно подавать данные на регистры сравнения OCRIA и OCRIB, тогда второй канал можно снимать с вывода ОС1 В.

ГЛАВА 9
Использование EEPROM
Энергонезависимая память данных, которая в архитектуре AVR традиционно именуется EEPROM, не во всех моделях полностью соответствует этому названию: в большинстве МК она, как и положено, имеет организацию с индивидуальной линейной адресацией каждого байта. Но в ряде моделей (mega8, mega8515/8535, megal6 и др.) EEPROM, как и flash-память, организована постранично, только страницы эти очень маленькие, всего по 4 байта. К тому же это имеет значение только при программировании памяти по параллельному интерфейсу, так что учитывать данный факт приходится разработчикам универсальных программаторов. При программировании как "снаружи" по последовательному интерфейсу, так и "изнутри" (из программы) страничная структура EEPROM не учитывается, и доступ к ней во всех моделях осуществляется одинаково (побайтно).

Размер EEPROM колеблется от 64 байт в младших моделях Tiny до 4096 байт в старших Mega. В ATtiny2313 объем EEPROM составляет 128 байт и адресация, как в других моделях с объемом 256 байт и менее, происходит через единственный регистр адреса EEAR. Исключение представляют собой подсемейства, основанные на одинаковой структуре, но с разным объемом памяти, такие как tiny24/44/84 или mega48/88/168 — здесь адресация осуществляется всегда через пару регистров EEARH :EEARL, но в младших моделях подсемейства, где объем EEPROM менее 512 байт, старший из регистров EEARH не учитывается, и в процедурах адресации может не участвовать. В моделях Mega с памятью 8 кбайт, на которые мы в основном ориентируемся в этой книге, объем EEPROM — 512 байт, и адресация производится через пару регистров, причем в EEARH имеет значение только младший бит.

Еще раз о сохранности данных в EEPROM
EEPROM и flash-память программ принципиально не отличаются и предназначены для хранения данных в отсутствие питания. Однако межДу ними есть кардинальное различие— EEPROM может быть перезаписана в любой момент программой самого МК. В этом состоит и ее слабость: как мы уже говорили (см. главу 2), при снижении питания до определенного уровня МК начинает совершать непредсказуемые операции, и EEPROM с большой вероятностью может быть повреждена. Для защиты от этой напасти (и вообще от выполнения каких-то операций, которые иногда могут навредить внешним устройствам) в AVR предусмотрена система BOD (см. главу 2), которая при снижении напряжения питания до некоторого порога (4 или 2,7 В) "загоняет" МК в состояние сброса. Это помогает, но, как показывает опыт, для обеспечения абсолютной защиты данных в EEPROM, к сожалению, встроенной системы BOD недостаточно. / Самый надежный и проверенный способ предохранения данных в EEPROM — применение внешнего монитора питания. Это небольшая микросхема (как правило, трехвыводная), которая при снижении питания ниже допустимого закорачивает свой выход на "землю". Если питание в норме, то выход находится в состоянии "разрыва" и никак не влияет на работу схемы. Присоединив этот выход к выводу /RESET, мы получаем надежный предохранитель (рис. 9.1).
Микросхема МС34064 имеет встроенный порог срабатывания 4,6 В, выпускается в корпусе ТО-92 с гибкими выводами и обладает достаточно малым собственным потреблением (менее 0,5 мА). При плавном снижении напряжения время срабатывания у нее составляет порядка 200 не, чего достаточно для того, чтобы "вредные" команды не успели выполниться, время обратного включения составляет доли секунды, что предотвращает срабатывание при дребезге. Для напряжения 5 В это один из самых популярных мониторов питания.

Если у вас питание автономное (от батарей), то к выбору монитора питания следует подходить довольно тщательно — так, чтобы не приводить схему в неработоспособное состояние, когда батареи еще не исчерпали свой ресурс. При напряжении питания 3,3 В можно использовать микросхемы DS1816-10 и MAX809S, при напряжении 3,0 В — DS1816-20 или MAX803R, а также некоторые другие.



     
 

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