|
Микроконтроллеры 1
Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком "Карта сайта"
Раньше МК называли однокристальными микроЭВМ, отдавая должное отечественным микросхемам К1816ВЕхх, КР1830ВЕхх. Однако это название не закрепилось, поскольку сейчас преобладающие позиции на рынке занимают МК (англ. microcontroller) зарубежного производства семейств AVR, MCS-51,PIC, Scenix, Z8.МКП (рис.3) содержит все составляющие МК, но вдобавок имеет видеопроцессор и звуковой процессор. За примером далеко ходить не надо: в игровых приставках Dendy, SEGA Mega Drive-ll применяются СБИС, которые на одном кристалле содержат полный "джентльменский" набор компьютерных принадлежностей. Для любительских разработок не годятся ни МП (дело прошлое), ни МКП (промышленная технология). Остаются МК, но вот уже более 10 лет процент схем с их применением в журнальных публикациях остается крайне низким. Почему? К человеку, разбирающемуся в "радио", всегда было особое, почтительное отношение. Считается, что первые радиолюбители появились в 1898 г., когда в российском издании "Журнал новейших открытий и изобретений" была опубликована статья "Домашнее устройство опытов телеграфирования без проводов". В ней приводилась схема и конструкция самодельного аналога знаменитого аппарата А.С. Попова (1895 г.) с дальностью передачи сообщений до 25 м.
Так появилась первая "ниша* в радиолюбительстве - повторение в домашних условиях научных опытов.
В дальнейшем выделились следующие направления творчества:
- изготовление бытовых приборов, еще не освоенных промышленностью (усилители, компьютеры);
- аппаратура радиоспортсменов (коллективные и индивидуальные радиостанции);
- создание сложных приборов с уникальными параметрами (единичное производство с подбором деталей);
- разработка нестандартных схем включения радиоэлементов;
- измерительная, автомобильная и медицинская электроника;
- малая автоматизация (small automation) и роботизации быта (концепция "умного жилища").
Купить
Программаторы, средства разработки и отладки для DSP,
средства разработки и отладки для ПЛИС-ПАИС
Мифы и реальность
Народная мудрость гласит: "Любая задача по плечу, если цель важна и времени достаточно*. Чтобы убедить читателей в полезности дальнейших занятий и оправданности траты времени, необходимо развеять некоторые устоявшиеся мифы.
Миф 1; МК - это дорого.
Для профессиональных применений, скорее "да", чем "нет", для бытовых наоборот. Судите сами, цена дешевых многократно программируемых МК с FLASH-памятью составляет от 0,8 USD оптом до 1,5 USD в розницу.
Если учесть, что один и тот же МК можно использовать в нескольких конструкциях, то получится "вечная" микросхема, вплоть до момента ее морального старения.В наши дни сложилась уникальная ситуация, когда нет большой разницы в доступности простой элементной базы "у них" и "у нас". А в части программирования - вот бы и приложить знаменитую славянскую смекалку и изобретательность, оправдывая тезис о высоком интеллектуальном потенциале нации.
Миф 2:для МК нужен сложный программатор.
Действительно, универсальные сертифицированные программаторы, по которым фирмы-изготовители МК принимают от потребителей претензии к качеству продукции, - это сложные приборы стоимостью не одну сотню долларов. Приобретают их обычно крупные промышленные предприятия, аттестованные по системе ISO-9001, у которых налажен массовый выпуск продукции на базе МК. Для любительских условий подойдут простейшие самодельные программаторы, и вовсе не обязательно универсальные.
Стоимость деталей самых дешевых из них 1-1,5 USD.
Миф 3: сложно разобраться в архитектуре разных МК.
Разумеется, научиться чему-либо без желания и труда - нереально. С другой стороны, когда в учебнике с многообещающим названием "МК для начинающих", встречается фраза: "Основой булева процессора служит аккумуляторный принцип архитектуры с переключаемыми банками рабочих регистров RB0-RB3", то даже самого усердного ученика начинает клонить в сон.Предлагаемая далее методика обучения построена на представлении МК в виде "черного ящика" с известными входными и выходными сигналами. При этом пользователю не обязательно знать строение адресного пространства ОЗУ, не надо изучать "косвенно регистровые* способы адресации памяти или заботиться о своевременном переключении банков. Фантастика? Попробуйте и удостоверьтесь сами.
Миф 4: сложно освоить программирование МК.
Если начинать с Ассемблера, то "да*, а если с Си -"нет". Программу на Ассемблере сложнее составлять, дольше отлаживать, труднее анализировать. Вдобавок к тому нужно глубоко вникать в архитектуру конкретного МК. Но, даже досконально изучив все 111 ассемблерных команд семейства MCS-51, все равно придется начинать почти "с нуля* при переходе на платформу PIC-контроллеров.Язык Си как средство программирования высокого уровня позволяет абстрагироваться от "мелочей". В частности, можно не держать в уме названия регистров общего назначения, не помнить их количество, не контролировать глубину стека при входе и выходе из подпрограммы. Все это производится автоматически (и безошибочно!) при компиляции программы. Более того, синтаксис языка Си практически одинаков и для MCS-51, и для AVR, и для PIC, что позволит в дальнейшем без труда освоить новые типы МК Си-программы пишутся быстрее и легче ассемблерных. Применяются стандартные, легко запоминающиеся приемы. Плата за удовольствие - меньшее быстродействие и больший размер кода Си по сравнению с Ассемблером (примерно на 30%). Как показывает практика, объем ПЗУ современных МК и их частотные свойства с лихвой перекрывают издержки компиляторов Си, особенно для простых любительских приложений.
Миф 5: на языке Си пишут программы только профессионалы.
Здесь забывают основную концепцию Си-программирования - это многовариантность решения одной и той же задачи. Профессионал составит лаконичную, хорошо структурированную и читаемую программу, а любитель напишет неоптимальный и только одному ему понятный "исходник*. Но, в случае с МК, выполнять несложные задачи обе программы будут с одинаковым успехом. В приводимых далее примерах используется упрощенный, "школьный" вариант Си, освоить который под силу даже подростку, особенно если он занимается в радиокружке. Идеальный случай - обучение в паре, например семейной, когда отец мастерит конструкцию, а кроха-сын или умница-дочь составляет программу, затем наоборот. Какой МК выбрать. Жаркие споры о том, какое семейство МК лучше, давно перешли в разряд философских. Сторонники крайних точек зрения сходятся на том, что каждый МК предназначен для выполнения своего круга задач, причем часто эти "круги" взаимно пересекаются. Таким образом появляются на свет конструкции-двойники, отличающиеся между собой применением контроллеров из разных семейств. Исторически сложилось так, что на территорию стран СНГ "львиную долю" всех восьмиразрядных МК поставляют американские фирмы Atmel и Microchip Technologies через свои предприятия в Юго-Восточной Азии. Соответственно, у радиолюбителя, ориентированного на дешевые МК, выбор невелик - это Atmel MCS-51, Atmel AVR или Microchip PIC.Если одну и ту же проблему можно решить несколькими способами, то выбирают МК по субъективному принципу согласно собственной шкале приоритетов. Для начальных опытов и экспериментов она может выглядеть так: во-первых, низкая стоимость, во-вторых, многократность программирования, в-третьих, легкость в освоении. PIC-контроллеры на эту роль не годятся, поскольку те из них, что имеют FLASH-память, по цене дорогие (3-3,5 USD), а все дешевые - однократно программируемые.
Купить
Программаторы, средства разработки и отладки для DSP,
средства разработки и отладки для ПЛИС-ПАИС
Семейство AVR, тоже не подходит из-за сложностей изучения функциональных особенностей при отсутствии базовых знаний. А вот получить их можно, освоив классические МК семейства MCS-51. \ Тезису о том, что архитектура MCS-51 "давно устарела", скоро исполнится 10 лет. Так и просится сказать: "Не дождетесь!* Данные в подтверждение -на фирме Atmel сейчас производится более 50 разновидностей МК семейства MCS-51. В 2003 г. выпущен технологически улучшенный вариант АТ89С2051х2. Будет ли солидная фирма с многомиллиардным оборотом вкладывать деньги в безнадежное дело?Родоначальником семейства считается кристалл 8051 фирмы Intel, разработанный в 1981 г. В дальнейшем фирма Intel ушла со сцены восьмиразрядных МК, но не запретила клонирование архитектуры. Так появились МК фирм Atmel, Analog Devices, Cygnal Integrated, Dallas, Infineon (ранее Siemens), ISSI, OKI, Philips, LG, Win-bond и др. Все они совместимы с базовой, системой команд MCS-51, имеют похожее строение. Различия заключаются в скорости выполнения операций, объеме памяти, наличии дополнительных интерфейсов и встроенных средств отладки.
Все МК семейства Atmel MCS-51 можно условно разделить на серии. В табл.1 приведены основные параметры микросхем, относящихся к низшей ценовой категории. В каждой строке сгруппирована информация об одной серии (сверху вниз): облегченная, базовая, улучшенная. "Облегченная", или small footprint, - с точки зрения вдвое меньшего количества выводов, "улучшенная", или improved, - из-за наличия внутрисхемного программирования. Начинать изучение легче от простого к сложному. Поэтому в качестве "первенца" выбран малогабаритный 20-выводный МК АТ89С20§1-24РС (24PI), часто применяемый в любительских разработках (рис.4).
Число "24" в названии означает максимальную тактовую частоту в мегагерцах. Бывают еще "10", "12", "16", "20", но "24", как ни парадоксально, легче достать. Буква "Р" указывает на пластмассовый DIP-корпус. Буквы "С" и "Г определяют рабочий температурный диапазон, соответственно 0...+70°С и -40...+85°С (чем шире диапазон, тем больший технологический запас имеет микросхема при комнатной температуре). Малоизвестный факт. Микросхема АТ89С2051 была запущена в массовое производство в середине 1990-х годов. Вначале ее планировали назвать АТ89С1052, где последняя "двойка" в названии обозначала объем FLASH-ПЗУ 2 Кб. В качестве замены "один к одному" подойдут микросхемы АТ89С4051-24РС (24PI) или АТ89С2051х2-12РС (12PI). Первая из них имеет в 2 раза больший объем внутреннего ПЗУ, но на 50...80% выше стоимость. Ее можно приобрести "на вырост", при этом в программах и схемах ничего менять не надо.Вторая из микросхем обладает в 2 раза большим быстродействием, но в 2 раза меньшей максимальной тактовой частотой. Ее следует применять в экономичных конструкциях с пониженным током потребления, вдвое снизив частоту кварцевого резонатора. При покупке МК на радиорынке необходимо быть уверенным в благонадежности продавца и гарантиях возврата при непрограммируемости. Нелишне визуально проверить отсутствие следов припоя на крайних выводах микросхемы: таким оригинальным способом иногда маркируют брак.
Справедливости ради надо отметить, что надежность МК фирмы Atmel вызывает заслуженное уважение.
Программатор
Основным инструментом, без которого не обойтись пользователю при освоении МК, является программатор. Бывают они универсальные и специализированные. Фирма Atmel разместила на своем сайте электрическую схему (http://www.atmel.com/dyn/resources/prod_documents/DOC0285.PDF, 204 Кб) и пакет бесплатных программ (http://www.atmel.com/dyn/resources/prod_docum"ents/APCPGM.EXE, 276 Кб) для универсального программатора, рассчитанного на 20- и 40-выводные МК: АТ89С51, AT89LV51, АТ89С52, AT89LV52, AT89S8252, АТ89С2051. Фирменный программатор обеспечивает максимально точную выдержку алгоритма прошивки и соответствие временных интервалов. К нему прилагается русифицированная программа с автоматическим определением типа программируемой микросхемы и поддержкой новых кристаллов АТ89С2051х2, АТ89С4051 (ftp://ftp.radio.ru/pub/2004/02/). Небольшой нюанс. Даже собрав программатор по фирменной схеме и пользуясь фирменным программным обеспечением, потребитель не вправе предъявлять претензии к качеству продукции и требовать замену
неисправного МК. Для этого фирма-дистрибутор, продающая контроллеры, должна аттестовать ваш программатор, опломбировать его и заключить специальный договор о порядке замены МК. Специализированные программаторы, в отличие от универсальных, проще по конструкции. В Интернете приводится несколько свободно распространяемых схем, рассчитанных на программирование МК только одной серии АТ89С2051 (АТ89С1051,АТ89С4051). Их характеристики приведены в табл.2. Любой из этих программаторов можно без ограничений использовать в дальнейшей работе.
Небольшая информация к размышлению" для тех, кто еще не определился с выбором. Самым простым среди специализированных программаторов является BlowIT, разработанный фирмой Silicon Studio Ltd (http://sistudio.com/) в 1996 г. Это одно из первых изделий подобного рода, собранное на минимально достаточном числе радиодеталей.Главными недостатками "патриарха" BlowIT считаются: недоступность чтения данных из ПЗУ, невозможность установки битов защиты и отсутствие индикации процесса программирования. Однако, как показывает практика, исправный МК безошибочно программируется с первого раза, значит, проверочное чтение данных из его ПЗУ совсем необязательно. Тому подтверждение многочисленные отзывы пользователей, успешно повторивших конструкцию BlowIT по всему миру. Второй и третий недостатки устраняются в усовершенствованной схеме программатора (рис.5), которую можно условно назвать BlowlT-2. Тем, кто уже имеет "старый" BlowIT, понадобится вновь ввести элементы HL1, R4, SA1.
Устройство подключается через разъем Х2 к параллельному LPT-порту любого IBM-совместимого компьютера (от IBM-286 до Pentium последних моделей). Программируемая микросхема устанавливается в 20-выводную панель XS1. Переключатель SAT обеспечивает два функциональных режима: программирование ("РАБОТА") и установка битов секретности ("ЗАЩИТА"). Для справки, МК АТ89С2051, АТ89С4051 с двумя установленными битами защиты (Lock Bit I, 2) не могут быть считаны никакими внешними устройствами. Тем самым соблюдаются авторские права разработчика и устраняется возможность нелегального тиражирования изделий. Для нормального функционирования BlowlT-2 требуются два напряжения питания: + 12 В (программирование) и +5 В (работа). Их стабилизацию осуществляют элементы R7, VD1, VD2. Нд разъем XI подается питание от малогабаритного сетевого адаптера ("сетевая вилка"), обеспечивающего постоянное напряжение 14... 16 В при токе не менее 25 мА. Светодиод HL1 одновременно является индикатором подачи питания и индикатором процесса программирования. Он будет светиться, если на программатор подано питание переключателем SA2 и разъем Х2 подключен к LPT-порту работающего компьютера. При этом с контакта 14 разъема Х2 поступает лог."1", которая открывает транзистор VT2 и подключает резисторы КЗ, R4 к общему проводу. В процессе программирования лог."1", переходит в лог."0", индикатор на несколько секунд гаснет, а по окончании вновь начинает светиться. Для того чтобы соблюдалась такая логика работы, в базовое программное обеспечение BlowIT пришлось внести соответствующие изменения. Программирование производится при установке переключателя SA1 в положение "РАБОТА" запуском файла blowit2d.bat для DOS и blowit2w.bat для Windows-9х/2000/ХР. Установка битов защиты осуществляется повторным запуском файлов blowtt2d.bat или blowit2w.bat, но уже с переводом переключателя SA1 в положение "ЗАЩИТА*. Время программирования и добавления защиты не превышает 10 с. Пакеты модернизированных программ для BlowIt-2 размещены на сайте журнала РА (http://www.ra-publish.com.ua). Плата рассчитана на установку резисторов ОМЛТ-0,125, транзисторов КТ315А-Г, конденсаторов К10-17, К50-35. Светодиод HL1 любого типа, желательно с широким углом обзора 120°. Вместо двуханодного стабилитрона VD1 можно установить КС168А в стеклянном корпусе или импортный Zener-диод с маркировкой 6V8. Катод стабилитрона подключают к цепи +12 В, а анод - к +5 В.Вилка Х2 СНП101-25В (аналог DRB-25М) имеет угловые выводы и пластмассовый держатель, который крепят винтами к печатной плате. Вместо нее можно использовать компьютерную вилку DB-25M с прямыми выводами, соединив ее контакты с печатной платой проводами, а корпус закрепив на двух уголках. Другой вариант - предусмотреть на печатной плате ламели для запаивания DB-25M, но тогда плата из односторонней превратится в двустороннюю.Панель XS1 в идеальном случае должна быть 20-выводная, узкая, из серии ZIF с "нулевым" усилием прижатия. Однако ее цена (10-15 USD) на порядок превышает стоимость всех остальных вместе взятых деталей программатора. На практике устанавливают цанговую 20-выводную панель с круглыми гнездами. В крайнем случае, подойдет и обычная пластмассовая панель DIP-20 черного цвета с расстоянием 2,54 мм между выводами. Если научиться аккуратно вынимать программируемую микросхему из панели, поддевая ее поочередно с двух сторон тонкой отверткой, то срок службы даже обычной (не цанговой) панели составит много сотен сочленений. Программатор соединяют с компьютером 25-жильным кабелем длиной 1,5...2 м. Рекомендуется встроить в корпус одного из разъемов DB-25 защитные ("антизвонные") резисторы, как показано на рис.7. Такой кабель пригодится в дальнейшем "на все случаи жизни" для других самодельных приборов.
Разработчики программатора BlowIT успешно испытывали его при длине кабеля до 5 м. С этим связано введение в схему конденсатора С2. На более коротких расстояниях он может отсутствовать, что проверяется" экспериментально. Для получения стабилизированных напряжений +12 и +5 В можно использовать схему, показанную на рис.8. Стабилизаторы DAI, DA2 устанавливают вместо элементов R7, VD1, VD2.
Опытным радиолюбителям не составит труда взять напряжения +12 и +5 В прямо из "внутренностей* IBM PC, например, со свободного разъема подключения флоппи-диска (рис.9). Однако следует четко представлять, что при случайном коротком замыкании этих напряжений на общий провод, компьютер будет обесточен в экстренном режиме. Такие аварийные отключения еще ни одному электронному устройству "здоровья" не прибавляли.
Не все знают, что 20 лет назад отставание отечественной микроэлектроники от зарубежной в области МК составляло всего 4 года. Действительно, в 1981 г. фирма Intel выпустила первый МК семейства MCS-51, а в 1985 г. у нас появились аналогичные по возможностям микросхемы серии К1816. Описание их характеристик и внутреннего устройства было приведено в журналах "Микропроцессорные средства и системы" за 1985-89 гг. Но, как это часто бывает, читательская аудитория оказалась еще не готовой к освоению новой техники. Причины банальные - отсутствие МК в широкой продаже, их высокая стоимость, недоступность средств программирования и отладки. В дальнейшем к этой теме периодически возвращались в журналах "Радио" (1994-95 гг.), "Радюаматор" (1996 г.), "Схемотехника" (2001 г.), но информация подавалась в основном для подготовленных специалистов, а не для любителей. За последние 5 лет на прилавках магазинов появились книги (весьма недешевые) по программированию МК разных семейств, большей частью справочного характера. Во многих из них приводится добросовестно сделанный русскоязычный перевод фирменной технической документации со структурными схемами, временными диаграммами, таблицами ассем-. блерных команд. Для инженеров, по долгу службы занимающихся разработкой устройств на МК, этой информации достаточно. А для начинающих? Чтобы не повторять сведения из книг, дальнейшая методика подачи материала будет построена нетрадиционно. Предлагается рассматривать МК в виде "черного ящика" с постепенным (как при проявлении фотографии) выяснением его свойств.
Типовая схема включения АТ89С2051
В Древней Греции существовала легенда, согласно которой красавица Пандора как-то раз из любопытства открыла амфору, в которую громовержец Зевс спрятал все человеческие пороки. Оказавшись на воле, они мгновенно разлетелись по свету, до сих пор причиняя людям страдания и боль. На дне амфоры осталась одна только "Надежда". Мораль истории простая: не ищи ради любопытства приключений на свою голову. Выражение "амфора Пандоры" или "сосуд Пандоры", как символ вещи с неизвестным внутренним содержанием, стало нарицательным. Со временем оно трансформировалось в "ящик Пандоры" или "черный ящик" (Black Box). В технике широко используют этот термин для обозначения прибора, в котором исследователю доступны для наблюдения только входные и выходные сигналы. Попробуем применить принцип "черного ящика" к МК АТ89С2051. Подробно рассматриваться будут только эквивалентные схемы входов и выходов, а также логика передачи данных. Вся внутренняя структура МК останется "за кадром". Такой подход позволяет отсечь несущественные детали, не упуская главного. На рис.1 показана конфигурация выводов АТ89С2051 согласно справочным данным DATASHEET (http://www.atmel.com/dyn/resources/prod_do...nts/DOC0368.PDF , 298 Кб). С целью экономии места, занимаемого статьей, выводы XTAL1, XTAL2, RST/VPP названы соответственно ХТ1, ХТ2, RST. Для сведения, электронные документы DATASHEET являются аналогами отечественных технических условий на радиоэлементы.
Для того чтобы МК заработал, на него следует подать питание, тактовые импульсы, обеспечить начальный сброс, присоединить входные и выходные цепи. Питание МК. Его подают на выводы 20 (VCC) и 10 (GND). Это легко запомнить . мнемонически: положительное напряжение поступает на вывод с максимальным порядковым числом, а общий провод - на вывод с вдвое меньшим номером. Допустимый разброс напряжения питания 2,7...6 В для тактовых частот 0...12 МГц и 4...6 В для тактовых частот 12...24 МГц. Максимальное напряжение VCC, которое не приводит к выходу МК из строя, составляет 6,6 В. Реальный случай из практики. В блоке питания "пробился" стабилизатор КР142ЕН5А. При этом на прибор, содержащий один АТ89С2051 и четыре микросхемы серии 74LS (аналог К555), в течение минуты было подано напряжение + 11 В. Все микросхемы, за исключением контроллера, остались целыми. Вывод: если нет уверенности в надежности защиты блока питания, то между цепями VCC и GND следует установить защитный ограничительный сапрессор типа 1SMA6.5AT3 (ON Semiconductor) или 3...5-ваттный стабилитрон с напряжением UCT=5,6...6,2 В, например, 1N5919B, 1 N534IB (ON Semiconductor). Вблизи выводов VCC и GND должен находиться керамический конденсатор емкостью 0,1 мкФ (0,047...0,47 мкФ). Он уменьшает импульсные помехи по шинам питания, предотвращая непредсказуемые сбои в программе. Длина соединительных проводников к нему должна быть как можно меньшей (максимум 70 мм). Традиционно в любительских разработках используют питание +5 В. Если "под рукой" нет готового стабилизированного блока питания, то его легко изготовить самому на основе микросхем серий 7805 или 78L05. В крайнем случае, напряжение +5 В может обеспечить компьютер, оснащенный звуковой картой с, 15-контактной розеткой Game/Midi (рис.2). Для справки, это напряжение подается непосредственно от компьютерного блока питания, поэтому необходима его защита обычным (FU1) или электронным предохранителем. Ток потребления АТ89С2051 при комнатной температуре и напряжении +5 В составляет 5...8 мА. Существует программная возможность перехода в дежурный режим (Idle Mode) с током потребления около 1 мА и спящий режим (Power-down Mode), ток 20... 100 мкА.
Тактовый генератор. Внутри АТ89С2051 находится осцилляторный узел (on-chip oscillator). В его состав входит усилитель-инвертор, который сдвигает фазу сигналов на 180° (рис.3). На вход усилителя А1 можно подавать внешние тактовые импульсы КМОП-уровня непосредственно или ТТЛ-уровня с pull-up резистором R1. Между входом ХТ1 и выходом ХТ2 допускается включать керамический или кварцевый резонаторы. В любительских условиях более доступен последний вариант (рис.4). Кварцевый резонатор ZQ1 в данной схеме эквивалентен высокодобротной индуктивности, образуя вместе с конденсаторами CI, C2 параллельный колебательный контур. По теории, контур "вращает" фазу сигналов на 180°. Итого, вместе с усилителем-инвертором А1 получается петля в 360°, то есть возникают условия для автогенерации. Фирма Atmel рекомендует номиналы CI, С2 30+10 пФ для кварцевых и 40+10 пФ для керамических резонаторов, но на практике они могут меняться в значительных пределах и не быть одинаковыми по величине. Например, С1 емкостью 18 пФ, С2 - 56 пФ, ZQ1 - 8 МГц. Иногда высокочастотный сигнал встроенного осциллятора используется одновременно и для работы МК, и для синхронизации другого оборудования. В схеме, показанной на рис.5, внешний сигнал отводится конденсатором СЗ, а подстроеч-ным конденсатором С2 выставляется точное значение частоты генерации F. Для большинства приводимых далее схем частота ZQ1 некритична и может меняться в диапазоне 4... 16 МГц. Однако рекомендуется изначально применить резонатор частотой 11,0592 МГц, чтобы можно было в дальнейшем наладить устойчивую связь с компьютером через СОМ-порт. Начальный сброс (RESET). Для установки внутренних регистров МК в исходное состояние на вывод 1 (RST) необходимо подать единичный импульс длительностью не менее 12 периодов тактовой частоты F. Формула для расчета:
Tmin (MKC)=12/F (МГц).
В частности, если F=4... 16 МГц, то Tmin=3... 0,75, мкс.
Важный нюанс. Формула для Tmin справедлива в установившемся (а не в переходном) режиме колебаний генератора. Время его установления t зависит от добротности Q кварцевого резонатора и рассчитывается по формуле:
T = k*Q/F,где к=1...2 - коэффициент самовозбуждения. Для диапазона F=4...16 МГц можно принять t=1...5 мс. Это и будет Tmin. На рис.6 показана схема организации начального сброса RC-цепочкой. Резистор Rrst находится внутри МК. Его номинал 50...300 кОм регламентирован в DATASHEET. Постоянная времени RrstCl составляет 5...300 мс, что больше Tmin. При тактовой частоте F>10 МГц достаточно емкости 0,1...0,22 мкФ, на более низких частотах ее следует увеличить до 0,33.-0,68 мкФ. Кнопка SB1 позволяет в любой момент времени производить начальный запуск программы, не выключая питание. Более того, при ее постоянном удерживании можно косвенно проверить исправность МК. Дело в том, что при лог.1 на входе RST микросхемы DD1, на ее выводах 2, 3, 6-9, 11-19 тоже устанавливаются лог.1. Если это не так, то МК неисправен. Когда включение разрабатываемого устройства производится сетевым тумблером, то напряжение питания +5 В будет подаваться не скачком, а с нарастанием фронта 10...50 мс. При этом для обеспечения устойчивого сброса следует увеличить емкость конденсатора С1 до 1 мкФ или применить более сложную схему, показанную на рис.7. В ней диод VD1 выполняет функцию защиты входа RST при кратковременных "просадках" питающего напряжения. Наличие диода связано с большой емкостью конденсатора С1, в схеме рис.6 он не требуется. Существуют специальные микросхемы супервизоров питания (power supervisor), предназначенные для формирования импульса сброса в микроконтроллерных системах. Среди них выделяются дешевые многофункциональные мониторы питания серии "1232": ТС1232-(Microchip), DS1232 (Dallas Semiconductor), LTC1232 (Linear Technologies). На рис.8 показана типовая схема подключения монитора питания DA1 к МК. На выходе RST DA1 вырабатывается единичный импульс сброса длительностью 0,25... 1 с в следующих случаях:при начальном включении питания; при нажатии кнопки SB1; при "просадках" напряжения VCC ниже 4,5...4,75 В (выбирается уровнем на входе TOL); при отсутствии на выводе /ST импульсов WDT в течение 0,15... 1,2 с (выбирается уровнем на входе TD). Импульсы WDT (watchdog) обычно формирует МК в процессе выполнения своей программы, и если они будут отсутствовать в течение заданного времени, то выдается сигнал сброса. Таким образом удается автоматически восстанавливать работоспособность системы при случайном "зависании" программы.
Порты ввода-вывода . Они являются главными действующими "лицами" в любом МК. В рассматриваемом АТ89С2051 их двое: порт Р1 и порт РЗ. А где же Р0 и Р2? Они остались в "прародителе" - в 40-вы-водном МК базовой серии АТ89С51. Каждый порт содержит 8 линий (разрядов), которые обозначаются буквой "Р" (от англ. port), затем цифра номера порта "1" или "3", разделительная точка, номер разряда от "0" до "7". Для удобства запоминания можно представить себе гавань с двумя морскими портами (рис.9), куда заходят корабли (вводятся электрические сигналы) и откуда они отправляются в плавание (выходят электрические сигналы). Разряды порта -это отдельные судоходные каналы или, по-морскому, фарватеры, ограниченные бакенами (буями). Всего в АТ89С2051 насчитывается 15 действующих "фарватеров" Р1.0-Р1.7, Р3.0-Р3.5, Р3.7 и один блокированный "фарватер", Р3.6, который недоступен извне, но может использоваться в специальных случаях. Направление движения сигналов в каждом из 15 разрядов задается программно и в любой момент может быть изменено с ввода на вывод и обратно.
Входные цепи. Если линия порта работает как вход, то ее можно представить в виде КМОП-логического элемента с нагрузочным резистором RH ИЛИ без него (рис.10). Первый случай относится к линиям PI .2-P1.7, Р3.0-Р3.5, Р3.7, второй - к Р1.0, Р1.1. Резистор RH на самом деле - это полевой транзистор с высоким (десятки-сотни килоом) сопротивлением канала. Его номинал не регламентируется в DATASHEET, но для напряжения питания 5 В можно принять RH=100...200KOM. Логические инверторы 111, 112 не имеют гистерезиса и не обладают свойствами триггера Шмитта. Порог переключения из лог."0" в лог."1" определяется приближенной формулой: Unop ( B )=0,2VCC ( B )+0,8, где VCC - напряжение питания. К примеру, Unop=l,8 В для VCC=5 В. Способы подачи входных сигналов МК аналогичны применяемым в ключевых схемах. Это может быть логический элемент (рис.11), управляющая кнопка (рис.12) оптронный ключ (рис.13), резистивный датчик (рис.14), фотодиод (рис.15). Резисторы R1*, отмеченные на рисунках пунктиром, устанавливаются в двух случаях: во-первых, при работе на входы Р 1.0 и Р 1.1 (обязательно), во-вторых, для обеспечения требуемых режимов по постоянному току (при необходимости). Обычно их номинал на порядок-два меньше, чем RH. В некритичных случаях резистор R1* можно сэкономить, заменив его несколькими внутренними, соединенными параллельно (рис.16).
Выходные цепи. Если линия порта работает как выход, то ее можно представить в виде ключа с нагрузочным резистором RH ИЛИ без него (рис.17). Первый случай относится к линиям Р1.2-Р1.7, Р3.0-Р3.5, Р3.7, второй - к Р1.0, Р1.1. Нетрудно догадаться, что RH - это тот же самый "полевой" нелинейный резистор, который стоит на входе логического элемента согласно рис.10. Строго говоря, внутри каждой линии порта находятся еще два низ-коомных резистора, которые подключаются параллельно RH на разных этапах перехода из лог."0" в лог1.
Купить
Программаторы, средства разработки и отладки для DSP,
средства разработки и отладки для ПЛИС-ПАИС
Однако для понимания физики процессов это несущественно. Если ключ S1 разомкнут, то на выходе порта устанавливается лог.1, поддерживаемая резистором RH. При замыкании ключа S1 образуется делитель из высоко-омного резистора RH И НИЗКООМНОГО RO, при этом напряжение на выходе порта соответствует лог."0*. Ключи SI, S2 могут пропускать через себя ток не более 20 мА (максимум 25 мА). При этом общая нагрузка по всем линиям всех портов АТ89С2051 не должна превышать 80 мА, то есть 4 линии по 20 мА, 8 линий по 10 мА или 15 линий по 5,3 мА. Ключи SI, S2 замыкаются и размыкаются программно.
Нагрузочная способность выходов МК позволяет подключать к любому из них: 1 -2 входа микросхем серии К155, 1-4 входа -К555, 1-8 входов - КР1533 или 1-25 входов - К561 (рис.18). Резистор R1, отмеченный пунктиром, необходим для линий Р1.0, Р1.1. Подключение светодиодного индикатора показано на рис.19. Номинал резистора R1 рассчитывается по формуле:
Rl=(VCC-llh-Uo)/lo,
где VCC=5 В - напряжение питания; Uh=l,6...1,8 В - падение напряжения на светодиоде HL1; 11о=0,2...0,5 В - напряжение лог."0" МК; 1о=4...20 мА - ток через светодиод НИ. Чем меньше сопротивление R1, тем больше яркость свечения, и наоборот. В схеме, показанной на рис.20, резистор R1 сопротивлением 1...10 кОм улучшает громкость и качество звучания пьезокерамической "пищалки" НА1. Он может быть заменен двумя или более внутренними резисторами, расположенными в МК (показано пунктиром). Если нагрузка потребляет ток более 20 мА, то необходим ключ, например, на транзисторах структуры n-p-п (рис.21). В качестве нагрузки может выступать реле К1, нагревательный элемент Е1 или другое устройство с внутренним сопротивлением менее 250 Ом. В целях повышения устойчивости резистор R2 должен иметь как можно больший номинал. С этой же целью вместо обычного устанавливают составной транзистор VT2. При подаче импульса сброса на DD1 все его выходы переводятся в лог.1 При этом реле К1 и нагрузка Е1 будут включены, что следует учитывать при разработке логики работы устройства. Кроме того, ключ на транзисторе VT1 можно подключать только к "открытым" линиям Р1.0, Р1.1, а ключ на транзисторе VT2, наоборот, только к "закрытым" линиям Р1.3-Р1.7, Р3.0-Р3.5, Р3.7. Избавиться от этих недостатков позволяют ключи на транзисторах структуры p-n-р (рис.22). Их удобно применять, если нагрузки (автономные узлы Al, A2 или другие) имеют гальваническую связь с общим проводом. Резисторы R2, R3 определяют базовый ток, открывающий транзисторы VT1, VT2. Резисторы R1, R4 позволяют их надежно закрыть в случае управления от "открытых" линий Р1.0, Р1.1. Схема, показанная на рис.23, демонстрирует управление нагрузкой с повышенными напряжениями. На резисторах R2, R3 выделяются импульсы амплитудой около 12 В положительной и отрицательной полярности соответственно. В последнем случае функцию ключей выполняют "цифровые" транзисторы VT1, VT3 фирмы ROHM.
Входные-выходные цепи. Во всех рассмотренных ранее схемах линии портов работают или только на ввод, или только на вывод. Если в программе МК заложено, что через одну и ту же цепь необходимо как принимать, так и передавать данные, то эквивалентная схема будет представлять собой суперпозицию схем входа и выхода (рис.24). При программной записи в линию порта лог."0" ключ S1 замыкается, элемент 111 исключается из работы. При записи лог." 1" ключ S1 размыкается, а с элемента 111 можно считывать информацию. Получается совмещение функций входа-выхода (квази двунаправленность), когда запись в линию лог.1 автоматически переводит МК в состояние чтения. Такой особенностью обладают все микросхемы семейства MCS-51 фирмы Atmel, но ее нет, например, в Р1С-контроллерах. На рис.25 показано подключение мощного шинного формирователя К555АП6 к МК. Направление передачи сигналов А1-А8, В1-В8 задается программно. Если на линии Р1.7 выставлен лог"0", то сигналы вводятся в МК, если лог.1, то выводятся из МК. Единственная забота программиста -перед установкой сигнала Р 1.7=0 записать в линии Р3.0-Р3.5, Р1.5, Р1.6 лог.1, чтобы не возникало конфликта "передавливания" напряжений между DD1 и DD2. В схеме, показанной на рис.26, подобный конфликт устраняется развязывающим диодом VD1. Логический элемент DD3 привыдаче данных из МК должен иметь на своем выходе лог.1, чтобы диод VD1 был постоянно закрыт. Если DD3 имеет выход с открытым коллектором (стоком), то диод VD1 можно исключить, заменив перемычкой. Резистор R1 устанавливается при работе с "открытыми" линиями Р1.0, Р1.1, а также для увеличения крутизны фронтов сигналов. Линии портов АТ89С2051 могут электрически соединяться напрямую друг с другом или с общим проводом без опасности их повреждения в случае программного сбоя. Это положение без ограничений действует для всех микросхем семейства MCS-51 фирмы Atmel. Категорически не допускается соединение выводов портов с шиной питания VCC напрямую, через переключатель или через транзисторный ключ. На рис.27 показана схема простейшего тестера, проверяющего исправность МК при его покупке или на "входном контроле*. Назначение элементов: С2, СЗ, ZQ1 - стабилизация задающего генератора, С1 - шунтирование питания; С4, SB1 -сброс МК; HG1, HG2, Rl, R2 – индикация состояния портов Р1, РЗ; DD1 -проверяемый контроллер, установленный в 20-выводную панель.
Детали любые малогабаритные. Вместо двух индикаторов HG1, HG2 можно установить 15 светодиодов типа АЛ307Б, подключив их катоды к линиям портов, а аноды - к резисторам Rl, R2. Конструкцию собирают на монтажной плате. Разрабатывать печатную плату имеет смысл, если тестер будет использоваться в виде переносной конструкции с питанием от трех батареек по 1,6 В каждая. НЕХ-коды прошивки DD1 в формате HEX-tntel приведены в листинге. Их набирают в любом текстовом редакторе, например, Microsoft Word, затем сохраняют как "Текст DOS с разбиением на строки" в виде файла mk2.hex. Достоинством НЕХ-формата перед обычным бинарным является наличие в нем цифр построчной контрольной суммы (крайний правый столбец) и адреса загрузки (4 крайних левых столбца). Первое позволяет выявлять ошибки набора, второе - максимально сжимать объем текста. Полученный файл mk2.hex готов для использования в программаторе BlowlT-2 [1]. Если программатор подключен к порту LPT1, то в текстовом редакторе набирают пакетный файл mk2dos.bat для DOS:
echo off
blowit2d mk2.hex 1
startlpt 1
или mk2win.bat для Windows:
echo off
py2051 mk2.hex
startlpt 1
Через несколько секунд после запуска пакетного файла на выполнение МК будет прошит. Для сведения, некоторые типы программаторов воспринимают только бинарные файлы. Их можно конвертировать из НЕХ-формата утилитой htobv2.exe, автор Peter Averill (имеется на сайте издательства "Радиаматор" http://www.ra-publish.com.ua). Микросхему DD1 после прошивки кодов устанавливают в панель тестера и включают питание +5 В. Если МК запрограммирован правильно и все его порты исправны, то на табло индикаторов HG1, HG2 будут последовательно появляться засветки черточек с длительностью 0,25... 1с (частота кварцевого резонатора ZQ1 16...4 МГц). Каждая засветка соответствует определенной линии портов Р1,РЗ. Если индикаторы не светятся вообще или их мигание хаотично, то причину следует искать в отсутствии сигнала сброса, в неустойчивом запуске кварцевого генератора, в фатальной неисправности МК, в обрыве питания, в ошибках при монтаже тестера или программатора. Можно попытаться сменить микросхему DD1 или повторно ее запрограммировать.
Если одновременно светится не одна черточка, а несколько или какая-то из них не светится ни при каких условиях, то это означает неисправность линий порта. Где они находятся, определяют по изображению табло на электрической схеме рис.27. Например, на индикаторе HG1 не светится черточка "F" и десятичная точка "Н", а на индикаторе HG2 постоянно светится черточка "А". Следовательно, неисправны линии Р1.2, Р1.0, РЗ.О. Тем не менее, отчаиваться не надо. Такой МК еще долго послужит, только в нем доступными будут не 15, а всего лишь 12 линий портов. Полиглот - это человек, владеющий несколькими иностранными языками. В программировании полиглотами называют людей, изучивших несколько алгоритмических языков. В применении к МК наибольшей популярностью пользуются Ассемблер и Си. В идеальном случае радиолюбитель должен знать оба этих языка. Однако часто бывает, что "обжегшись" на изучении запутанных конструкций Ассемблера, у пользователя опускаются руки и отпадает всякое желание заниматься программированием вообще.
Для этой категории читателей, а также для тех, кто начинает "с нуля", предлагается другой подход, а именно изучить основы Си и выработать свой стиль программирования с использованием ограниченного числа логически понятных операторов. Алгоритмический язык Си. В 1972 г сотрудник фирмы BELL LABS Деннис Ритчи разработал новый язык программирования Си. Почему "Си"? Потому, что прообразом для него послужил язык "Би" Кена Томпсона. Си относится к языкам высокого уровня, подобно Basic и Pascal, но он имеет в своем составе средство, хароктерные для Ассемблера. Такой симбиаз оказался как нельзя кстати при программировании МК. Особенности синтаксиса языка Си позволяют создовать на его основе более короткий и быстро выполнимый код. Исторически Си-кампиляторы появились раньше своих собратьев и успели пройти несколько этапов развития. Краме того, Си обладает свойством мультиплатформенности, то есть программа, составленная для одного типа МК, с минимумом доработок будет запускаться и на другом типе МК.
Обобщенная схема процедуры программирования разделяется на 4 этапа (рис.1). Вначоле в текстовом редакторе набирается исходный листинг программы, пасле чего полученному файлу присваивается расширение ".с". Далее запускается программа-компилятор, которая преобразует этот файл в НЕХ-коды прошивки. Завершает процедуру запуск программы обслуживания программатора, в результате работы которой, собственно, и прошивается ПЗУ МК. Существуют программно-аппаратные комплексы, которые объединяют в себе все четыре этапа, но начинающему пользователю но первых порах придется проходить их по отдельности. Первый и второй этапы должен знать любой человек, допущенный к компьютеру. Остается третий этап - работа с компилятором.
Компилятор языка Си. Известно несколько разновидностей Си-компиляторов, ориентированных на МК семейства MCS-51. В таблице перечислены наиболее популярные программы профессионального уровня. Все они платные, хатя их демо-версии можно свободно "скачать" с Интернета. Более тога, при помощи "демо" можно успешно компилировать небольшие по объему программы. Существуют и отрицательные моменты, например: в демо-версиях присутствуют неточности, нет полного комплекта библиотек функций, имеются ограничения по объему кода и времени действия программы. Разумеется, хакерскими методами можно обойти эти ограничения, но тогда придется вступить в конфликт с законом об охране авторских прав. Практика показывает, что профессиональные компиляторы достаточно сложна осваиваются на начальном этапе. Отсутствие русскоязычных подсказок приводит к трудностям в расшифровке полученных данных. Эти программы хорошо подходят на роль второй ступени обучения, а "первым учителем" все же должен быть компилятор попроще. Учитывая, что не все читатели имеют доступ к современным типам компьютеров, необходимо подыскать программу, стабильно работающую как под DOS, ток и под Windows, о также генерирующую достаточно большой по объему код С такой задачей под силу справиться одному из первых (если не самому первому в мире для MCS-51) Си-компилятору "icc8051" фирмы IAR Systems. Он был выпущен в 19В6 г. и совершенствовался до 1991 г. как инструментальное средство DOS-приложений. В настоящее время фирма IAR уже не поддерживает этот компилятор, следовательно, его можно без ограничений использовать в домашних разработках. Со своими основными задачами "icc8051" справляется ничуть не хуже компиляторов высокого уровня, генерируя компактный, быстрый, а главное, бесконфликтный в работе код (проверено на практике!). С неприхотливостью интерфейса и отсутствием средств симуляции на первых порах вполне можно мириться. Очень ценно, что для "iсс805Г V4.02E/DOS имеется хороший русскоязычный справочный мотериал (см. на сайте журнала "Радiоаматор" http://www.ra-publish.com.ua). Основным недостатком "icc8051" многие считают ограниченный до 1,5...3 Кб объем кода. Однако существует простой прием (не хакерский, а легальный!), позволяющий компилировать прошивки кодов до 10 Кб. Как это сделать, будет рассказано далее, при рассмотрении приемов компоновки больших по объему программ.
С.М. Рюмик, г. Чернигов
вперед