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


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




[3]

запуске нажать три раза ОК и произвести калибровку компьютера: "Setup - Calibration - Yes - OK". При повторных запусках нажать один раз ОК и калибровку не проводить. Выбрать тип микросхемы: "Device - AVRmicro - AT90S2313". Указать последовательность действий: "Command - Program Options - <установить флажки только возле пунктов Reload Files, Erase, Write Program memory (FLASH)> - OK".

3.Подключить адаптер программатора с одной стороны к LPT- или COM-порту компьютера, а с другой стороны - к разъему ХР1 макетной платы (рис.4). Подать на МК DD1 питание 5 В.

4.В начальном меню PonyProg выбрать опции: "Setup -Interface Setup", затем для LPT-адаптера поставить точки возле пунктов Parallel, LPT1 или LPT2, выбрать строку Avr ISP API (рис.6). Для COM-адаптера поставить точки возле пунктов Serial, COM1 или COM2, выбрать строку SI ProgAPI (рис.7). Для COM-адаптера с буферной микросхемой 74HC125 ("Ступень 1", рис.5) дополнительно поставить точку возле Invert Reset. Проверить исправность аппаратной части адаптера нажатием кнопки "Probe", в ответ должно появиться сообщение "Test OK" (исправно) или "Test Filed" (найти и устранить неисправность в адаптере). Для возврата в начальное меню нажать два раза ОК.

5.Загрузить в PonyProg скомпилированный в пункте 1 hex-файл: "File - Open Program (FLASH) File - <выбрать строку с типом файла *.hex> - <выбрать путь к файлу C:\WinAVR\examples\demo\demo.hex> - Открыть". Далее нажать одновременно клавиши <Ctrl> и <P>. Через 10 с на экране монитора должно появиться сообщение: "Programming Sucsessfull" (успешное программирование).

Если макетная плата собрана без ошибок и МК исправен, то после программирования автоматически должны начаться циклы плавной засветки и гашения светодиода HL1 с периодом около 1 с. При этом адаптер программатора отсоединять от разъема XP1 не надо.

Модельные эксперименты

Теперь представьте, что необходимо изменить текст Си-программы и увеличить в 8 раз период мигания светодиода HL1. Естественно, на компьютере должны быть постоянно запущены программы PonyProg и PN, а пользователь должен уметь "мышью" оперативно переключаться между ними.

В верхнем окне PN в программе "demo.c" найти строку но-

мер 90: "TCCR1B = BV (CS10);" и откорректировать ее следующим образом: "TCCR1B = BV (CS11);". Откомпилировать полученную Си-программу: "Tools - make all", дождаться в нижнем окне надписи "Process Exit Code: 0". Переключиться на программу PonyProg, нажать одновременно клавиши <Ctrl> и <P> и через 10 с увидеть по светодиоду HL1 на макетной плате результаты своей работы.

Не правда ли, как просто и быстро! Подобные изменения в AVR-программах в зависимости от типа МК можно производить от 1000 до 10000 раз.

Теперь более сложная задача: поменять тип МК с AT90S2313 на ATmega8. В начале следует идентифицировать вывод под названием OC1A согласно DATASHEET http: www.atmel.com/dyn/resources/prod documents/doc248 6.pdf, 2,4 Мб. Составляется схема включения МК (рис.8). Микросхема DD1 устанавливается в 28-выводную панель, остальные элементы используются из схемы рис.4. Резистор R1 ограничивает ток через светодиод HL1, поскольку выходной порт у ATmega8 в несколько раз мощнее, чем у AT90S2313.

Далее необходимо откорректировать make-файл, для чего в PN выполнить действия: "File - Open - <выбрать путь C:\WinAVR\examples\demo\makefile> - Открыть". В его третьей сверху строке заменить текст "MCU TARGET = at90s2313" на "MCU TARGET = atmega8" (рис.9). Откомпилировать полученную программу: "Tools - make all", дождаться надписи "Process Exit Code: 0".

Переключиться на PonyProg, сменить тип МК: "Device -AVRmicro - ATmega8". Задать конфигурацию фьюз-битов (чего не требовалось для AT90S2313): "Command - Security and Configuration Bits - Clear all - Write" (рис.10). Выйти в начальное меню PonyProg и, при поданном на устройство питании 5 В, одновременно нажать клавиши <Ctrl> и <P>. Через 30 с на макетной плате наблюдать плавное засвечивание и гашение светодиода HL1. Задача выполнена.

При первых экспериментах некоторые действия в процессе программирования придется принять на веру, не задавая вопросов. Например, как создать make-файл, какие фьюз-биты в PonyProg надо ставить для разных типов МК, по какому принципу менять содержимое операторов в Си-программе. Ответы на эти и другие вопросы будут рассмотрены в следующих статьях цикла.

