» » USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR

 
 
 

USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR

Категория: Микроконтроллеры
Разместил: error, просмотров: 23413

12 Иметь дело с микроконтроллерами (как и вообще с цифровой техникой) мне приходится довольно редко и если мне надо было прошить микроконтроллер, я просто просил на работе ближайшего «софтверщика» и через 10 минут получал ожидаемое. Но зависимость от других не давала покоя и я решил сделать собственный программатор.
USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR

Тернистыми тропами выбора...

Прежде всего, я определился, что обычного ISP (In-circuit Programming) SPI (Serial Peripheral Interface)-программатора мне хватит с головой даже с заделом на обозримое будущее. Недостатков у последовательных внутрисхемных программаторов всего два. Во-первых, это более низкая скорость прошивания, хотя в большинстве случаев реально несущественно будет ли проц шиться 20 секунд или 2 секунды, разве что если вы не собираетесь наладить себе мануфактуринг. Во-вторых, это опасность заблокировать процессор неправильной установкой битов конфигурации (фьюзов), или случайно вообще отключить режим ISP, или переназначить вывод RESET на что-то другое (в некоторых младших моделях этот вывод бывает совмещённым с портом). Что ж, придётся быть внимательным. Тем не менее «вылечить» заблокированный таким образом проц можно с помощью т.н. параллельного высоковольтного программирования или с помощью JTAG. Оба варианта для домашнего использования востребованными обычно не являются, а вот стоят довольно-таки дороговато. У меня же на работе данные девайсы имеются, поэтому «если что», ситуацию могу исправить там.
Да, ещё одно преимущество ISP-программирования для рядового любителя — программируемый процессор может оставаться впаянным в устройство, т.е. нет необходимости его вынимать и переставлять в программатор.

Итак, однозначно ISP

Однако и тут я набрёл на развилку. «Простые» ISP-программаторы довольно капризны в работе. Дело в том, что они требуют прямого доступа к порту (т.н. bitbang-mode) и часто нестабильно работают на современных компьютерах. В качестве «классики» можно привести программатор STK200/300 для LPT-порта и программатор Громова для COM-порта, содержащих всего несколько резисторов. Возникает резонный вопрос: раз контроллер должен подключаться по SPI-протоколу, как это может работать от LPT/COM? А вот это и есть суть битбанг-режима, когда мы, получив прямой доступ к регистрам порта, произвольно управляем состоянием на его пинах. Таким образом, на LPT/COM-портах можно реализовать какой угодно протокол, в разумных пределах, конечно. В нашем же случае реализовывается протокол ISP; на пинах портов формируются сигналы CLK, MOSI, MISO.
USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR

Очевидно, что такой режим является принципиально ненормальным для порта, да и WinXP не приветствует прямой к его регистрам. Именно поэтому для работы с такими программаторами часто рекомендуют компьютеры на основе P-III под управлением Windows98.
Ещё один камень в огород «резисторных» программаторов — потенциальная возможность сжечь порт вследствие отсутствия гальванической развязки с контроллером, который в данный момент находится в устройстве, имеющем свой блок питания (в момент программирования ему тоже требуется питание, а где ж оно возьмётся на LPT/COM?).

Для обхода этого недостатка, было придумано множество модификаций подобных программаторов с добавлением транзисторных ключей, оптронов, буферов (в т.ч. МАХ232) и т.д. вплоть до абсурда; некоторые из них можно было назвать «простыми» только с натяжкой. Да и проблемы зависимости от быстродействия компьютера и с прямым доступом к порту они не решают.
И наконец, LPT/COM-порты постепенно уходят в небытиё. Казалось бы, USB-COM переходник решит проблему, ан нет, не все переходники обеспечивают даже полный СОМ, не говоря уже о битбанге.

