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





Напомним, что EEPROM отличается от Flash возможностью выборочного программирования побайтно (в принципе даже побитно, но этот способ недоступен пользователю). Однако в старших моделях семейства EEPROM, как и flash-память программ, имеет страничную организацию, правда, страницы эти невелики— до 4 байт каждая. На практике, как при программировании EEPROM по последовательному каналу (т. е. через SPI-интерфейс программирования), так и при записи и чтении EEPROM из программы, эта особенность не имеет значения, и доступ осуществляется побайтно. Чтение из EEPROM осуществляется в течение одного машинного цикла (правда, на практике оно растягивается на четыре цикла, но программисту следить за этим специально не требуется). А вот запись в EEPROM протекает значительно медленнее, и к тому же с точно не определенной скоростью: цикл записи одного байта может занимать от 2 до ~ 4 мс и более. Процесс записи регулируется встроенным Ж?-генератором, частота которого нестабильна (при более низком напряжении питания можно ожидать, что время записи будет больше). За такое время при обычных тактовых частотах МК успевает выполнить несколько тысяч команд, потому программирование процедуры записи требует аккуратности: например, нужно следить, чтобы в момент записи не "вклинилось" прерывание (подробнее об этом см. главы 4 и 9).

Главная же сложность при работе с EEPROM — возможность повреждения ее содержимого при недостаточно быстром снижении напряжения питания в момент выключения. Обусловлено это тем, что при уменьшении напряжения питания до некоторого порога (ниже порога стабильной работы, но недостаточного для полного выключения) из-за колебаний напряжения МК начинает выполнять произвольные команды, в том числе может осуществить процедуру записи в EEPROM. Если учесть, что типовая команда МК AVR выполняется за десятые доли микросекунды, то ясно, что никакой реальный источник питания не может обеспечить снижение напряжения до нуля за нужное время. По опыту автора при питании от обычного стабилизатора типа LM7805 с рекомендованными значениями емкости конденсаторов на входе и на выходе содержимое EEPROM будет неизбежно испорчено примерно в половине случаев.

Этой проблемы не должно существовать, если константы записывают в EEPROM при программировании МК, а процедура записи в программе отсутствует (о том, как сформировать файл с данными для EEPROM, см.раздел "Директивы и функции" главы 5).
Большая сохранность данных в таких случаях подтверждается и эмпирическими наблюдениями, и тем, что разрешение записи в EEPROM— процедура двухступенчатая (см. главу 9). Во всех же остальных случаях (а их, очевидно, абсолютное большинство — в EEPROM чаще всего хранят пользовательские установки и текущую конфигурацию при выключении питания) приходится принимать специальные меры. Наиболее кардинальной и универсальной из них является установка внешнего монитора питания, удерживающего МК в состоянии сброса при уменьшении напряжения питания ниже пороговой величины. Той же цели служит встроенный детектор падения напряжения (Brown-out Detection, BOD), имеющийся практически во всех моделях Tiny и Mega, но техническая документация не исключает при этом для надежности дублирования его и внешним монитором питания. Подробнее о схеме BOD и режимах сброса МК см. далее в этой главе, а о программировании EEPROM и мерах предосторожности при ее использовании см. главу 9.

Способы тактирования

Канонический способ тактирования МК — подключение кварцевого резонатора к соответствующим выводам (рис. 23, а). Емкость конденсаторов С1 и С2 в типовом случае должна составлять 15-22 пФ (может быть увеличена до 33-47 пФ с одновременным повышением потребления). В большинстве моделей Tiny и Mega имеется специальный конфигурационный бит СКРОТ, который позволяет регулировать потребление. При установке этого бита в 1 (не-запрограммированное состояние) размах колебаний генератора уменьшается, однако при этом сужается возможный диапазон частот и общая помехоустойчивость, поэтому задействовать этот режим не рекомендуется. Может быть также выбран низкочастотный кварцевый резонатор (например, "часовой" 32 768 Гц), при этом конденсаторы С1 и С2 могут отсутствовать, т.д. при установке СКРОТ В значение 0 подключаются имеющиеся в составе МК внутренние конденсаторы емкостью 36 пФ. Кварцевый резонатор можно заменить керамическим. Автору этих строк удавалось запускать МК на нестандартных частотах, используя вместо кварца в том же подключении миниатюрную индуктивность (при ее значении 4,7 мкГн и емкостях конденсаторов 91 пФ частота получается около 10 МГц), что заодно позволяет немного уменьшить габариты схемы.



     
 

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