Электрификация

Справочник домашнего мастера

Программатор pic контроллеров

Миниатюрный USB программатор для AVR микроконтроллеров

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.
Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.

Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно

Прошивка управляющего микроконтроллера

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR

Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:

После прошивки должен загореться светодиод подключенный к 23 ноге микроконтроллера. Это будет верный признак того, что программатор прошит удачно и готов к работе.

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:

Выбираем папку где лежат дрова и жмем Далее

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера
Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.
Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.
Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.
Скачать файл печатной платы в SprintLayout можно по этой ссылке
Ну вроде все, если возникнут вопросы, постараюсь ответить.

РадиоКот >Лаборатория >Цифровые устройства >

Теги статьи: Добавить тег

Программаторы для микроконтроллеров Atmel

Aheir
Опубликовано 01.01.1970

Эта статья — попытка обобщить некоторый разрозненный материал по программаторам для популярных сегодня микроконтроллеров фирмы Atmel. Материал не претендует на полноту, однако основан на личном опыте, в чем и состоит, на мой взгляд, его основная ценность.

Схема программатора Fun-Card

Программатор предназначен для работы под управлением программы ICProg, является функциональным аналогом «5 проводков» (до предела упрощенная схема STK200+/300, о которой ниже) и представляет собой несколько резисторов.
Программатор подключается к LPT-порту. Разъем устанавливается непосредственно на плату программатора, кроме того, на плате предусмотрена кроватка для программирования контроллера AT90S2313, а также выведены сигналы SCK, MOSI/MISO и Reset.
Программируемая микросхема может брать питание с порта LPT, в этом случае, на выводах 2, 3, 4 порта должны быть установлены единицы, а вывод 2 разъёма ISP должет быть подключен к выводу Vcc микросхемы. Некоторые порты могут не потянуть такой нагрузки, в этом случае придётся использовать внешний источник питания (5В).
Источником тактовых импульсов для микросхемы также может служить LPT порт. В этом случае вывод 3 разъёма ISP (LED) должен быть подключен к выводу XTAL 1 программируемой микросхемы.
Естественно, программа программатора на PC должна понимать эти режимы работы (для работы с этой схемой нужно воспользоваться программой IC-Prog, где при выборе типа программатора следует установить «Fun-Card Programmer»).
Печатная плата в формате SL5 – , программа ICProg и драйвер под ХР – .

Схема программатора STK200+/300

Большая часть нижеследующего описания и сама схема взята со странички https://ln.com.ua/~real/avreal/adapters.html, крайне рекомендую посетить ее.
Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11). При необходимости программной генерации тактового сигнала XTAL1 используется линия LED адаптера, исходно предназначенная для включения светодиода (на печатной плате ver.1 установлен только светодиод, сигнал XTAL1 на разъем программирования не заведен, а вот в ver.2 на третьем контакте есть сигнал XTAL1).
Буферизованные адаптеры запитываются от платы с программируемым процессором, т.е. питание подаётся на программируемую плату, а с неё на адаптеры поступает через шлейф.
Адаптер собран на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, «отключив» адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Поскольку разводка рассчитана на установку LPT-разъема непосредственно на плату, для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть 🙂 и вывести с программатора шлейф до платы с микроконтроллером длиной 20-25 см.
На плате предусмотрена установка светодиодов «питание» и «программирование» (на схеме не показаны).
Схема работает с программами AVR ISP, CodeVision AVR, WinAVR и другими.
В ряде случаев (например, для программирования нескольких контроллеров одной и той же прошивкой или в случае отсутствия на плате места под ISP-разъем) могут оказаться полезными «платы расширения» для различных контроллеров, содержащие кроватку для установки контроллера и минимально необходимую для работы обвязку. Я сделал такие платы под AT90S2313/ATTiny2313, ATTiny26, ATTiny13, ATMega8 и ATMega16. Кроме того, в версии ver.1 кроватки для ATTiny26 и ATTiny13 есть непосредственно на плате.
Обе версии платы программатора и все «платы расширения» в формате SL5 – .
Вот так выглядит один из моих STK в окружении плат расширения:

Схема программатора AVR910 с универсальным COM/USB интерфейсом

AVR910 – весьма известный аппнот Atmel, давший название целому классу устройств.
Сейчас под AVR910 понимают как правило протокол, по которому происходит обмен данными между компьютером и программатором.
В сети на данный момент можно найти несколько вариантов таких программаторов, различающихся способом реализации интерфейсной части. Традиционно все эти программаторы собираются на основе микроконтроллера AT90S2313 или (в редких случаях, при наличии модифицированной прошивки) ATTiny2313.
На схеме представлен программатор, способный работать как через CОМ, так и через USB.
Переключение типа интерфейса происходит при помощи джампера J1. При работе через USB питание программатора осуществляется непосредственно от этого порта компьютера, причем в этом режиме имеется полная гальваническая развязка программатора (и, соответственно, программируемого устройства) от компьютера, более того, при замыкании перемычки J2 программируемое устройство может питаться от программатора (до 100 мА).
При работе через СОМ-порт развязка отсутствует, а питание программатора осуществляется, как обычно, от программируемого устройства.
Интерфейс USB реализован на микросхеме FT232BM в стандартной схеме включения, в качестве согласователя уровней для СОМ-порта применена MAX232.
Вариант разводки печатной платы, схема и прошивка лежат . Разводка платы не оптимальна, поскольку осуществлялась для конкретного корпуса с заранее заданным расположение разъемов, органов управления и индикации. Кроме того, на плате разведена кнопка для принудительного сброса программируемого МК, реально она не нужна, поскольку сброс корректно осуществляется программным образом. Также на плате присутствует разъем для программирования МК самого программатора.
Для подключения программатора к СОМ-порту служит трехконтактный разъем PLS и потребуется изготовить специальный шнурок.
Замечу, что поскольку здесь используется стандартная разводка шнурка для ISP, с этим программатором можно использовать платы расширения от STK200+/300.
Этот комплект у меня выглядит вот так:

Этот программатор работает у меня под управлением CodeVision AVR 25-ой сборки. Такой выбор обусловлен возможностью регулирования скорости порта непосредственно из программы. Программатору свойственны некоторые особенности в силу применения микросхемы FT232BM, в частности, необходимо выставить минимальную задержку в свойствах соответствующего виртуального СОМ-порта (подробнее смотрите статью USB — RS-232 преобразователи). После этого программирование осуществляется довольно быстро (хотя и чуть медленнее STK200+/300, что, естественно, вызвано последовательным способом передачи данных в программатор).