Однажды на работе мне попался в руки нерабочий USB-COM переходник, который при жизни однозначно обеспечивал полный СОМ. Расковыряв его, разобрав на корпусе одной из двух микросхем FT232 и ознакомившись с её даташитом я выяснил, что данная микросхема поддерживает и битбанг. Продолжив поиски в Интернете, я обнаружил, что на этом чипе люди действительно делают также и великолепные USB ISP программаторы, свободные от недостатков простейших. Подключил к USB, установил драйверы (перезагрузка не требуется) и вперёд.

Что же касается сложности схемы, так она выходит ещё и проще чем некоторые «усовершенствованные резисторные». Немного может отпугнуть её цена (ок. $10), но за всё хорошее надо платить (для сравнения готовый USB-COM переходник на её же основе стоит порядка $70).

В принципе, схема подключения может быть и стандартной из даташита, но у такого подключения будет один недостаток. После программирования микроконтроллер должен быть отключён от программатора, для чего достаточно просто отсоединить ISP-кабель. Для тех, кому данный способ представляется неудобным, на сайте DI HALT’а было предложено гениально-простое решение добавить к микросхеме буфер 74НС244 с «третьим состоянием» выходов, который по сигналу OE (Output Enable) отключит контроллер от программатора. Ну и в случае неправильного подключения пусть лучше выгорит копеечный буфер, чем FTDI.

Схема

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

Несколько слов о ней. Питание программатор берёт с USB и им же питает программируемый контроллер через джампер JP3. При разомкнутом джампере контроллер может питаться от собственного блока питания.

При неправильной установке фьюзов контроллеру может понадобиться внешний генератор тактовой частоты. Её нам поможет получить всё та же FT232, этот сигнал выведен на джампер JP2. Ну и раз UART-интерфейс на микросхеме присутствует принципиально, выведем и его на JP1.

Микросхема используется в режиме битбанга, т.е. программно мы произвольно управляем состоянием её выходов, а это значит, что нам без разницы какой вывод будет сигналом MISO или MOSI; это же касается остальных выводов. Иными словами, мы можем совершенно произвольно завести выводы микросхемы на ISP-коннектор, а потом сконфигурировать всё программно.

Последнее обстоятельство нам позволяет красиво развести плату (без двух перемычек в виде нулевых резисторов, правда, не обошлось). Поскольку все коннекторы расположены на верхней стороне платы, я поставил обычные светодиоды вместо SMD, иначе снизу их не видно. Получилось вот так (варианты с заливкой землёй и без):
Этот фрагмент исключен из ознакомительной версии статьи.
Полные версии статей доступны только членам сообщества. Пожалуйста, ознакомьтесь с условиями участия.


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


Запаиваем детальки:
USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR


Остаётся лишь изготовить ISP-кабелёк для внутрисхемного программирования. Их есть два стандартных варианта:
USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR


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

И всё в сборе:
USB-швейная машина на FT232RL: программатор для микроконтроллеров AVR


Драйверы

С установкой драйверов проблем не возникло. Скачать их можно у производителя микросхемы на ftdichip.com. Рекомендуются драйвера D2XX Direct Drivers.
Для программирования осваиваю консольную утилиту avrdude, для которой, впрочем, в сети можно найти GUI на свой вкус.

Файлы

В архиве прилагаю схему и ПП в Eagle CAD. Шейте на здоровье!
Для снижения нагрузки на наш сервер, файл доступен только членам сообщества.
Пожалуйста, ознакомьтесь с условиями участия.


ПП в Sprint Layout, подготовлена Юрой (Yura_Zayets_Vol)
Для снижения нагрузки на наш сервер, файл доступен только членам сообщества.
Пожалуйста, ознакомьтесь с условиями участия.

Категория: Микроконтроллеры

Поделись с друзьями!


Связанные материалы:


