Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[4]

Таблица 3

Система формирования тактовой частоты

Синхронизация тактовых сигналов в МК семейства AVR происходит более сложно и многовариантно, чем в MCS-51. С одной стороны это хорошо, поскольку появляется богатый выбор возможностей, с другой - легко ошибиться и привести годный контроллер в "безмолвное" состояние.

Структурная схема системы формирования тактовой частоты в ATmega8 показана на рис.8. Внутри МК по входам XTAL1, XTAL2 (в дальнейшем сокращенно XT1, XT2) условно показаны 5 отдельных генераторных узлов, мультиплексор и ключ К1, срабатывающий с задержкой во времени. Коммутацию режимов работы задают фьюзы: CKSEL (ClocK SELect), CKOPT (ClocK OPTion) и SUT (Start-Up Time). Они выступают здесь как перемычки (англ. fuse - "предохранитель"), которые МК не может самостоятельно изменить.

Информация о фьюзах в DATASHEET размещена довольно хаотично, что вызывает определенные затруднения при поиске. Если из всех возможных комбинаций, ответственных за формирование тактовой частоты, оставить лишь те, которые обеспечивают задержку выхода на режим 65 мс (SUT0, SUT1), то получится компактная табл.4. Для сведения, эта задержка в DATASHEET носит название "time-out" и прибавляется к сигналу сброса, позволяя высокодобротным кварцевым резонаторам быстрее стабилизировать частоту генерации. Ключ задержки К1 на рис.8 показан условно, для лучшего понимания процессов. Опытные пользователи могут фьюзами уменьшить "time-out" до 4 мс, но они должны четко представлять, какую выгоду из этого получат. А вот проблем с нестабильностью запуска и помехоустойчивостью может прибавиться.

ATmega8 допускает следующие режимы тактирования:

от высокочастотного кварцевого резонатора 0,9...16 МГц;

от керамического резонатора 0,4...0,9 МГц со встроенными конденсаторами;

от низкочастотного кварцевого резонатора 32768 Гц;

от внутреннего RC-генератора 1; 2; 4; 8 МГц;

от внешней RC-цепочки 0,4...12 МГц;

от внешнего импульсного генератора 0.16 МГц.

Обилие режимов сродни восточному базару - выбирай, что приглянется.

Общиерекомендации. При невысоких требованиях к стабильности временных интервалов проще всего использовать внутренний, программно перестраиваемый RC-генератор (рис.9). В табл.5 приведены его параметры, из чего вытекает, что лучшая стабильность получается при частоте 1 МГц. Случайно или нет, но именно на эту частоту настраивают ATmega8 при выпуске с завода-изготовителя. Выводы XT1, XT2 превращаются в обычные линии порта ввода-вывода PB6, PB7, по ним можно передавать или принимать логические сигналы. Кроме того, имеется возможность установкой программного флага сделать еще одно превращение - использовать выводы XT1, XT2 для синхронизации внутреннего таймера от резонатора ZQ1 (вторая альтернативная функция TOSC1, TOSC2, рис.10).

Если необходима плавная подстройка частоты, то применяют генератор с частотозадающей цепью в виде внешних RC-элементов (рис.11). Корпус переменного резистора R1 должен быть соединен с общим

Функция

Примечание

"Watchdog" отключен

Фьюз не запрограммирован

"Watchdog" включен

Фьюз запрограммирован

проводом, чтобы уменьшить влияние емкости тела. Ключ S1 управляется фьюзом CKOPT. Если он будет запрограммирован (CKOPT=0), то конденсатор С1 вообще можно удалить из схемы, поскольку его функцию будет выполнять внутренняя интегральная емкость Со=36 пФ. Формула для расчета частоты генерации Fт[МГц]=1000 / (3*R[кОм]*C[пФ]). Например, Fт=0,46 МГц при R1=33 кОм, С1=22 пФ. В реальности, значение будет отличаться от расчетного из-за емкости монтажа и входной емкости микросхемы.

Среднюю и высокую стабильность обеспечивают соответственно керамический (рис.12) и кварцевый резонаторы (рис.13). Первый из них быстрее выходит на режим и не требует внешних конденсаторов, а второй обладает наивысшей стабильностью. Интересно назначение фьюза CKOPT, который выполняет функцию своеобразного регулятора амплитуды. Если он запрограммирован (равен "0"), то сигнал на выводе XT2 будет меняться "rail-to-rail", т.е. от 0 до VCC, обеспечивая ответвление сигнала Fт через инвертор DD1. Если CKOPT=1, то амплитуда сигнала резко уменьшается. Одновременно снижаются и паразитные ВЧ-излучения, что важно для обеспечения требований по электромагнитной совместимости.