Схема AVR910-совместимого USB программатора (схема Prottoss»a)

Автором этой конструкции является Рыжков Андрей, известный также под ником PROTTOSS. Описанию этого программатора посвящена одна из страничек его сайта, там же можно найти контакты для связи с автором. Здесь этот материал публикуется с разрешения автора, так что все формальности соблюдены. 🙂
Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в Application Note AVR109: Self Programming
Исходно схема устройсва выглядит следующим образом:

Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи. Светодиод VL3 служит для сигнализации подачи питания на программатор. Резисторы R10 — R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера. С помощью J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом — пониженная. Переключать джампер можно «на ходу», так как управляющая программа МК программматора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению операции записи/чтения. Данный джампер введен для возможности программирования МК AVR, тактированных от внутреннего генератора 128 кГц.
Схема была несколько переработана, в нее внесены следующие изменения.
Питание МК осуществляется от USB, но не через диоды, как в исходной схеме, а через LDO стабилизатор LM1117 на 3.3В. Замечу, что при таких напряжениях питания (как 3.3 В здесь, так и 3.6 В в исходной схеме) и частоте кварца 12 МГц Atmel не гарантирует устойчивую работу своих МК, однако к чести производителя ни один из тестировавшихся микроконтроллеров работать не отказался. Тем не менее, стоит учитывать такую возможность. Еще раз: чем больше напряжение питания (в пределах до 5В, естественно), тем выше вероятность того, что контроллер запустится и будет устойчиво работать, поэтому многие отказываются от LDO в пользу двух диодов. Да, предохранитель тоже отсутствует, но, если добавить, хуже точно не будет.
В обе цепи питания МК (VCC и AVCC) введены дополнительные LC-фильтры в виде SMD-индуктивностей на 10мкГн и конденсаторов 0.1 мкФ (в принципе, дроссель в AVCC можно заменить перемычкой, его установка — совсем уж перестраховка), кроме того, на плате появился дополнительный джампер, позволяющий запитывать целевую плату от программатора напряжением 5В или 3.3 В или, естественно, вообще не питать ее от программатора. В цепь питания целевой платы также включена индуктивность и установлен диод 1N4148, препятствующий попаданию питающего напряжения с целевой платы (если оно там есть) на программатор. Замечу, что поскольку на диоде имеет место падение напряжения, то напряжение питания целевой платы будет меньше заявленного на величину этого самого падения. В зависимости от диода и некоторых других условий теоретически оно может снизиться настолько, что его не хватит для нормального функционирования целевой платы. Для уменьшения эффекта можно использовать в этой цепи диод Шоттки, а вообще, может быть стоит вообще отказаться от такой возможности, решайте сами, насколько оно вам надо… 🙂
Исчез джампер NORM/MOD, предназначенный для ввода программатора в режим обновления прошивки, вместо этого на плате установлен полноценный разъем для программирования МК программатора (разъем имеет несколько нестандартный вид и представляет собой контактную гребенку PLS-6, на которую выведены следующие сигналы в последовательности MOSI-MISO-SCK-Reset-Vcc-GND. В такой же последовательности эти сигналы расположены на выводах МК ATMega16 в корпусе DIP-40, именно оттуда я ее и «срисовал». Такой разъем занимает меньше места на плате и как правило проще разводится, чем стандартный 10-ти контактный ISP-коннектор, поэтому лично я часто им пользуюсь в своих конструкциях).
Кроме того, уменьшены до 220 Ом последовательные резисторы в линиях программирования (вообще, их номинал — отдельный открытый вопрос) и до 22 Ом в линиях USB.
Все эти изменения можно проследить на печатной плате (кроме изменения номиналов резисторов, в подписях элементов они оставлены прежними), разводку которой можно скачать в конце статьи. Плата получилась односторонняя с парой перемычек и рассчитана на установку МК ATMega8 в кроватке, у которой удалены неиспользуемые выводы. Можно, конечно, и впаять туда Мегу, откусив лишние выводы, но это на ваш страх и риск. Собранный программатор выглядит так:

После сборки программатора следует прошить МК в нем (прошивка в конце статьи), при этом фьюзы для МК нужно выставить следующим образом:

Теперь, если все собрано правильно, при подключении программатора к ПК обнаружится новое устройство и потребуется установка драйверов. Драйвера, естественно, без цифровой подписи, так что просто игнорируем предупреждения ОС по этому поводу. В общем-то, на этом установка и заканчивается. Если у вас не ХР, а Win2000, то требуются некоторые дополнительные манипуляции, за подробным описанием которых (как, впрочем, и всей конструкции вцелом) я попрошу вас обратиться на сайт автора. В системе должен появиться новый виртуальный СОМ-порт, через который и работает этот программатор, стоит настроить номер этого порта и скорость. Естественно, используемый вами софт нужно будет настроить на работу именно с этим портом.

Вот еще вариант платы этого программатора на микроконтроллере в корпусе TQFP, делал под конкретный корпус, схема та же, работает не хуже:

При всем уважении к автору не могу не заметить, что среди повторивших эту схему встречаются люди, у которых она работать отказывается. Сложно объективно сказать, с чем это может быть связано, однако лишний раз призову к соблюдению рекомендаций и внимательной сборке устройства. В остальном, из личного опыта, претензий к программатору нет, работает достаточно устойчиво (несколько раз наблюдались сложности при длинных шлейфах к программируемому устройству, другие программаторы в этих же условиях сбоя не давали), скорость приемлемая, но не очень высокая, естественно.
В качестве возможных доработок могу предложить не питать МК программатора пониженным напряжением, а поставить на линии USB стабилитроны, чтобы ограничить напряжение на них. Идея не проверялась.

Лично я свой первый МК AT90S2313 программировал с помощью Fun Card, потом собрал и до сих пор плотно использую несколько вариантов STK200+/300, а с AVR910 работаю в основном в «полевых условиях», когда требуется подключение программатора к ноутбуку без LPT-порта.. Вот такая вот эволюция..

Вопросы, как обычно, складываем .

Файлы:

Плата Fun Card в формате SL5
Софт для Fun Card
Платы в формате SL5 для STK200+/300
Схема (RusPlan6), плата (SL5) и прошивка (hex) для AVR910
Плата (SL5), прошивка (hex) и драйвера для USB AVR910 от PROTTOSS»a
Плата (P-CAD 2006) для USB AVR910 от PROTTOSS»a на Atmega8 в корпусе TQFP (SMD вариант)

Как вам эта статья?

