Site Loader

Делаем COM программатор для AVR микроконтроллеров. — GetChip.net

Еще одним несложным, в плане изготовления, является COM программатор. При условии использования альтернативного режима COM порта Bitbang, отпадает необходимость в преобразовании интерфейса RS232 COM порта в SPI, необходимый для программирования. Остается только привести уровни сигналов COM порта (-12В, +12В) к необходимым (0, +5В). Это и делает
схема COM программатора для AVR микроконтроллеров:

Данная схема программатора достаточно распространена и известна как программатор Громова. Название пошло от автора программы Algorithm Builder Геннадия Громова, который и предложил такую схему.

Чтобы собрать программатор Громова нам нужно следующее:

Диоды КД522, КД510, 1N4148 или им подобные. Резисторы можно использовать любые, какие найдете. В качестве шлейфа можно использовать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать разъемы BLS «мамы» на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компа — именно их я и взял) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Собрать COM программатор не составит труда:

Я сознательно не даю печатной платы под этот программатор, так как схема проста и возня с разводкой и травлением платы просто себя не оправдывает.

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

Общие рекомендации:

— Так как режим Bitbang нестандартный для COM порта компьютера, то возможны сбои в работе (хотя у меня такого не было). Особенно это касается ноутбуков. Как вариант решения этой проблемы можно рекомендовать «поиграться» настройками COM порта (скорость, биты данных, варианты управления потоком, величины буфера …).
— Отдельный разъем для «земли» желательно подключить первым, чтобы уравнять потенциалы «земли» программируемого устройства и компьютера. Для тех, кто не знает, если у Вас компьютер включен в обычную розетку, без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В.

Заключение:

— COM программатор Громова простой и надежный. Я не перестал пользоваться им даже собрав USB программатор (если какой либо микроконтроллер перестает программироваться USB программатором я обязательно перепроверю его на программаторе Громова).
— Так как программатор Громова собран на пассивных элементах он не требует для себя питания. Мало того, из-за паразитного питания, микроконтроллер можно запрограммировать вообще не подключая к нему источника питания! Хотя так программировать я не рекомендую, но сам факт интересен.
— Для пользователей Algorithm Builder есть приятный бонус! Этот программатор можно использовать для внутрисхемной отладки кристалла (программный JTAG).

Ссылки:
Сайт Геннадия Громова, автора Algorithm Builder

(Visited 114 080 times, 19 visits today)

Инженерный USB программатор как инструмент для разработки электроники

Описание, задачи и выбор инженерного универсального USB программатора предназначенного для программирования микроконтроллеров

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

Что такое и как выбрать USB программатор?

Мы постараемся ответить на эти вопросы. Универсальный инженерный USB программатор – это устройство, которое применяется для занесения необходимой информации в постоянное запоминающее устройство или микроконтроллер. Кроме функций записи USB программатор выполняет функции стирания и считывания информации из микросхемы.

Рис 1. Внешний вид USB программатора

Кроме стандартных режимов чтения и записи, многие универсальные USB контроллеры имеют функции защиты от чтения, программирования или стирания.

Функциональные особенности

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

  • Интерфейс, который позволяет осуществлять ввод и вывод информации, которая считывается и программируется;
  • Колодку, которая будет вмещать нужную микросхему. Благодаря которой должен производится надежный контакт с выводами микросхемы;
  • Аппаратные драйвера, которые позволят формировать и считывать логические уровни и сложные тактовые сигналы.

Для полноценного выполнения своих функциональных задач, а также чтобы быть незаменимым инструментом инженера электронщика, универсальный инженерный USB программатор должен как минимум поддерживать следующие интерфейсы обмена – SPI, I2C, 1-Wire, RS-485, RS-422, RS-232.

Технические преимущества USB программаторов

  • Возможность использования USB интерфейса;
  • Высокая скорость программирования;
  • Не требует источника внешнего питания;
  • Поддерживает различные форматы файлов;
  • Осуществляется поддержка всех семейств IC (EEPROM, SPI NOR / NAND Flash, параллельная NOR / NAND Flash, микроконтроллеры eMMC / eMCP, CPLD, FPGA и т. д.) и корпусов микросхем (DIP, SOP, SSOP, TSOP, PLCC, QFN, LQFP, BGA и т.д.).