При работе от аккумуляторной батареи и невысоких требованиях к быстродействию, выгодно применять часовой кварцевый резонатор 32768 Гц (рис.14). На такой низкой частоте собственный ток потребления ATmega8 составляет всего лишь 80 мкА! Программирование фьюза CKOPT приводит к добавлению двух внутренних конденсаторов Со. Их наличие позволяет подключать резонатор ZQ1 напрямую к выводам XT1, XT2. Допускается использовать резонаторы и на другие низкие частоты 30.300 кГц, но входные цепи оптимизированы именно под частоту 32768 Гц, как наиболее распространенную.

Если в схеме устройства уже имеется отдельный кварцевый генератор, то его логическими сигналами можно тактировать МК (рис.15), сэкономив при этом финансы на резонаторе. Резистор R1 нужен, если DD1 является ТТЛ-микросхемой. Он подтягивает уровень лог."1" к шине питания, поскольку по входу XT1 (в отличие от других линий портов) требуется обеспечить повышенное напряжение 0,8*VCC.

В условиях сильных промышленных помех, когда прибор установлен в непосредственной близости от "искрящих" цепей двигателей, входы XT1, XT2 и подключенные к ним элементы могут служить транзитным путем для наводок. Чтобы устранить сбои, рекомендуется конденсаторы С1, С2 (рис.13) устанавливать вблизи выводов XT1, XT2, а их земляные обкладки подключать прямо к общему выводу 8 МК отдельными короткими проводниками. Кроме того, корпус кварцевого резонатора ZQ1 припаивают коротким проводом к цепи GND, а на печатной плате вокруг него и конденсаторов проводят экранирующий контур.

Устранить сбои иногда помогает замена резонатора отдельным покупным кварцевым генератором в металлическом DIP-корпусе, напри-


мер, из серии JCO-8 фирмы Jauch. Это эффективное, но дорогое решение. Ввиду того, что на выходе генератора присутствуют логические уровни, то фьюзами устанавливают режим работы МК от внешних входных импульсов.

Подключение входов-выходов

С точки зрения электронщика, знание внутренней структуры портов входа-выхода является обязательным условием при освоении любого МК. Порты AVR принципиально отличаются от портов MCS-51. Чтобы не запутаться, даже названия им придуманы разные: P0, P1, P2, P3 у MCS-51 и PA, PB, PC, PD у AVR. Для справки, многовыводные ATmega128 имеют еще порты PE, PF, PG, а у маловыводных ATtiny в наличии только несколько линий порта PB.

Изучать структуру портов легче в сравнении MCS-51 - AVR. На рис.16, 17 приведены упрощенные схемы организации входов и выходов МК AVR для линии PB1. Схемы остальных линий портов будут аналогичны за исключением PC6 (верхний диод VDo отсутствует). Управление входами-выходами в ATmega8 производится через программно доступные регистры: PORTn, DDRn, PINn, где n=B, C, D (табл.6).

Первое отличие - ключ S1, которым можно подключать или отключать нагрузочный резистор Rн по каждому из входов. Выполнен он на основе интегрального МОП-транзистора, поэтому прозвонить его омметром нельзя. В MCS-51 резистор Rн на одних входах имеется, а на других отсутствует.

Второе отличие - входной триггер Шмитта U1 и линия задержки U2. Они предназначены для повышения помехоустойчивости и отсечения коротких импульсных помех.

Таблица 4

Режим генерации

Диапазон частот

ВЧ кварцевый резонатор

0(BOD),

1(65 мс)

0,9-3 МГц

3-8 МГц

1-16 МГц

Керамический

0 (65 мс)

0,4-0.9 МГц

резонатор

1 (BOD)

НЧ кварцевый

0 (36 пФ)

32768 Гц

резонатор

1 (0 пФ)

0.1-0.9 МГц

Внешняя RC-

0 (36 пФ),

0 (BOD),

0.9-3 МГц

цепочка

1 (0 пФ)

1 (65 мс)

3-8 МГц

8-12 МГц

Внутренний RC-

0 (BOD),

генератор

1 (65 мс)

Внешние входные импульсы

0(ЗбпФ),

1(0 пФ)

0(BOD),

1(65 мс)

0-16 МГц

Условные обозначения: BOD - включен детектор пониженного напряжения, 65 мс - включена задержка "time-out", 36 пФ - включена емкостьо по входу ХТ1 (ХТ2). 0 пФ - выключена емкость Со

Таблица 5

Частота RC-генератора, МГц