Заработало ли это устройство у вас?

107 1 3
48 1 0

Программатор для AVR — аналог AVRISP

Описание опубликовано в журнале «Радио» № 5 за 2006 г., стр.27…30. Два универсальных программатора.

Благодаря оптимальному соотношению цена/качество микроконтроллеры семейства AVR фирмы Atmel пользуются заслуженной популярностью как среди радиолюбителей, так и профессионалов. Возможность их программирования по последовательному интерфейсу SPI позволяет использовать для этих целей очень простые программаторы, например PonyProg.

Но в последнее время энтузиасты – программисты share ware программаторов для AVR просто не в силах своевременно вводить корпектную поддержку всех новых типов. Но даже те радиолюбители, которых вполне устраивают старые типы контроллеров, могут оказаться в сложной ситуации. Например, класс AT90S полностью снят с производства. На смену ему пришли ATtiny и ATmega, которые имеют несколько иные алгоритмы программирования. В такой ситуации логично будет не изобретать велосипед, а воспользоваться схемой программатора микроконтроллеров AVR, которую предлагает производитель AVR — фирма Atmel.

При работе с простейшими программаторами типа PonyProg следует иметь ввиду, что такой программатор подключается к COM, LPT порту компьютера и, по сути, содержит только буферные элементы для согласования уровней выводов порта с контроллером. Все необходимые алгоритмы реализуются управляющей программой, запускаемой на компьютере. Казалось бы, это самый простой и в то же время наилучший вариант. Зачем усложнять задачу? К сожалению, все не так просто.

Основное назначение LPT порта – это работа с принтером, а COM порта – обеспечение связи с внешними устройствами, например модемом по интерфейсу RS-232. Программное управление уровнями на отдельных линиях этих портов хотя и возможно, но это уже нестандартная задача, а значит никто не может гарантировать, что она будет выполняться корректно. Да и не далек тот день, когда эти порты исчезнут из компьютера, а работать через конвертер USB COM простейшие программаторы не могут.

Более того, стандартная аппаратно-программная конфигурация персонального компьютера даже при наличии быстродействующих процессора и ОЗУ не позволяет точно сформировать интервалы времени, меньше нескольких сотен миллисекунд. Для программирования же современных контроллеров необходимы импульсы длительностью порядка единиц микросекунд и менее. Поэтому невозможно гарантировать корректную работу простых программаторов на всех без исключения компьютерах.

Предлагаемый программатор – это упрощенный и модернизированный аналог выпускаемого и поддерживаемого компанией Atmel внутрисхемного программатора AVRISP. Упрощение заключается в исключении из схемы элементов защиты от статического электричества – в серьезных случаях они все равно не помогут – и замене преобразователей уровня COM-TTL на дискретных элементах специализированной микросхемой MAX232. В отличие от прототипа этот программатор микроконтроллеров AVR позволяет программировать их не только внутрисхемно, но также и непосредственно в программаторе.

Схема программатора AVR показана на рисунке. Это универсальный программатор, он программирует все микроконтроллеры AVR с интерфейсом SPI. Управление осуществляется через COM порт персонального компьютера. Возможно подключение и через USB COM адаптер.

Управляющая программа является составной частью фирменной интегрированной отладочной среды разработки AVR Studio от Atmel. Ее последняя версия всегда свободно доступна на http://www.atmel.com.

Дополнение 2018 г.

Прошло более 10 лет с момента разработки этого программатора. Я думал, что он уже потерял свою актуальность. Сейчас для программирования, например, Arduino или контроллеров STM32 никакой программатор вообще не нужен, т.к. они имеют встроенный bootloader. Достаточно простого конвертера USB-COM.

Однако, оказалось, что программатор для AVR еще востребован. Подтверждение тому — материалы, которые прислал мне один из его пользователей. Он разработал новую плату для этого варианта AVRISP на которой смонтировал модуль USB-COM, а также применил панельки с нулевым усилием для программируемых микросхем. Тактовая частота на программируемый контроллер подается от отдельного генератора.

Выкладываю схему, фотографии и чертежи плат в том виде, в каком я их получил. Ссылка ниже.

PICPgm Development Programmer

Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования.

Приложение PICPgm Development Programmer (или просто PICPgm) имеет простой, дружелюбный графический интерфейс и предназначено для работы с микроконтроллерами семейства PIC. Основное окно пакета состоит из меню, панели инструментов, рабочей части со вкладками и строки состояния. В настоящее время программа поддерживает 660 микросхем, принадлежащих разным сериям: PIC10F, PIC12F, PIC16F, PIC18F, PIC24H, PIC24F, dsPIC30F, dsPIC33F. Пакет способен взаимодействовать с множеством различных программаторов, которые могут быть подключены к компьютеру через USB, принтерный порт или последовательный COM-порт. Выбрать используемый программатор можно в настройках приложения. Среди прочих в списке есть такие популярные программаторы, как PICPgm USB и PICPgm LVISP, JDM, Microchip AN589, Trivial LVP, EPIC Parallel Port, P16PRO40, целая группа Olimex программаторов, а также многие другие.

Программное обеспечение работает с flash-памятью, внутренним EEPROM и конфигурационными битами согласно данным из hex-файла. В PICPgm имеются стандартные для подобного рода программ функции: чтение содержимого микроконтроллера и запись его в hex-файл, очистка памяти чипа, верификация, автоопределение модели программатора и микроконтроллера, проверка объема свободной памяти контроллера. Поддерживаются методики низковольтного и внутрисхемного (ISP) программирования. Кроме того могут быть сконфигурированы выводы программатора.

Каждый hex-файл представлен на рабочем окне вкладками: «Code Mem», «Data Mem», «Config Mem» и «Config Bits», в которых можно найти всю необходимую информацию. В отдельной вкладке ведется запись всех происходящих событий. Для начала работы необходимо подключить программатор и прошиваемое устройство. При запуске софта большинство аппаратных средств (и программаторы, и PIC-микроконтроллеры) распознаются автоматически. Все это можно установить и самостоятельно в окне настроек, выбрав нужные модели из предлагаемых списков. После этого остается указать путь к файлу прошивки формата *.hex и нажать на кнопку «Programm PIC».

Программа PICPgm идеально подходит для начинающих пользователей, желающих заняться программированием с минимальными затратами и усилиями. Среди основных недостатков программного обеспечения стоит отметить тот факт, что все программы, которые будут загружаться в микроконтроллер с помощью PICPgm, должны быть представлены в виде файлов с расширением *.hex. Если исполняемая программа написана на каком-либо другом языке (например, C), то понадобится стороннее программное обеспечение, которое преобразует код. Существуют различные компиляторы, предназначенные специально для программирования различных типов микроконтроллеров PIC: MicroC, MPLAB. Каждый из них создаст нужный hex-файл.

