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





Естественно, тактировать МК можно и от внешнего генератора (рис. 2.3, б). Особенно это удобно, когда требуется либо синхронизировать МК с внешними компонентами, либо получить очень точную частоту тактирования, выбрав соответствующий генератор (например, серии SG-8002 фирмы Epson).
Наоборот, когда точность не требуется, можно подключить внешнюю .КС-цепочку (рис. 2.3, в). В этой схеме емкость С1 должна быть не менее 22 пФ, а резистор R1 выбирается из диапазона 3,3-100 кОм. Частота при этом определяется по формуле F-2I2> RC. С1 можно не устанавливать вообще, если записать лог. 0 в конфигурационную ячейку СКРОТ, подключив тем самым внутренний конденсатор 36 пФ.
Наконец, можно вообще отказаться от внешних компонентов и обойтись встроенным ЯС-генератором, который способен работать на четырех приблизительных значениях частот (1, 2, 4 и 8 МГц). В ряде моделей предусмотрена возможность подстройки частоты этого генератора (подробнее см. [2] или техническое описание конкретных моделей). Эту возможность наиболее целесообразно использовать в младших моделях Tiny, выпускающихся в 8-контактном корпусе — тогда выводы, предназначенные для подключения резонатора или внешнего генератора, можно задействовать для других целей, как обычные порты ввода-вывода.

Семейство Classic встроенного ЯС-генератора не имеет, а специальных конфигурационных ячеек у этих МК значительно меньше, и в общем случае на них можно не обращать внимания. Для других семейств это не так. По умолчанию МК семейств Tiny и Mega установлены в состояние для работы со встроенным генератором на частоте 1 МГц (CKSEL = 0001), поэтому для других режимов нужно соответствующим образом установить конфигурационные ячейки CKSEL. При этом следует учитывать, что состояние ячеек CKSEL = 0000 (зеркальное по отношению к наиболее часто употребляемому значению для кварцевого резонатора 1111) переводит МК в режим тактирования от внешнего генератора, и при этом его нельзя даже запрограммировать без подачи внешней частоты. О рекомендуемых установках конфигурационных ячеек и об особенностях их программирования см. также главу 5.

Сброс
Сбросом (RESET) называется установка начального режима работы МК. При этом все РВВ устанавливаются в состояние по умолчанию — как правило, это нули во всех разрядах, за небольшим исключением (а вот РОН могут принимать произвольные значения, поэтому при необходимости начинать с какой-то определенной величины переменные следует устанавливать в начале программы принудительно). Программа после сброса начинает выполняться с начального адреса (по умолчанию это адрес $0000). Сброс всегда происходит при включении питания. Кроме этого, источниками сброса могут быть следующие события: аппаратный сброс, т. е. подача низкого уровня напряжения на вход RESET (правильнее его обозначать с инверсией: /RESET, т. к. активный уровень тут низкий, и мы будем придерживаться этого правила); окончание отсчета установленного интервала сторожевого таймера; срабатывание схемы BOD.
Значение четырех младших битов регистра состояния MCUCSR должно сигнализировать о том, от какого ИСТОЧНИКЕ производился сброс предыдущий раз (установка в 1 бита 0 — сброс прк включении, бита 1 — аппаратный сброс, бита 2 — от схемы BOD, бита 3 — от сторожевого таймера). На практике, по опыту автора, по состояниям этого регистра надежно различаются от всех остальных лишь состояния сброса по таймеру (прочие флаги могут оказаться установленными все одновременно). Тем не менее эта информация может быть полезной, например, при анализе причин перерывов в работе круглосуточно работающих устройств (см. главу 12).

В младших МК семейства Tiny (кроме ATtiny28) нет встроенного "подтягивающего" резистора на выводе /RESET, поэтому для надежной работы следует предусмотреть подключение внешнего резистора величиной 2-5 кОм от этого вывода к напряжению питания. Автор также настоятельно рекомендует устанавливать подобный резистор для любых моделей AVR, т. к. встроенный резистор имеет большой номинал (100-500 кОм) и на нем могут наводиться помехи, способные привести к непредсказуемому сбросу. Также (хотя в технических описаниях такой рекомендации и не содержится) не помешает установка конденсатора 0,1-0,5 мкФ от вывода /RESET на "землю" — это сглаживает неизбежный дребезг напряжения и немного затягивает фронт нарастания напряжения на выводе /RESET по сравнению с увеличением напряжения питания: когда наступит порог срабатывания схемы сброса, напряжение питания всего МК уже установится.

В моделях Tiny, выпускающихся в 8-контактном корпусе (ATtinyl 1-ATtiny 15), если не требуется внешний сброс, вывод /RESET может выполнять функции обычного порта ввода-вывода. С одним только нюансом: при конфигурировании этого контакта на выход он работает, как вывод с открытым коллектором, а не как обычный логический элемент (о конфигурации выводов портов см. главу 3).



     
 

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