Диапазон перестройки, МГц

Стабильность по питанию, кГц /1 В

Стабильность по температуре, Гц / 1С

0,55.. .1,8

1,1...3,5

2,2...7,7

4,5...14

Таблица 6 +5 в <s-

PORTB0..

6,

PORTC0..

6,

Примечание

PORTD0.

Z-состояние

Rh=20...50k

Лог."0"

Лог. "Г

Третье отличие - возможность чтения информации прямо с выхода линии порта через сигнал PINB1. В MCS-51 можно было вывести сигнал в линию порта, но узнать, "дошел" ли он по назначению, нельзя. В AVR в линию порта посылается сигнал PORTB1, а истинное значение на выводе PB1 считывается сигналом PINB1 с задержкой в полтора такта частоты процессора (U2). Эта приятная "мелочь" во многих случаях позволяет упрощать схемы.

Четвертое отличие - при нажатии кнопки сброса или начальной подаче питания все линии портов AVR переходят в "оборванное" высо-коимпедансное Z-состояние (у MCS-51 - в лог."1"). Этот момент надо учитывать при построении схем нагрузок. Например, если сигнал с выхода МК поступает на базу транзистора, то между ней и общим проводом надо устанавливать резистор 100 кОм, чтобы в момент сброса база не "висела в воздухе".

Пятое отличие - микросхема, у которой все линии портов настроены как входы с внутренними нагрузочными резисторами (PORTn=1, DDRn=0), потребляет примерно на четверть меньше тока, чем при отключенных резисторах (PORTn=DDRn=0). Парадокса здесь нет, просто

ATmega8

Rh 20...50 к

\ S1(PORTB1) U1

(DDB1=0)

"парящие в воздухе" входы находятся в неустойчивом состоянии (КМОП-технология) и любая наводка приводит к "дребезгу сигналов" с соответствующим увеличением потребления тока. Вывод - все неиспользуемые входы надо программно нагружать на внутренние резисторы или же ставить внешние.

Из электрических характеристик следует отметить значительно возросший у AVR выходной ток в высоком состоянии, что позволяет подключать светодиоды не только к цепи VCC (SA1 в нижнем положении), но и к GND (SA1 в верхнем положении). Микросхемы семейства AVR первого поколения имеют несимметричную нагрузочную способность, при лог."0" на выходе гарантируют ток 10...20 мА в обоих направлениях, при лог."1" - 3...4 мА. Микросхемы AVR второго поколения почти все обеспечивают одинаковую токовую нагрузку 20 мА. Ток короткого замыкания через одну линию значительно выше до 150...200 мА, но долго микросхема в таком режиме не поработает и с большой долей вероятности выйдет из строя. Аналогичное произойдет при подаче напряжения за пределами от -0,5 В до VCC +0,5 В, когда пробьются диоды VDo.


К внешним элементам

R1-R3 JLJLJL

Подключение адаптера программатора

Речь пойдет о четырех сигналах MISO, MOSI, SCK, необходимых для внутрисистемного программирования ISP. В "Ступени 2" был показан самый простой способ непосредственного их включения без внешних элементов. Он годится для лабораторных условий. Другое дело -промышленные объекты, где много источников импульсных помех и наводок. Не исключено, что проводники, идущие от разъема ISP к выводам МК, станут своеобразными антеннами и случайная комбинация лог."1" и "0", наводимая на них, будет интерпретироваться процессором как запись данных в FLASH-ПЗУ. В итоге нормально работающий и исправный МК может в непредсказуемые моменты времени портить свою программу. Судя по Интернет-форумам, такие случаи были на практике. Для восстановления ситуации надо заново перепрограммировать МК.

Чтобы подобные казусы не происходили, выводы MISO, MOSI, SCK

подключают к цепи GND через резисторы 1 10 кОм и максимально

уменьшают длину проводников от ISP-разъема. Иногда обходятся одним резистором 10 кОм между SCK и GND. К выводу RES присоединяют RC-цепочку (рис.7) или вообще соединяют с цепью VCC через перемычку XT1 (рис.18). При ее наличие работает только внутренний сброс МК, а в ее отсутствие можно осуществить программирование. Следует соблюдать осторожность, иначе забытый на плате джампер станет причиной выхода адаптера программатора из строя. Радикальное решение - вообще отказаться от ISP-разъема и припаивать его на проводах только при регулировании.