USB адаптер для чтения и программирования цифровых термостатов MAXIM/DALLAS DS1821 USB адаптер для чтения и программирования цифровых термостатов MAXIM/DALLAS DS1821
В статье описано, как за час сделать простой USB-адаптер для...
Сделай сам программатор PIC-микроконтроллеров PICkit-2 clone Сделай сам программатор PIC-микроконтроллеров PICkit-2 clone
Как я уже упомянул в предыдущей статье «Сделай сам...
Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования Знакомьтесь: Flowcode. Программирование для AVR и PIC без программирования
Здравствуйте, друзья! В данной статье я хочу рассказать о своих...
Сделай сам программатор для микросхем памяти AT24C02 - AT24C512. Считываем и записываем данные! Сделай сам программатор для микросхем памяти AT24C02 - AT24C512. Считываем и записываем данные!
Как-то при ремонте откатных ворот итальянской фирмы LIFE понадобилось...
Программатор AVR910: перезагрузка! Ускорение работы + «превращение» в STK500 Программатор AVR910: перезагрузка! Ускорение работы + «превращение» в STK500
Сегодня я не лег спать. Включил фоном какую-то киношку с Джеки Чаном...
Программатор JTAGICE 3. Что внутри? Программатор JTAGICE 3. Что внутри?
Совершенно случайно попался мне в руки программатор JTAGICE3,...
Счётчик витков для намоточного станка на ATtiny13 Счётчик витков для намоточного станка на ATtiny13
Случилось так, что припекло мне трансформатор мотать, всё бы хорошо,...
Грызем микроконтроллеры. Урок заключительный. Прошивка. Грызем микроконтроллеры. Урок заключительный. Прошивка.
Ну вот, писать программы для микроконтроллеров мы научились....
Миниатюрный полный USB-RS232 адаптер на CP-2102 для подключения микроконтроллера к компьютеру по USB Миниатюрный полный USB-RS232 адаптер на CP-2102 для подключения микроконтроллера к компьютеру по USB
В продолжение к теме «Программатор AVR910», про маленькое устройство,...
Программатор AVR-910-slim для контроллеров ATMEL + Code Vision Программатор AVR-910-slim для контроллеров ATMEL + Code Vision
Прочитав на Датагоре статью Гунтиса о программаторе AVR 910, задумал...
Программатор для ATMEL AVR-910 по USB Программатор для ATMEL AVR-910 по USB
Представлю Вам мой вариант печатной платы для сборки такого...
Программирование микроконтроллеров ATmega Программирование микроконтроллеров ATmega
Хеллоу ВСЕМ!!! Итак, как я и обещал, расскажу как залить программу в...

Комментарии:


<
  • Гражданин
14 октября 2011 13:30

Вадим / vadeg

  • Регистрация: 14.01.2012
  • Публикаций: 0
  • Комментариев: 28
 
Классная цацка получилась! Давно на нее облизываюсь, но останавливает изготовление платы в домашних условиях под SSOP. А так из доступных программаторов этот, имхо - самый стабильный и предсказуемый. Пробовал я USB ASP, AVR910 - все они через раз работают, особенно плохо с ноутбуками. Потому что софтовое USB. Правда в Win7 все равно с ними было проще, чем с "пятью проводками".
Радует, что в исполнении программатора FTDI не нужен внешний еепром и кварц.
И еще, раз работает через "дудку", наверняка и линуксоиды могут его юзать.

<
  • Кандидат
14 октября 2011 19:46

Михаил / Dust112

  • Регистрация: 22.05.2011
  • Публикаций: 1
  • Комментариев: 14
 
А я такой сделал, аналог MMusb232RL.

<
  • Гражданин
16 октября 2011 03:20

Алексей / alex

  • Регистрация: 8.01.2012
  • Публикаций: 4
  • Комментариев: 58
 
А где проводок, который восстанавливает ушатанный фьюзами МК? Обычно нечайно частоту не ту ставят и всё, МК можно выкинуть. Так вот этот проводок и восстанавливает.