PICPgm был разработан усилиями небольшой группы программистов. Руководителем проекта является Christian Stadler. Первая версия пакета вышла в 2004 году, с тех пор авторы регулярно обновляют программу.

PICPgm Development Programmer полностью бесплатен и свободно распространяется в интернете. Данное программное обеспечение небольшое по размеру, но требует инсталляции. Последняя версия доступна на официальном сайте. Также на сайте представлены электрические схемы программаторов.

Данное приложение написано на английском языке, русификатора к нему нет.

Доступны версии PICPgm для операционных систем Linux, Microsoft Windows (98, ME, 2000, XP, Vista, 7 – 32- и 64-разрядных) и MacOS X (экспериментальная версия). Проблем с совместимостью в ОС Windows Vista и Windows 7 не обнаружено. Версия программы для Windows включают в себя драйвер для доступа к параллельному порту. Кроме того для ОС Windows и Linux существует вариант программы с командной строкой (то есть без графического интерфейса), который имеет те же возможности, но управляется с помощью аргументов командной строки.

Распространение программы: бесплатная.

Инструкция по настройке ICProg, PonyProg и PicPgm для программатора RH-0001C под WinXP

  1. Настройка ICProg.
  2. Настройка PonyProg2000.
  3. Настройка PicPgm.

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

Ниже описано как настроить ПО для работы с программатором.

Настройка ICProg

  1. После инсталляции программы нужно убедиться в наличии в папке с программой специального драйвера для работы в среде Windows XP — ICProg.sys
  2. Запускаем программу и заходим в меню Settings -> Options.
  3. В открывшемся окне, на вкладке Misc, отмечаем галочками пункты Enable NT/2000/XP Driver и Enable Vcc control for JDM. Process Priority устанавливаем High или Realtime. (При подключении/отключении драйвера прогу нужно перезапустить. Она сама об этом попросит, просто не нужно ей отказывать)
  4. В этом же окне, на вкладке IIC, отмечаем галочками пункты Enable MCLR as Vcc и Enable PAGE-WRITE.
  5. Кроме перечисленных выше опций, в этом же окне, на вкладке Programming, есть пункты Verify after programming и Verify during Programming. Лучше всего или снять обе галочки, или оставить только Verify after programming. В любом случае, лучшая проверка — это считать данные после программирования и сравнить с теми, которые заливались.
  6. После того как все нужные опции установлены — жмём кнопку OK.
  7. Заходим в меню Settings->Hardware (горячая клавиша — F3)
  8. Выбираем в открывшемся окне следующие настройки: Programmer: JDM Programmer, Ports: нужный com-порт, Interface: Windows API. В пункте Communication: ставим галочку напротив Invert Data In при работе с девайсами, требующими подключения через разъём XT2, или ставим галочки напротив Invert Data In и Invert MCLR при работе с девайсами, требующими подключения через разъём XT3 (если читаются одни нули — нужно попробовать прочитать чип со снятой галочкой Invert MCLR). После этого нажимаем кнопку OK.

Всё, на этом настройка ICProg завершена. Теперь остаётся только выбрать наш девайс в меню Settings->Device->(далее выбираем из списков то, что нам надо) и правильно его подключить. Подключение многих девайсов можно найти на этой странице (найдите свой девайс в таблице внизу и щёлкните по нему мышкой — откроется всплывающее окно со схемой подключения).

Настройка PonyProg2000

  1. Заходим в меню Setup -> Interface Setup…
  2. В открывшемся окне выбираем интерфейс — Serial, тип программатора JDM API, выбираем нужный COM-порт, а также в пункте Select Polarity of the Control lines ставим галочку напротив Invert D-IN при работе с девайсами, требующими подключения через разъём XT2, или ставим галочки напротив Invert D-IN и Invert Reset при работе с девайсами, требующими подключения через разъём XT3 (если читаются одни нули — нужно попробовать прочитать чип со снятой галочкой Invert Reset). После этого жмём кнопку OK.

В принципе — всё, но, во избежании ненужных эксцессов (типа затирания фьюзов, калибровочных констант и тому подобного), рекомендую также зайти в меню Command -> Program Options… и снять в открывшемся окне все галочки, кроме Write Program memory (FLASH) и Write Data memory (EEPROM) (по идее галочку напротив EEPROM тоже можно выключить, если вы в своих программах эту память не используете).

Для программирования фьюзов есть специальный пункт меню — Command -> Security and Configuration Bits… При нажатии на этот пункт меню открывается специальное окно, в котором можно читать фьюзы, редактировать их и заливать обратно в контроллер.

Выбрать нужную микросхему (сначала тип микросхем, а потом конкретную микруху) можно в выпадающих меню в правой верхней части или в меню Device.

Настройка PicPgm

  1. Заходим в меню Hardware -> Hardware Selection/Configuration…
  2. В открывшемся окне, в выпадающем меню Programmer Selection выбираем JDM Programmer. После этого становится доступной для редактирования область Pin Configuration. В этой области надо изменить номера пинов MCLR/Vpp с 3 на 0, PGM/Vdd с 0 на 3, а также установить галочку Invert напротив сигнала Data In. В завершении всего, нужно выбрать в выпадающем меню Programmer Connection com-порт, к которому будет подключаться программатор.
  3. Далее нужно нажать кнопку OK, после чего прога скажет: «Ай яй яй, вы изменили конфигурацию пинов, хотите сохранить эту конфигурацию или нет?». Жмём кнопку Да. Всё, на этом настройка завершена.

РадиоКот >Лаборатория >Цифровые устройства >

Теги статьи: ПрограмматорAVRДобавить тег

Доработка программатора HVProg.

Sema
Опубликовано 20.11.2008