Практическое задание. Опробовать методику ввода и компиляции программы "demo.c", а также методику программирования разных типов МК через PonyProg и адаптер.

Литература

1. Рюмик С.М. С Интернета по нитке... Радиомир. Ваш компьютер. - 2002. - №8. - С.9-12.


Микроконтроллеры AVR. Ступень 3

С.М. Рюмик, г. Чернигов

Первые опыты по программированию микроконтроллеров (МК) семейства AVR обычно проходят без особых затруднений. Теперь наступает черед самостоятельных действий по синтезу схем при условии осознанного выбора режимов и элементов.

МК семейства AVR относят к высокопроизводительным 8-разрядным устройствам с RISC-архитектурой. Быстродействие МК принято оценивать в миллионах операций в секунду, сокращенно MIPS (Millions of Instructions Per Second). В качестве эталона операции принимается самая короткая пересылка 8 битов данных из одного регистра в другой.

Все МК с ядром AVR, благодаря конвейерной RISC-архитектуре, способны выполнять одну пересылку за один такт работы процессора. Получается, что быстродействие напрямую зависит от тактовой частоты, которая, как правило, определяется кварцевым резонатором. Например, самой "высокочастотной" среди AVR общего применения является ATtiny13, допускающая работу при 24 МГц. Следовательно, ее максимальное быстродействие 24 MIPS. По сравнению с микросхемой AT89C2051 семейства MCS-51, это в 12 раз больше. Для ориентира, рекорд среди специализированных AVR принадлежит USB-контролле-ру AT76C713 - 48 MIPS.

Базовый элемент для экспериментов

Методика быстрого изучения MK основывается на предположении, что достаточно освоить базовую микросхему, чтобы затем по шаблону составлять программы к другим ее разновидностям. Для AVR коварную шутку сыграла многовариантность моделей. Что ни МК, то новые нюансы. Названия регистров, флагов, фьюзов, хотя и похожи, но чуть-чуть отличаются. А для выяснения этого "чуть-чуть" приходится изучать документы в сотню и более страниц. К счастью, общего у разных типов AVR ("classic", "tiny", "mega") больше, чем различий.

Два-три года назад обучение AVR рекомендовали начинать с AT90S2313. Действительно, этот недорогой 20-выводный МК хорошо вписывается в несложные радиолюбительские конструкции. Более того, у него даже цоколевка и назначение выводов совпадает с AT89C2051 (за исключением инверсии сигнала RESET). Однако серия "classic" уже снята с производства по веским техническим причинам. И хотя в продаже эти микросхемы будут находиться еще длительное время, надо смотреть в будущее, в перспективу.

В табл.1 приведены варианты замены для двух поколений AVR. Водораздел между ними проходит в технологических нормах, соответственно 0,5 и 0,35 мкм. Другой показатель - время разработки: до 20012002 гг. и после. Кроме того, в новых МК исправлены конструктивные ошибки, добавлены функциональные возможности, увеличена тактовая частота до 16...24 МГц и число перезаписей FLASH-ПЗУ с 1000 до 10000. Как следствие, повысилась долговременная устойчивость работы в условиях сильных помех.

Замена МК идет не один к одному. На сайте фирмы Atmel http: www.atmel.com в разделе технической документации имеются файлы с однотипным названием "Replacing by..." и "Migrating between...", в которых указаны пути преодоления различий.

Из МК второго поколения наиболее полным набором функций обладает микросхема ATmega128, на которой можно показать все доступные аппаратные и программные приемы. Однако ее 64-выводный TQFP-корпус и высокая цена не годятся для любительских экспериментов. Все остальные МК серий "mega", "tiny" можно рассматривать в первом приближении как усеченные версии ATmega128 (меньше памяти, функций, выводов). Кстати, последнее обстоятельство часто является определяющим при выборе МК.

Различают микросхемы в DIP-кор-пусе с малым (8), средним (20-28) и большим (40) числом выводов. Среди имеющихся в продаже "осьминогов" заслуживают внимание 8-выводные ATtiny13, ATtiny15L, но они хороши для компактных интеллектуальных датчиков, а не для учебы. Характерно, что слово "tiny" (произносится "тайни") переводится с английского как "крошечный".

Среди 40-выводных "сороконожек" наиболее дешевые и ходовые - это

Dictum factum Сказано - сделано (лат.)

ATmega8515, 8535, 162. Их удобно применять в технически сложных приборах. Однако на макетной плате с двумя светодиодами они смотрятся громоздко.

Остаются МК среднего диапазона. В частности, перспективно применение ATtiny2313, который идет на замену AT90S2313, но его еще нет в продаже. Как компромисс, предлагается выбрать в качестве базовой микросхему ATmega8. Она компактна по габаритам (28 выводов), доступна по цене ($3-3,5), имеет все функции ATmega128 за исключением интерфейса JTAG.