Типы USB программаторов

Если вы собираетесь купить универсальное устройство для записи микросхем, тогда вам будет нелишним узнать о многообразии инженерных USB программаторов, которые существуют на рынке.
Инженерный USB программатор в зависимости от выполняемых задач может быть выполнен как:

  • Узкоспециализированные программаторы.  Такие устройства поддерживают микросхемы только определенного типа или производителя и не могут использоваться с чем-то другим;
  • Условно универсальные программаторы. Способны программировать микросхемы разного типа и производителей;
  • Универсальный инженерный программатор. Это устройства, которые программируют и поддерживают микросхемы абсолютно всех фирм и типов. Одним из примеров такого программатора является Terratel-USB программатор.

Как выбрать инженерный USB программатор

В зависимости от решаемых задач разработчик электронного оборудования сам определяет тип необходимого USB программатора.

Конечно же, чем более универсальный USB программатор, тем он имеет сложную аппаратную реализацию.

Чтобы разработать и изготовить программатор для одной микросхемы, часто достаточно нескольких аппаратных элементов, разъемов и соединений. А вот создать универсальный инженерный программатор гораздо сложнее. Его необходимо разрабатывать на базе универсальных аппаратных драйверов, которые подводят к выводам сокеты и их задача заключается в реализации и обеспечении:

  • подачи сложных временных сигналов в широком диапазоне частот;
  • подачу и считывание логических уровней;
  • подачу напряжения и с заданной точностью.

Универсальный программатор должен иметь драйвера для программирования как можно большого типа микроконтроллеров. Пример универсального инженерного устройства вы можете увидеть в Террател USB программаторе.

Микроконтроллер

— Какие существуют варианты программирования микроконтроллеров в производстве?

\$\начало группы\$

Для моего проекта Super OSD мне нужно будет программировать большие партии микроконтроллеров, примерно 10-15 плат в час. Я мог бы просто использовать свой верный PICkit 2 для их программирования (их два, а то и три на каждой плате), но было бы очень трудоемко загружать каждый файл (размером до 128 КБ и 256 КБ), запускать программу и повторять для каждого.

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

Итак, какие существуют варианты массового программирования микроконтроллеров — есть ли более быстрые способы сделать это? Мой бюджет составляет менее 100 долларов США, поэтому такие вещи, как MPLAB PM3 от Microchip за 895 долларов США, хотя и хороши, но не вариант.

Имею дело с микроконтроллерами PIC различных типов. Есть PIC16F887, PIC24FJ64GA002 и dsPIC33FJ128GP802. Однако меня также интересуют варианты для процессоров AT32 и STM32, так как я тоже могу их использовать.

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

  • микроконтроллер
  • программатор

\$\конечная группа\$

3

\$\начало группы\$

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

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

Все это делается с помощью программы на ПК, которая требует от оператора только подключения платы, нажатия одной кнопки и ожидания результата PASS/FAIL. Все результаты тестирования (включая показания АЦП) протоколируются. Весь процесс (включая программирование PIC с помощью ICD 3) контролируется с помощью программы для ПК, которая запускает пакетные сценарии для фактического программирования. Связь с PIC для управления тестами осуществляется через один из UART, контакты которого выведены на тестовую плату (поэтому в дополнение к контактам, необходимым для программирования, у нас также есть как минимум TX/RX).

Мы установили несколько таких станций у нашего контрактного производителя.

Кстати, ICD 3 на намного на быстрее, чем ICD 2 (USB 2.0 против 1.1).

\$\конечная группа\$

4

\$\начало группы\$

Возьмите пикит 3 и включите его в режим программатора.

Вы говорите, что хотите, чтобы программатор перешел в режим, и вы загружаете свой ПЗУ, тогда вам больше не нужен USB-порт для чего-то большего, чем питание (да, он вам все еще нужен для питания).

Когда вы подключаетесь к устройствам, вы нажимаете кнопку программы, и она загружает программу и сообщает вам, когда это будет сделано, занимает менее 20 секунд на доску. Стоимость не более 50$