За основу взят широко известный программатор HVProg (представляет собой «обрезанный» STK500) и соответствует ему по возможностям и списку поддерживаемых контроллеров. Плюсами HVProg является то, что STK500 очень популярен и поддерживается практически всеми производителями софта разработки ПО для AVR. Минусом его является довольно устаревший (для домашних PC) интерфейс RS-232 и необходимость использовать внешний источник питания. Минусы легко устраняются питанием программатора от USB, заменой MAX232 на FT232 (и ей подобные) и дополнением исходной схемы маломощным DC-DC преобразователем для формирования +12В (по этой цепи микроконтроллеры при программировании потребляют ток порядка 0,5 мА).
Именно это и было сделано. «Базовая» схема HVProg оставлена без изменений, в качестве преобразователя USB->RS-232 применена FT232BM как наиболее часто встречающаяся и дешевая (применение например FT232RL позволит сократить число деталей обвязки до минимума, для нее даже кварц не нужен, но стоит дороже и встречается реже), так же для уменьшения габаритов и упрощения печатной платы был исключен 10-ти контактный разъем для внутрисхемного программирования (все необходимые сигналы есть на 20-ти контактном разъеме, и все что надо, это сделать переходник). В качестве DC-DC преобразователя выбрана MC34063 тоже как наиболее распространенная и дешевая (применение MC34063 не очень оптимально из-за избыточной мощности и применения в ее обвязке дросселя — есть микросхемы реализующие повышение напряжения за счет переключаемых конденсаторов, но найти подобные в продаже не удалось, а стоимость распространенность и возможность точно настраивать выходное напряжение MC34063 перекрывает ее минусы).

Для программирования контроллера ATMega8535(L) понадобится любой AVR910 совместимый программатор (например программатор от Протоса) умеющий работать с AvrProg, входящей в состав AvrStudio (только AvrProg умеет открывать файл прошивки *.ebn). Файл прошивки STK500.ebn, лежит (если AvrStudio установлена по умолчанию) С:Program FilesAtmelAVR ToolsSTK500 STK500.ebn.
Альтернативный метод это поиск файла прошивки в формате *.hex или поиск конвертера форматов (и то и другое в Интернете есть, в частности на форуме, в ветке про параллельный программатор), и программировать пятью проводками

При использовании *.hex файла фьюзы придется выставлять руками, поэтому будьте готовы к тому что с первого раза программатор может не заработать. как показывает опыт (собственный в том числе), при повторении чужих конструкций именно с фьюзами связано 90% всех «глюков» и «уменянезаработалопомогите!!!».хорошее тому доказательство выше названный программатор от Протоса. сколько на форумах противоположных мнений: от «ВСЕ СУПЕР», до «НИЧЕГО НЕ РАБОТАЕТ, АВТОР НЕХОРОШИЙЧЕЛОВЕК», но если напрячь СВОЙ (это важный момент) мозг и вникнуть, то все становится понятно и начинает работать. (У меня программатор от Протоса работает отлично)

При программировании программатором от Протоса (мой случай) в конце программирования вылетает ошибка, ее можно проигнорировать, на работоспособности программатора это никак не скажется.
Программировать контроллер лучше прямо в схеме, установив перемычку J1 в положение 1 (положение 2 соответствует штатной работе программатора), подключившись к необходимым контактам 20-ти контактного разъема (к каким именно подробно расписывать не буду, так как если дело дошло до изготовления параллельного программатора то с этим проблем быть уже не должно).

Перемычка J2 служит для разрешения высоковольтного программирования. Кнопки SB1 и SB2 служат для сброса программируемого контроллера и для сброса всего программатора соответственно.
Детали:
В конструкции использованы детали для поверхостного монтажа. Резисторы и конденсаторы типоразмера 0805, микроконтроллер ATMega8535(L)-8(16)AU (в корпусе TQFP44), MC34063 в корпусе SO-8, 74HC165 в корпусе SO-16, дроссель намотан проводом диаметром ~0,3 мм, до заполнения каркаса сердечника, сердечник Ч13 из феррита 2000НМ, светодиоды диаметром 3 мм, кнопки обычные тактовые, кварцевые резонаторы в малогабаритных корпусах для «обычного» монтажа. Самовосстанавливающийся предохранитель на 100 мА (можно больше, максимум 500 мА), если короткие замыкания не предусматриваются то его допустимо заменить проволочной перемычкой.
Конструкция:
Все собрано на двухсторонней печатной плате размером ХХХ*ХХХ мм, на нижней стороне смонтированы кварцевые резонаторы, MC34063 и почти все детали ее обвязки. На верхней стороне смонтировано все остальное.
Сборка:
Собственно перед сборкой стоит обдумать последовательность установки деталей так как монтаж довольно плотный. Перемычки между сторонами платы естественно стоит установить в первую очередь. Во вторую очередь стоит установить детали DC-DC преобразователя и проверить напряжение на его выходе, должно быть 12,5 — 12,8 В. Если все в порядке то собирать дальше. При монтаже деталей поверхостного монтажа очень удобно пользоваться активными флюсами (не серной кислотой разумеется!!!: ) При применении активных флюсов после пайки необходимо тщательно промыть плату теплой водой+мыло_хозяйственное+мягкая_или_средней_жесткости_щетка (например зубная), а затем промыть спиртом. После промывки тщательно просушить (если под кварцевым резонатором останется вода или спирт, то генерации не будет).
Настройка:
При правильном монтаже и отсутствии замыканий настройки не требует.
Установка драйверов:
При первом подключении WINDOWS скажет, что найдено новое устройство, нужно будет указать папку «CDM 2.04.06 WHQL Certified» (которая получается из архива, что находится в конце статьи), результат установки: в системе появится очередной (у кого-то первый) COM — порт.
Работа с программатором:
Работа с программатором проста и очевидна, интерфейс зависит от софта, который Вы используете.
Далее приведен пример реализации адаптера для программатора.

На сегодня адаптер позволяет подключать следующие типы микроконтроллеров к программатору:
1. Семейство TINY: ATTiny11, ATTiny12, ATTiny13, ATTiny15, ATTiny22, ATTiny25, ATTiny45, ATTiny85, ATTiny24, ATTiny44, ATTiny84, ATTiny26, ATiny261, ATiny461 ATiny2313, ATiny28, ATiny48, ATiny88.
2. Семейство MEGA: ATmega8, ATmega48, ATmega88, ATmega168 ATmega16, ATmega163, ATmega164, ATmega32, ATmega323, ATmega324, ATmega644, ATmga1284, ATmega8535.
3. Семейство CLASSIC: AT90S2323, AT90S2343, , AT90S1200, AT90S2313, AT90S4433, AT90S8535.
Работа адаптера проверена с ATMega8, ATMega16, ATMega8535, ATTiny12, ATTiny15, ATTiny2313.

ВНИМАНИЕ!!! Распайка 20-ти контактного разъема не совпадает с таковым у HVProg, данный адаптер нельзя использовать с HVProg. Так же нельзя использовать адаптеры для HVProg с данным программатором.