А так супер! Особенно изготовление платы. По-началу думал ЛУТом сделана, удивился.
Оказалось, индустрия работала. smile

<
  • Гражданин
16 октября 2011 20:39

Андрей / error

  • Регистрация: 4.01.2009
  • Публикаций: 2
  • Комментариев: 26
 
vadeg, Вы совершенно правы - под Линуксом "дудка" тоже работает.

Что же касается изготовления платы - ЛУТом такую приготовить тоже можно, я делал. Эту отдавал на производство "за компанию" с другом, чтоб заполнить пустое пространство на большой плате. Как вариант, видел в продаже "переходники" SOIC->DIP, с их помощью можно изготовить на макетке.

alex, в "спасительном проводке" пока не было нужды. При неправильной установке фьюзов проц выкидывать не надо, если есть доступ к параллельному программатору, его можно "воскресить".

<
  • Гражданин
20 января 2012 18:25

Андрей / End_reW

  • Регистрация: 16.02.2009
  • Публикаций: 0
  • Комментариев: 9
 
Очень жаль что в статье не описано как сконфигурировать программу. Собрал сей программатор, а как заставить его работать не могу разобраться.

<
  • Создатель
20 января 2012 22:32

Игорь / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 234
  • Комментариев: 1214
 
Цитата: End_reW
как сконфигурировать программу

О какой программе речь?

<
  • Гражданин
21 января 2012 02:07

Андрей / End_reW

  • Регистрация: 16.02.2009
  • Публикаций: 0
  • Комментариев: 9
 
"Для программирования осваиваю консольную утилиту avrdude, для которой, впрочем, в сети можно найти GUI на свой вкус."

"Микросхема используется в режиме битбанга, т.е. программно мы произвольно управляем состоянием её выходов, а это значит, что нам без разницы какой вывод будет сигналом MISO или MOSI; это же касается остальных выводов. Иными словами, мы можем совершенно произвольно завести выводы микросхемы на ISP-коннектор, а потом сконфигурировать всё программно."

Надо (я так понимаю) дать понять программе какой вывод микросхемы за что отвечает. Где и как это делается пока не ясно?

Обнаружилась ошибка в статье:
"При неправильной установке фьюзов контроллеру может понадобиться внешний генератор тактовой частоты. Её нам поможет получить всё та же FT232, этот сигнал выведен на джампер JP2. Ну и раз UART-интерфейс на микросхеме присутствует принципиально, выведем и его на JP1." -правильно: JP1-Clock, JP2-UART!(как в схеме)

Дак вот об этом тактовом сигнале. Чтобы его получить на этом выводе, микросхему надо настроить. Делается это утилитой FT PROG от производителя.

Пока разбираюсь....

<
  • Гражданин
21 января 2012 14:43

Андрей / End_reW

  • Регистрация: 16.02.2009
  • Публикаций: 0
  • Комментариев: 9
 
Решено. Если комуто еще нужно, то могу сделать дополнение к статье.

<
  • Гражданин
21 марта 2012 23:05

Александр / boroda76

  • Регистрация: 27.08.2009
  • Публикаций: 0
  • Комментариев: 11
 
А можно печатку не в "Орле"?

<
  • Создатель
22 марта 2012 13:42

Игорь / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 234
  • Комментариев: 1214
 
Александр, легко! Нарисуйте - и будет.
Заодно с нами поделитесь.
smile

<
  • Гражданин
23 марта 2012 18:55

Юра / Yura_Zayets_Vol

  • Регистрация: 17.05.2009
  • Публикаций: 0
  • Комментариев: 12
 
Всем привет... Я сделал в SL 5.0 куда залить?

<
  • Создатель
3 апреля 2012 20:18

Игорь / Datagor

  • Регистрация: 25.02.2011
  • Публикаций: 234
  • Комментариев: 1214
 
Юра, спасибо!
ПП в статью добавил.

Оцени статью:
  • 80

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.



 
nrn