\$\конечная группа\$

\$\начало группы\$

PICkit 2 не является программным продуктом. Вам действительно нужно получить ICD 3, который классифицируется как производственный программатор, если вы хотите быть уверены, что устройства программируются правильно. В качестве альтернативы вы можете купить предварительно запрограммированные чипы у Microchip или у дистрибьютора, если у вас есть завершенный код.

\$\конечная группа\$

3

\$\начало группы\$

Программирование микроконтроллера обычно является небольшой частью более крупного процесса функционального тестирования. Какова остальная часть вашего плана тестирования?

Для любого нетривиального продукта вам потребуется разработать еще одну плату для тестирования платы в процессе производства. Как правило, тестовая плата будет иметь компьютерный интерфейс и будет соединять цель с тестовым оборудованием с возможностями RS-232 или GPIB. Затем компьютер может выполнить сценарий, программируя плату, а затем запуская любые подходящие тесты.

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

Началом вашей тестовой платы, вероятно, является схема PICkit 2. Прошивка с открытым исходным кодом, она позаботится о части программирования, у нее есть удобный загрузчик, и вы можете расширить ее, чтобы делать все, что потребуется для вашего функционального теста.

Мне нравится писать сценарии производственного тестирования на Python, но я думаю, что отраслевым стандартом является Labview.

\$\конечная группа\$

1

\$\начало группы\$

Один из способов, который вы можете использовать, — это сделать зажим или что-то вроде испытательного стенда (пример видео) с подвижными контактами, чтобы вам не нужно было припаивать контакты для разъемов для программирования. Коннектор на краю печатной платы, такой как кабель для гибкого диска старого образца, может быть более дешевым вариантом (но требует больше места на плате).

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

Эти методы также применимы для других внутрисистемно программируемых контроллеров, хотя контроллеры, поддерживающие JTAG, могут сделать это еще проще, поскольку JTAG TAP предназначен для объединения в цепочку, поэтому программатор не будет перемещаться от чипа к чипу. Кроме того, для таких микросхем, как AVR, которые могут использовать обычные логические уровни для программирования, переключение может стать проще.

\$\конечная группа\$

2

\$\начало группы\$

Существует утилита командной строки под названием PK2CMD для Windows и Linux, которая позволяет программировать PIC с помощью PicKit (поэтому вам не нужно использовать MPLAB или какой-либо другой графический интерфейс). Вы можете использовать свой любимый язык сценариев, чтобы создать небольшую программу, которая запускает правильную команду PK2CMD при нажатии клавиши. Это сделает компьютерную часть вашего производства менее трудоемкой (всего 1 нажатие клавиши на MCU), но вам все равно понадобится способ подключения PicKit к каждому из ваших 3 MCU.

\$\конечная группа\$

\$\начало группы\$

Услуги программирования Microchip очень дешевые, когда я пользовался ими в прошлый раз. Если вы покроете стоимость установки, это будет очень дешево — пенни за чип для 12F — не смотрел на более дорогие. Они также могут делать маркировку / маркировку и т. Д. Даже если вы намерены изменить FW, предварительно запрограммированный загрузчик может упростить эту задачу.

Для производственного программиста мне нравится Asix Presto — масса возможностей для таких вещей, как сериализация, и очень быстро

\$\конечная группа\$

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Arduino против автономного программирования микроконтроллера

спросил

Изменено 10 лет, 2 месяца назад

Просмотрено 17 тысяч раз

\$\начало группы\$

Arduino отлично подходит для программирования и использования. Но если мне нужно изготовить автономный микроконтроллер (например, в случае производства устройства), я думаю, мне нужно знать программирование PIC, язык C, набор программаторов и т. д.

1) Arduino не использует C.

2) Используя плату Arduino, я не могу программировать никакие PIC-микроконтроллеры

Мой вопрос в том, что если я делаю устройство и не могу использовать Arduino для конечной цели, значит ли это, что я также должны изучить программирование PIC и многие другие аспекты? Arduino предназначен только для тестирования ваших идей, а не для их реализации в качестве самостоятельного использования?

  • ардуино