Что можно (нужно) сделать еще: 1. Сделать переходник для ISP с 20-ти контактного разъема на 6-ти или 10-ти контактный (это нужно, и делается очень просто); 2. Гальваническую развязку с PC (это можно, но нужно ли? за лет примерно 5 работы с микроконтроллерами у меня ни разу не было с этим проблем, чего и всем желаю)

Файлы:
Платы в формате PCAD
Прошивка МК (файл STK500.ebn)
Драйвер для большого железного ящика с мозгами.

Вопросы, как обычно, складываем .

Как вам эта статья?

Заработало ли это устройство у вас?

39 4 0
13 3 0

Эти статьи вам тоже могут пригодиться:

Всем привет! Давненько ничего не писал, даже чувствую себя немного виноватым перед подписчиками, оправдываться не буду, так получилось 🙂

Вернуться решил с небольшой серией программаторов, из которых у меня готово 2 из 3, и потом планирую забабахать сравнение всех, что у меня есть. Начну сегодня с самого последнего, который я собрал буквально на днях и дожидался разрешения автора на размещение. И да, кстати, про паяльную станцию (если кто-то её еще до сих пор ждет) я не забыл, просто с деталями выходит уже несколько месяцев косяк за косяком. Ну да ладно, об этом я расскажу уже в посте о ней, если все наконец-то сложится.

Вернемся теперь к нашим баранам — программатору STK500. Обычный человек, мало знакомый с микроконтроллерами (дальше буду писать для сокращения м/к), может спросить — а на кой ляд мне ентот ваш высоковольтный программатор сдался? Я вообще своим USBasp программирую и в ус не дую! Все так, читатель, да не так. Приведу небольшую выдержку из документа, великолепно написанного некоим _abk_ c форума radiokot, очень доступно объясняющего, почему такая вещь в хозяйстве всегда пригодится (далее — прямая цитата из документа, который я для интересующихся приложу в архив со всем нужным для сборки, немного длинно, но стоит прочтения):

Что такое «параллельный» программатор, и зачем он нужен.

Следует напомнить, что в целом МК AVR поддерживают 3 режима программирования:

1. режим последовательного программирования по интерфейсу SPI (LVSP) – всем известный и применяемый в подавляющем количестве случаев, и позволяющий программировать впаянный чип прямо в плате (in system, ISP). Режим поддерживают, пожалуй, все существующие программаторы, начиная от «пяти проводков» до фирменного AVR ISP и самых «навороченных».

2. режим последовательного программирования при высоком напряжении (HVSP);

3. режим параллельного программирования при высоком напряжении, в котором (режиме) данные записываются и читаются побайтно по параллельной шине (HVPP).

Переключение МК во второй и третий режимы требует подачи управляющего «высокого» (+12В) напряжения на вывод Reset МК. Понятно, что в этих режимах программирование МК, уже впаянных в плату, требует принятия дополнительных мер для непопадания напряжения +12В в цепи на плате, присоединенные к выводу сброса. В случае параллельного режима понадобилось бы предусмотреть также подключение относительно большого числа выводов.

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

Когда же нельзя обойтись самым простым и удобным режимом последовательного программирования по интерфейсу SPI ?

Вообще говоря, таких случаев – два.

Первый: модель МК не поддерживает режим. Например, Tiny11 программируется только в режиме 2, а Tiny28 допускает исключительно параллельное программирование (режим 3).

Нас больше интересует случай

Второй, когда в результате ошибочного или умышленного конфигурирования контроллера при установке фьюзов отключается SPI или вывод Reset конфигурируется как вывод порта. После этого последовательное программирование по SPI становится невозможным и микроконтроллер «умирает». Теперь что-то изменить можно только в режимах 2 или 3 в зависимости от модели МК.

Теперь вернемся к самому программатору 🙂

Если вкратце, то таким программатором можно оживлять некоторые м/к, которые неправильно запрограммированы, и при этом еще и обычный режим он поддерживает на ура. Вот тут, если честно, я не уверен, может ли он починить все неправильно выставленные фьюзы или только те, что указаны в статье, но мои два с отключенным ISP он поднял, так что оставлю этот вопрос более знающим людям.

В своей статье я хотел бы подробно и с иллюстрациями рассказать про схему подключения и распиновку Arduino.

Ниже мы постараемся рассмотреть различные модели микроконтроллеров.

1. Плата Arduino Uno

Слово Uno переводится с итальянского языка, как «один». Устройство названо в связи с началом выпуска Arduino 1.0. Другими словами, Uno является эталонной моделью для всей платформы типа Arduino. Это последнее устройство в серии плат USB, доказавшее свою эффективность и проверенное временем.

Arduino Uno создано на микроконтроллере типа ATmega 328 (datasheet).

Его состав следующий:

  • количество цифровых входов и выходов составляет 14 (а шесть из них имеется возможность использовать как выходы ШИМ);
  • число аналоговых входов составляет шесть;
  • 16 МГц – кварцевый резонатор;
  • имеется разъём для питания;
  • есть разъём, предназначенный для ICSP-программирования внутри самой схемы;
  • присутствует кнопка для сброса.

Крайне важно отметить, что отличительной особенностью всех новых плат arduino является использование для интерфейсов USB–UART микроконтроллера типа ATmega 16U2 (или ATmega 8U2 в версиях R1, R2) вместо устаревшей микросхемы типа FTDI.

Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера.

Распиновка выглядит следующим образом:

  1. Последовательный интерфейс использует шины №0 (RX – получение данных), №1 (TX – передача данных).
  2. Для внешнего прерывания используются выводы №2, №3.
  3. Для ШИМ используются выводы за номерами 3,5, 6, 9, 10, 11. Функция analog Write обеспечивает разрешение в 8 бит.
  4. Связь посредством SPI: контакты №10 (SS), №11 (MOSI), №12 (MISO), №13 (SCK).
  5. Вывод №13 запитывает светодиод, который загорается при высоком потенциале.
  6. Uno оснащена 6 аналоговыми входами (A0 – A5), которые имеют разрешение в 10 бит.
  7. Для изменения верхнего предела напряжения используется вывод AREF (функция analog Reference).
  8. Связь I2C (TWI, библиотека Wire) осуществляется через выводы №4 (SDA), №5 (SCL).
  9. Вывод Reset – перезагрузка микроконтроллера.

1.1. Плата Arduino Uno R3 и её распиновка

Устройство построено на микроконтроллере АTmega16U2 и имеет повышенный уровень помехоустойчивости по цепи сброса.