Типовая схема включения AVR

Для нормального функционирования любого МК требуется выполнить ряд условий: подать питание, обеспечить генерацию тактовых импульсов, организовать начальный сброс, подключить периферию к входам-выходам. Исходная информация по всем перечисленным вопросам содержится в главном техническом документе, так называемом DATASHEET ("data" - данные, "sheet" - листок). Различают краткую (summary) и полную (complete) версии "дейташита", отличающиеся объемом информации. Например, для ATmega8 summary-файл http: www.atmel.com/dyn/resources/prod documents/2486S.pdf имеет длину 199 Кб и содержит 21 страницу текста, а complete-файл http: www.atmel.com/dyn/resources/prod documents/doc2486.pdf -длину 2,4 Мб и 305 страниц текста.

Если подходить к изучению AVR основательно, то рано или поздно придется распечатать на бумаге все страницы полного DATASHEET. Труд не пропадет даром, ведь построение документов на фирме Atmel унифицировано для всех AVR. Многие разделы написаны "один к одному", что пригодится при смене типа МК.

Назначение выводов ATmega8 (рис.1): VCC, AVCC - питание, GND

-общий, PB0-PB7 - линии порта B, PC0-PC6 - линии порта C, PD0-PD7

-линии порта D, AREF - выход внутреннего источника напряжения 1,3 В. В скобках возле обозначения контактов указаны альтернативные функции, переключаемые программно. По количеству их может быть не одна, как в AT89C2051, а целых две, на что указывает наклонная разделительная черта. Название и назначение функций будет расшифровано по мере их изучения.

Особенности подачи питания

В каталогах встречаются два типа микросхем: ATmega8-16 и ATmega8L-8. Первая из них допускает питание 4,5...5,5 В при тактовой частоте 0.16 МГц, вторая - соответственно 2,7.5,5 В при 0.8 МГц. Это не означает, что ATmega8 выйдет из строя при подаче питания 3 В. Более того, в таком режиме она успешно работает с различными кварцевыми резонаторами. Однако нельзя гарантировать устойчивый запуск МК при крайних значениях температур, да и ток потребления будет выше, чем у ATmega8L. Сказываются технологические различия в изготовлении.

Вывод - если требуется максимальное быстродействие, то надо ставить ATmega8 и повышать тактовую частоту до 8...16 МГц при питании 5 В. Если главнее всего экономичность устройства, то лучше применить ATmega8L и понизить частоту, питание. В дальнейшем большинство приводимых схем будут рассчитаны на универсальный диапазон тактовых частот 4...8 МГц и питание 3...5 В.

Предусмотрительный пользователь приобретет для экспериментов обе разновидности микросхемы (по стоимости они примерно одинако-

Таблица 1


вы) - для взаимной перепроверки и на крайние начальные условия. Если ориентироваться на DIP-корпус, то буквы в конце названия МК должны быть PI (температурный диапазон -40...+85°C), PU (то же, но в корпусе, не содержащем свинец), PC (0...+70°C).

ATmega8 имеет двойное питание: "цифровое" VCC, GND (вывод 8) и "аналоговое" AVCC, GND (вывод 22). В стандартном включении (рис.2), когда на входы и выходы подаются уровни лог."1" и "0", обе пары соединяют параллельно. Точнее, физически закорачивают только цепи VCC, AVCC, поскольку GND-выводы 8 и 22 уже замкнуты внутри микросхемы через сопротивление 0,7 Ом.

Конденсаторы С1, С2 обязательно керамические, например, К10-17. Располагаться они должны максимально близко от "своих" по схеме выводов. Такая конфигурация рекомендуется в [1] для микросхем с двойным питанием. Если в МК нет вывода AVCC, в частности, ATmega8515, то вместо двух ставят один конденсатор. Более того, на практике так поступают и с ATmega8.

Если в МК используется встроенный 6-канальный АЦП, то для уменьшения помех применяют последовательный LC-фильтр по выводу AVCC. Если АЦП не нужен, то все равно вывод AVCC соединяют с VCC коротким проводом.

Для снижения уровня излучаемых помех рекомендуется применять общий LC-фильтр по питанию (рис.3). С такой необходимостью могут столкнуться разработчики промышленной аппаратуры при выполнении норм электромагнитной совместимости.

Как показывает практика, МК семейства AVR "не любят" высокого питающего напряжения (выше 6 В). Кроме того, регламентируется максимальный ток через выводы GND, VCC, который не должен превышать 200 мА. В качестве защиты удобно применять маломощный стабилизатор 78L05 и параллельно включенный сапрессор напряжением 5,6 В.

Система начального сброса

Для установки внутренних регистров МК в исходное состояние необходимо произвести начальный сброс. ATmega8 располагает следующими возможностями (рис.4):