\$\конечная группа\$

6

\$\начало группы\$

Вы можете использовать микроконтроллер AVR в своем продукте для запуска кода, который вы разрабатываете на плате разработки Arduino.

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

На этой странице с веб-сайта Arduino описывается, как создать чистую микросхему и кристалл контроллера AVR и загрузить в него программу Arduino.

\$\конечная группа\$

\$\начало группы\$

Фактические аппаратные периферийные устройства, необходимые для создания Arduino, весьма минимальны. Черт возьми, их даже можно припаять прямо к чипу, если хотите:

На самом деле разница заключается в программном обеспечении. При программировании непосредственно на C или даже на ассемблере вы можете добиться большей производительности при меньшем объеме программы, что позволит вам использовать меньший AVR в производстве.

\$\конечная группа\$

6

\$\начало группы\$

Когда вы программируете Arduino, вы фактически программируете подмножество C++. AVR-GCC — это компилятор, включенный в приложение Arduino для компиляции вашего кода. То, что предоставляет среда Arduino, — это хороший уровень аппаратной абстракции, облегчающий работу по преодолению сложностей программирования микроконтроллеров. Вы можете сосредоточиться на функциональности своего кода, а библиотеки Arduino справляются с низкоуровневыми вещами.

Это происходит за счет производительности. Уровень абстракции Arduino может занять в 10-20 раз больше времени для некоторых вещей, чем просто непосредственная работа с регистрами микроконтроллера. Однако это не беспокоит большинство людей, если только они не пытаются выполнять очень сложные проекты с интенсивным использованием процессора.

\$\конечная группа\$

1

\$\начало группы\$

Вам не нужно знать программирование PIC, если только вы не хотите использовать микроконтроллер PIC. Микроконтроллеры Atmel AVR, которые используются на платах Arduino, в целом аналогичны PIC в плане пригодности для использования в реальном промышленном устройстве.

Микроконтроллер AVR, запрограммированный с помощью эскиза Arduino, можно использовать в «производственном устройстве». Этот микроконтроллер не обязательно должен находиться на плате Arduino — он может быть просто частью вашего устройства.

\$\конечная группа\$

\$\начало группы\$

Это зависит. Конечно, вы можете использовать Arduino в коммерческом устройстве. Это особенно полезно, если вы собираетесь производить только одно или два таких устройства, а заказчика не смущают стоимость и размер Arduino.

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

Обучение использованию микроконтроллера действительно того стоит, если вы собираетесь зарабатывать на жизнь в этой области. Однако вам не нужно сразу переходить к C. Почему бы не попробовать систему PICAXE. Вы можете использовать микроконтроллер PIC, но запрограммировать его на BASIC.

\$\конечная группа\$

\$\начало группы\$

Если вы хотите изготовить устройство на микроконтроллере, вы можете сделать это на микроконтроллере AVR, микроконтроллере PIC или посмотреть на ARM.

Простые микроконтроллеры AVR обычно не имеют возможности USB-подключения, вам понадобится специальное устройство для его программирования, но есть некоторые устройства ARM (семейство NXP LPC1343 или LPC17**), которые поставляются со встроенным USB и Ethernet. Нужен только разъем usb и пара резисторов.

Вам нужно будет изучить программирование на C, чтобы запрограммировать это, но уже есть библиотеки, которые делают это почти так же просто, как Arduino — http://microbuilder.eu и http://www.universalair.co.uk/forebrain иметь платы разработки на базе ARM и программные стеки. Я действительно рекомендую вам поискать примеры переднего мозга.

\$\конечная группа\$

1

\$\начало группы\$

С учетом нескольких факторов LPC1343 (Olimex LPC P1343) и LPC1769(NXP OM13000) — это то, на что вы, возможно, захотите взглянуть.

  • Они основаны на основной архитектуре ARM. (В том смысле, что ARM является одной из двух стандартных/основных RISC-архитектур — MIPS и ARM).
  • Они используют стандартную 32-битную цепочку инструментов C.
  • LPC17xx имеет встроенный MPU, поэтому вы можете загрузить его с помощью uCLinux или другой ОС на основе защиты.

alexxlab

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

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