Устройство отличается от предыдущей версии лишь тем, что в этом случае не используется интерфейс USB-UART FTDI при подключении к компьютеру. Эту задачу выполняет выполняет сам микроконтроллер ATmega 16U2.

Изменения распиновки платы выглядят следующим образом:

  1. Возле вывода AREF добавлены два пина: SDA, SCL.
  2. Возле пина RESET также добавлены два вывода: IOREF, позволяющий подключать платы расширения с подстройкой под необходимое напряжение; второй вывод не используется и находится в резерве.

2. Плата Arduino Mini

Является одной из самых простых и удобных устройств Arduino.

Используется микроконтроллер ATmega 168 с рабочим напряжением на 5 вольт с частотой в 16 МГц. Максимальное напряжение питания в моделях составляет 9 вольт. Значение максимального тока на выводах составляет 40 mA.

Плата содержит:

  • 14 цифровых выводов (из них 6 могут быть использованы в качестве ШИМ-выходов), могут применяться в качестве как входа, так и выхода;
  • 8 аналоговых входов (4 из них оснащены выводами);
  • 16 МГц – кварцевый генератор.

Пины устройства Arduino Mini имеют следующее предназначение:

  1. Два вывода, посредством которых осуществляется питание платы «плюс»: RAW, VCC.
  2. Вывод контакта «минус» – пин GND.
  3. Выводы под номерами 3, 5, 6, 9, 10, 11 используются для ШИМ при применении функции analog Write.
  4. К выводам №0, №1 можно подключать другие устройства.
  5. Аналоговые входы №0 – №3 с выводами.
  6. Аналоговые входы №4 – №7 не имеют выводов и требуют пайки при необходимости.
  7. Вывод AREF, который предназначен для изменения верхнего напряжения.
  8. Вывод Reset – перезагрузка микроконтроллера.

Расположение выводов в различных версиях arduino mini могут различаться.

3. Плата Arduino Mega 2560

Устройство Arduino Mega 2560 собрано на микроконтроллере ATmega 2560 (datasheet), является обновлённой версией Arduino Mega.

Для осуществления преобразования USB–UART-интерфейсов используется новый микроконтроллер ATmega 16U2 ( либо ATmega 8U2 для версий плат R1 или R2).

Состав платы следующий:

  • количество цифровых входов/выходов составляет 54 (15 из них можно использовать в роли выходов-ШИМ);
  • число аналоговых входов – 16;
  • реализация последовательных интерфейсов производится посредством 4 аппаратных приёмопередатчиков UART;
  • 16 МГц – кварцевый резонатор;
  • USB-разъём;
  • питающий разъём;
  • внутрисхемное программирование осуществляется через ICSP-разъём;
  • кнопка для сброса.

В устройстве Mega 2560 R2-версии добавлен специальный резистор, подтягивающий HWB-линию 8U2 к земле, что позволяет значительно упростить переход Arduino в DFU-режим, а также обновление прошивки. Версия R3 незначительно отличается от предыдущих. Изменения в устройстве следующие:

  • добавлены четыре вывода – SCL, SDA, IOREF (для осуществления совместимости по напряжению различных расширительных плат) и ещё один резервный вывод, пока не используемый;
  • повышена помехоустойчивость по цепи сброса;
  • увеличен объём памяти;
  • ATmega8U2 заменён на микроконтроллер ATmega16U2.

Выводы Arduino Mega 2560R3 предназначаются для следующего:

  1. Имеющиеся цифровые пины могут служить входом-выходом. Напряжение на них – 5 вольт. Каждый пин обладает подтягивающим резистором.
  2. Аналоговые входы не оснащены подтягивающими резисторами. Работа основана на применении функции analog Read.
  3. Количество выводов ШИМ составляет 15. Это цифровые выводы №2 – №13, №44 – №46. Использование ШИМ производится через функцию analog Write.
  4. Последовательный интерфейс: выводы Serial: №0 (rx), №1 (tx); выводы Serial1: №19 (rx), №18 (tx); выводы Serial2: №17 (rx), №16 (tx); выводы Serial3: №15 (rx), №14 (tx).
  5. Интерфейс SPI оборудован выводами №53 (SS), №51 (MOSI), №50 (MISO), №52 (SCK).
  6. Вывод №13 – встроенный светодиод.
  7. Пины для осуществления связи с подключаемыми устройствами: №20 (SDA), №21 (SCL).
  8. Для внешних прерываний (низкий уровень сигнала, другие изменения сигнала) используются выводы №2 , №3, №18, №19, №20, №21.
  9. Вывод AREF задействуется командой analog Reference и предназначается для регулирования опорного напряжения аналоговых входных пинов.
  10. Вывод Reset. Предназначен для формирования незначительного уровня (LOW), что приводит к перезагрузке устройства (кнопка сброса).

4. Плата Arduino Micro

Arduino Micro представляет собой устройство, основа которого построена на микроконтроллере ATmega 32u4, имеющем встроенный USB-контроллер. Это решение упрощает подключение платы к компьютеру, так как в системе устройство будет определяться как обычная клавиатура, мышь либо COM-порт. Состав устройства следующий:

  • количество входов/выходов – 20 (имеется возможность 7 из них использовать как ШИМ-выходы, а 12 – в роли входов аналогового типа); резонатор кварцевый, настроенный на 16 МГц;
  • micro-USB-разъём;
  • ICSP-разъём, предназначенный для проведения внутреннего программирования;
  • кнопка для сброса.