внутренний автоматический сброс по достижению напряжения питания 1,4...2,3 В;

сброс от внутреннего детектора просадок питающего напряжения Brown-Out;

внешний сброс уровнем лог."0" на выводе 1 /RESET; сброс от внутреннего таймера Watchdog при остановке работы процессора.

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

Для AVR первого поколения фирма Atmel рекомендует на вывод RESET устанавливать стандартную цепочку "резистор-конденсатор-диод" (4,7 кОм - 0,01 мкФ - 1N4148) или отдельный супервизор питания [1, 2]. Альтернативный вариант - резервная аккумуляторная батарея напряжением 4,8 В, постоянно подзаряжаемая через элементы R1, VD2 (рис.5).

МК AVR второго поколения имеют улучшенную защиту от кратковременных (brown-out) и полных (black-out) просадок питания. Теперь в каждую микросхему встроен переработанный узел детектора пониженного напряжения BOD (Brown-Out Detector). Детектор анализирует напряжение питания VCC и вырабатывает сигнал сброса при достижении одного из двух порогов: 2,7 или 4 В. Имеется гистерезис 0,1 В, что позволяет четко обслуживать приборы с "подсевшими" батареями питания.

Режим включения-выключения детектора, а также значения порогов задаются при программировании двух фьюзов: BODEN (BOD ENable) и BODLEVEL (табл.2). Первое знакомство с фьюзами состоялось в "Ступени 2". Для дальнейшей работы надо знать, что фьюзы, или биты конфигурации, - это некоторые ячейки в FLASH-ПЗУ МК, которые можно многократно прошивать в "1" или "0" с помощью программатора. В процессе штатной работы их значения изменить нельзя.

Почему фьюзы так хорошо защищены от вмешательства извне? Это необходимо для устранения конфликтных ситуаций и устойчивого запуска МК. Например, чтобы при сбое в программе случайно не установился порог срабатывания детектора (4 В) выше чем напряжение питания (3 В).

В ответственных случаях вводят кроме внутреннего детектора еще и внешний супервизор питания (рис.6). Логика рассуждений простая: копеечный супервизор "кашу маслом не испортит", зато спасет в непредвиденной ситуации. Резисторы R1, R2 показаны пунктиром. Первый из них нужен, если микросхема DA1 не имеет выхода с открытым коллектором. Второй - шунтирует высокоомный интегральный резистор повышая помехоустойчивость. Диод VDo внутренний. Он защищает вход RES от случайной подачи отрицательного напряжения.

Таблица 2

Функция

BODLEVEL

Микросхема

Детектор BOD отключен

0 или 1

ATmega8, 8L

Порог срабатывания 2,7 В

ATmega8L

Порог срабатывания 4 В

АТтеда8, 8L

Надобность в супервизоре может возникнуть при нестандартном номинале питания, например, 4,2 В, что очень близко к порогу срабатывания 4 В. Внутренний детектор при этом блокируют установкой в "1"

фьюза BODEN.

С фьюзами связано и еще одна техническая новинка, отсутствующая в AT89C2051, - встроенный "watchdog". Если фьюз WDTON (Watch Dog Timer ON) запрограммирован (т.е. WDTON=0, табл.3), то запускается специальный таймер, который анализирует состояние процессора. В случае его "зависания", таймер через регулируемое время 17 мс...2,2 с выдает сигнал начального сброса.

Почему бы "watchdog" не сделать постоянным элементом МК, тогда и фьюз включать не надо? Дело в том, что внутренний генератор G1 (рис.4), от которого работает "watchdog", потребляет энергию. При отключенном фьюзе (WDTON=1) генератор обесточивается, что важно, например, для батарейного питания. Сравните, 50 мкА в спящем режиме при наличии и 3 мкА при отсутствии Watchdog.

Осталось рассмотреть внешний сброс, который активизируется, если на входе RESET в течение более 1,5 мкс удерживается лог."0". Кнопку сброса SB1 обычно подключают вместе со стандартной RC-цепоч-кой (рис.7). Поскольку на вывод 1 МК приходят также сигналы от разъема ISP, то контакты кнопки SB1 при программировании должны всегда находиться в разомкнутом состоянии.

Интересное наблюдение. Во время сброса ток потребления ATmega8 не только не уменьшается, но и почти в два раза увеличивается (с 5...15 мА до 20...25 мА). Этот момент надо учитывать при ограниченных энергоресурсах.

Во многих схемах, приводимых в Интернете, элементы SB1, C1 отсутствуют. Тем не менее, и в этом случае можно осуществить кнопочный сброс, но не снаружи, а изнутри МК программным путем. Кнопка сброса подключается к одной из линий портов и при ее нажатии устанавливается определенный флаг, приводящий к выполнению программы заново.



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