Судя по рис.1, выводы MISO, MOSI, SCK могут использоваться и как обычные линии портов PB3, PB4, PB5. Фирма Atmel предлагает развязывать их от сигналов ISP с помощью ограничительных резисторов R1-R3 (рис.19). Однако в условиях сильных помех через эти резисторы и подключенные к ним элементы, например удаленные датчики, могут наводиться ложные импульсы. Следовательно, для безопасности надо подключать выводы MISO, MOSI, SCK только к ISP-программатору. В дальнейших схемах выводы программирования, включая RES, будут оставаться свободными.

Программирование фьюзов

Рассказ о фьюзах будет неполным без описания процедуры их программирования. Для работы потребуется программа PonyProg, тестовое устройство, собранное на макетной плате (см. "Ступень 2"), а также подключенный к разъему ISP адаптер программатора. Считается, что МК в тестовом устройстве уже содержит программу, заставляющую светодиод на макетной плате светиться с переменной яркостью.

Перед программированием фьюзов надо убедиться, что в PonyProg выбрана микросхема именно ATmega8 ("Device - AVRmicro - ATmega8"), иначе конфигурация фьюзов будет неверная. Далее в начальном меню выполнить действия: "Command - Security and Configuration Bits", после чего откроется конфигурационное окно с тремя строками.

Верхняя строка содержит 6 битов защиты информации от копирования и просмотра: BootLock01, 02, 11, 12; Lock1, 2. Для домашних экспериментов все они должны быть очищены (отсутствуют "галочки"), а для промышленных устройств - все установлены (присутствуют "галочки").

Средняя строка содержит 7 старших фьюз-битов, из них RSTDISBL, EESAVE, BOOTSZ0, 1, BOOTRST не должны иметь "галочки" (их програм-

мируют только в специально оговоренных случаях), значение фьюзов WDTON и CKOPT определяются по табл.3, 4.

Нижняя строка содержит 8 младших фьюз-битов. Все они выбираются по табл.2, 4.

Важная деталь, которая иногда смущает начинающих. Понятие запрограммированный фьюз (значение "0") соответствует установке в окошке PonyProg "галочки" и, наоборот, без "галочки" у незапрограм-мированного фьюза (значение "1"). Это связано с особенностями процедуры очистки FLASH-памяти, когда процесс полного стирания сопровождается записью во все ячейки лог."1".

Забывчивость или невнимательность при заполнении фьюзов опасны. Четверть беды, если при неверно установленных фьюзах процессор вдруг станет работать на порядок медленнее (хотелось установить внутренний генератор на 8 МГц, а получилось на 1 МГц). Полбеды, если окажется, что на вход устройства надо подавать внешние импульсы, а в схеме стоит кварцевый резонатор. Хуже всего, если окажется запрограммированным фьюз RSTDISBL, переводящий вход RES в дополнительную линию порта PC6. После этого повторное программирование через ISP-адаптер будет невозможным. Придется вызывать "скорую помощь" в виде параллельного программатора (см. "Ступень 1"), которым можно восстановить значение этого фьюза.

"Опасные" фьюзы, наподобие RSTDISBL, присутствуют не во всех типах AVR. Например, в ATmega8515 их нет. В каждом конкретном случае надо смотреть DATASHEET, обращая внимание на раздел Fuse Bits.

На рис.20 показан внешний вид панели PonyProg с установленными режимами для ATmega8:

отсутствие защиты от просмотра и копирования;

тактирование от внутреннего генератора частотой 8 МГц;

включен детектор Brown-Out с напряжением порога 4 В;

выключен таймер Watchdog.

Сокращенная формула программирования фьюзов: CKSEL0=CKSEL1=CKSEL3=SUT0=SUT1=BODLEVEL=BODEN=0, остальные фьюзы и биты защиты равны "1" (не запрограммированы, отсутствуют "галочки").

При смене условий тактирования следует помнить, что повторное программирование возможно только в той схеме, для которой установлены фьюзы. В частности, нельзя запрограммировать МК, настроенный на режим внешних импульсов, если подключить к его входам кварцевый резонатор и т.д. В качестве "палочки-выручалочки" надо всегда держать под рукой дежурный генератор (рис.21). Его выходной сигнал подается на вход ХТ1 контроллера, что помогает запрограммировать ATmega8 (и не только) в самых причудливых случаях.

Практическое задание. Ознакомиться с DATASHEET на Atmega8 и по возможности распечатать полную версию документа. Провести эксперименты с различными вариантами установки фьюзов на тестовом устройстве.

Литература

1.AVR042: AVR Hardware Design Considerations -http: www.atmel.com/dyn/resources/prod documents/doc2521.pdf.

2.AVR180: Внешняя защита от провалов напряжения - http: sin-bad.narod.ru/avr/BrownOut.htm (рус.).



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11]