Все цифровые выводы изделия могут работать в качестве как входов, так и выходов благодаря наличию функций digital Read, pin Mode, digital Write. Напряжение на выводах составляет 5 вольт. Максимальная величина потребляемого или отдаваемого тока с одного вывода составляет 40 мА. Выводы сопрягаются с внутренними резисторами, которые по умолчанию находятся в отключенном состоянии. Они имеют номиналы в 20 кОм – 50 кОм. Отдельные выводы arduino micro, кроме основных, способны выполнять и ряд дополнительных функций:

  1. В последовательном интерфейсе выводы №0 (RX), №1 (TX) применяются для приёма (RX), а также передачи (TX) необходимых данных через встроенный аппаратный приёмопередатчик. Функция актуальна для arduino micro класса Serial. В других случаях связь осуществляется через соединение USB (CDC).
  2. Интерфейс TWI включает выводы микроконтроллера №2 (SDA) и №3 (SCL). Позволяют использовать данные библиотеки Wire.
  3. Выводы под номерами 0, 1, 2, 3 могут быть использованы в роли источников возникающих прерываний. К таковым относятся низкий уровень сигнала; прерывания по фронту, по спаду, при изменении уровня сигнала.
  4. Выводы под номерами 3, 5, 6, 9, 10, 11,13 при использовании функции analog Write способны выводить аналоговый ШИМ-сигнал в 8 бит.
  5. К SPI-интерфейсу относятся выводы на разъёме ICSP. Они не соединяются с цифровыми выводами на плате.
  6. Дополнительный вывод RX LED/SS, который соединён со светодиодом. Последний индицирует процесс по передаче данных с использованием USB. Этот вывод может быть использован при работе с интерфейсом SPI для вывода SS.
  7. Вывод №13 – светодиод, который включается при отправке данных HIGH и выключается при значениях LOW.
  8. Выводы A0 – A5 (отмечены на плате) и A6 – A11 (соответствуют цифровым выводам за номерами 4, 6, 8, 9, 10,12) являются аналоговыми.
  9. Вывод AREF позволяет изменять верхнее значение аналогового напряжения на вышеуказанных выводах. При этом используется функция analog Reference.
  10. С помощью вывода Reset формируется низкий уровень (LOW) и происходит перезагрузка микроконтроллера (кнопка сброса).

Распиновка платы

Распиновка (Pinout) платы показывает, какие пины за что отвечают. Микроконтроллер штука настолько универсальная, что большинство пинов имеют гораздо больше одной функции! Рассмотрим пины и интерфейсы платы на основе Arduino Nano, так как другие модели Ардуино имеют абсолютно точно такие же входы/выходы/интерфейсы, но просто в другом количестве.

GPIO

Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0–D13 и A0–A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.

Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.

GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…

Интерфейсы

Большинство GPIO имеют дополнительные возможности, так как к ним подключены выводы с других систем микроконтроллера, с ними вы уже знакомы из предыдущего урока:

  • ADC (АЦП, аналогово-цифровой преобразователь) – зелёные подписи ADC* на распиновке
  • UART (интерфейс связи) – голубые TXD и RXD на распиновке
  • Выводы таймеров, они же ШИМ пины – светло-фиолетовые OC*A и OC*B, где * номер таймера
  • SPI (интерфейс связи) – голубые SS, MOSI, MISO, SCK
  • I2C (интерфейс связи) – голубые SDA и SCL
  • INT (аппаратные прерывания) – розовые INT0 и INT1, а также PCINT* – PinChangeInterrupt

Если про интерфейсы мы уже говорили, то АЦП, прерывания и выводы таймеров ещё не затрагивали.

АЦП

ADC пины (с АЦП) помечены на плате буквой A. Да, пины A6 и A7 на плате Нано имеют только вход на АЦП и не являются GPIO пинами! АЦП – аналогово-цифровой преобразователь, позволяет измерять напряжение от 0 до VCC (напряжения питания МК) или опорного напряжения. На большинстве плат Ардуино разрядность АЦП составляет 10 бит (2^10 = 1024), что означает следующее: напряжение от 0 до опорного преобразуется в цифровую величину от 0 до 1023 (1024-1 так как отсчёт идёт с нуля). Опорное напряжение играет очень большую роль: при опорных 5V один шаг измерения АЦП составит 4.9 милливольта (0.00488 В), а при опорных 1.1В – 1.1 мВ (0.00107 В). Вся суть в точности, я думаю вы поняли. Если опорное напряжение установлено ниже напряжения питания МК, то оцифровывая напряжение выше опорного мы получим 1023. Подавая на АЦП напряжение выше 5.5 Вольт получим выгоревший порт. Подавать отрицательное напряжение также не рекомендуется. На ардуино есть несколько режимов опорного напряжения: оно может быть равно VCC (напряжению питания), 1.1V (от встроенного в МК стабилизатора) или получать значение с внешнего источника в пин Aref, таким образом можно настроить нужный диапазон и получить нужную точность. У других моделей Ардуино (например у Меги) есть и другие встроенные режимы. Опорное напряжение рекомендуется заводить на плату через резистор, например на 1 кОм. Для измерения напряжений выше 5.5 вольт необходимо использовать делитель напряжения на резисторах.

Таймеры (ШИМ)

Выводы таймеров: в микроконтроллере, помимо обычного вычислительного ядра, с которым мы работаем, находятся также “хардварные” счётчики, работающие параллельно со всем остальным железом. Эти счётчики также называют таймерами, хотя к таймерам они не имеют никакого отношения: счётчики буквально считают количество тиков, которые делает кварцевый генератор, задающий частоту работы для всей системы. Зная частоту генератора (обычно 16 МГц) можно с очень высокой точностью определять интервалы времени и делать что-то на этой основе. Какой нам прок от этих счётчиков? “Из коробки” под названием Arduino IDE мы имеем несколько готовых, основанных на таймерах инструментов (функции времени, задержек, измерения длин импульсов и другие).

В этой статье речь идёт о пинах и выходах, о них и поговорим: у каждого счётчика есть два выхода на GPIO. У нано (у МК ATmega328p) три счётчика, соответственно 6 выходов. Одной из возможностей счётчиков является генерация ШИМ сигнала, который и выводится на соответствующие GPIO. Для нано это D пины 5 и 6 (счётчик 0), 9 и 10 (таймер 1) и 3 и 11 (таймер 2). ШИМ сигналу посвящен отдельный урок, сейчас просто запомним, что с его помощью можно управлять яркостью светодиодов, скоростью вращения моторчиков, мощностью нагрева спиралей и многим другим. Но нужно помнить, что ограничение по току в 40 мА никуда не делось и питать от пинов ничего мощнее светодиодов нельзя.

Прерывания

Аппаратные прерывания позволяют процессору мгновенно переключаться на некий блок действий (функция обработчик прерывания) при изменении уровня сигнала на пине. Подробнее об этом, а также о PinChangeInterrupts поговорим в другом уроке.

Другие пины

  • Пин 3.3V может быть использован для питания маломощных датчиков и модулей: максимальный ток, который можно снять с пина 3.3V составляет 150 мА, что с головой хватает для любых датчиков и модулей, кроме пожалуй радиомодулей nrf25L01.
  • Пины GND – земля питания, все GND связаны между собой
  • Пин 5V – питание от источника с напряжением до 5.5V (подробнее о питании смотри в следующем уроке)
  • Пин Vin – питание от источника с напряжением 7-15V (подробнее о питании смотри в следующем уроке)
  • RST – перезагрузка МК. Также этот пин выведен на кнопку

Важные страницы

  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх