Изобретаем новый велосипед: USB программатор для AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Руки чешутся что-нибудь изобретать, а для серьёзного дела пока не хватает финансов. Ну что же, разомнёмся по мелочам :)

Прочитав статью http://easyelectronics.ru/skorostnoj-av ... llera.html решил сообразить себе такой программатор, но немного модернизировав. Во-первых, использовать FT232 по прямому назначению - как преобразователь USB-UART, а всю логику организовать на вспомогательном контроллере. Сам же этот контроллер будет программироваться при необходимости описанным в статье способом.

Пока не вдаваясь в подробности протоколов прошивки решил просто добавить автоматический режим, когда выходы SPI отсекаются от схемы, оставив при этом ручной. МК тут является просто буфером, и гонит через себя данные, тем самым анализируя линию SCK и отсекая/подключая выходы при необходимости. Так же на нём индикация режима и опрос кнопок...

Заготовка прошивки готова, осталось запрограммировать логику режимов - их четыре:
"RUN" - выводы SPI на программируемое устройство отсечены. Оно работает само по себе
"PROG" - RESET пациента зажат, SPI подключеы к схеме, пока нет сигнала SCK с FT232 идёт опрос кнопок. Как сигнал появляется - опрос кнопок заканчивается (чтоб нельзя было случайно выйти из режима во время прошивки), МК перекидывает данные на пациента. Как только сигнал на SCK не будет изменяться некоторое время (задаётся таймером) - опрос кнопок запускается.
"AUTO" - То же самое, но после остановки SCK выводы на пациента отсекаются (аналогично RUN), а при появлении - подключаются (аналогично PROG)
"UART" - переброс линий UART на пациента.

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

Для опытов нужно воплотить это в железе. Схемы под рукой нет (скину вечером), вот фото того, что получилось. Делал специально под корпус от розетки RJ-45, уж очень там защёлки мне понравились :) Поэтому монтаж двухъэтажный. В корпус пока не ставил, т.к. предстоит еще долгая отладка.

Изображение

Изображение

Изображение

Изображение

Изображение
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Нашел схему, правда с косяком: неверные номера пинов XTAL1/XTAL2 - но это не суть, исходник дома, поправлю.

Изображение
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ibiza11 »

таргет будет питаться от USB? если да, то это плохой пример. если нет, то отвяжите +5В USB разъема от цепи VCC.
плохой пример потому как: во первых можно выжечь порт. во вторых при подключении большой нагрузки наблюдается сброс контроллера в течение первых секунд (только личный опыт).
еще совет : режимы RUN и PROG избыточны и свободно заменяются режимом AUTO. Поверьте никто пользоваться не будет ими, поскольку при отладке и так полно дел, а тут еще переключать режимы, до программатора тянуться....
еще лучше сделать отдельный разъем для UART (режим UART), не выводить его на разъем программирования. представьте, что вам нужно запрограммировать и отладить платку, которая по UARTу общается с компом. 1)запрограммировать контроллер 2)переключить программатор в режим UART 3)переключить разъем программирования на UART контроллера 4)посмотреть что в терминале (отладить) 5) повторить в обратной последовательности переключения 6)запрограммировать новой программой таргет 7)далее по циклу..... Щас подумал это вообще неудобно.... Проще сделать отдельный UART-RS232 или UART-USB переходник и отдельный программатор, ничего не надо переключать, возможность использовать одновременно. ... Мне напоминает это мой первый проект Плата с АТМегой32, куча датчиков (температура), энкодер, кнопки, 16х2 ЖКИ, RC-5, управление нагрузкой (симистор), связь UART-RS232, RS485 c такой же платой. Сделал, забросил...нафига делал сам не понял. :))) В общем не выдумывайте ерунды, лучше займитесь другим проектом, чем делать "ультрафункциональную" бесполезняшку.
Ставим плюсы: )
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

таргет будет питаться от USB? если да, то это плохой пример. если нет, то отвяжите +5В USB разъема от цепи VCC.
плохой пример потому как: во первых можно выжечь порт. во вторых при подключении большой нагрузки наблюдается сброс контроллера в течение первых секунд (только личный опыт).
Для того и выключатель. Если нагрузки большой нет - вполне себе вариант. Если есть - просто не включаем (либо вообще не используем линию VCC на таргете).
режимы RUN и PROG избыточны и свободно заменяются режимом AUTO. Поверьте никто пользоваться не будет ими, поскольку при отладке и так полно дел, а тут еще переключать режимы, до программатора тянуться....
AUTO можно сделать по дефолту. Просто мне иногда нужно запустить таргет именно в определённый момент. Либо делать это отдельным переключателем, либо (как мне показалось удобней) на программаторе.
еще лучше сделать отдельный разъем для UART (режим UART), не выводить его на разъем программирования.
Сделал его как опцию. А так да, хочу отдельный переходник, благо там вообще ничего придумывать не надо...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Ладно, всё равно железная часть собрана и работает. Поэкспериментирую пока с "мягкой", а там видно будет, на сколько он удобен или наоборот.

Кто желает прокомментировать/покритиковать/идеи высказать - всегда рад выслушать :)
Реклама
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение Murav »

ploop писал(а):Прочитав статью http://easyelectronics.ru/skorostnoj-av ... llera.html решил сообразить себе такой программатор, но немного модернизировав. Во-первых, использовать FT232 по прямому назначению - как преобразователь USB-UART, а всю логику организовать на вспомогательном контроллере. Сам же этот контроллер будет программироваться при необходимости описанным в статье способом.
По-моему если уж делать свой USB-программатор, то не стоит использовать микросхемы типа FT232, а лучше сделать всю поддержку USB в AVR(либо с помощью V-USB либо МК с аппаратной поддержкой USB). Вообще схема программатора вполне может состоять только из микроконтроллера, кварца, разьёмов USB и программирования, нескольких резисторов, конденсаторов и светодиодов (ну и стабилитронов для V-USB). При этом вполне можно реализовать уже поддерживаемый всеми программатор(AVRISP mkII или AVR Dragon).

Кстати в таком случае можно сделать UART вместе с программатором как Composite Device - для системы это будет выглядить как два отдельных устройства, а работать будет на одном МК(нужно только достаточное число USB-endpoint'ов). Хотя с CDC у меня были проблемы в WinXP SP2(именно там появилась вся необходимая поддержка, а ошибок у MS в новых фичах всегда достаточно), так что возможно оно будет нормально работать только в Vist'е и семёрке.
ploop писал(а):Пока не вдаваясь в подробности протоколов прошивки решил просто добавить автоматический режим, когда выходы SPI отсекаются от схемы, оставив при этом ручной. МК тут является просто буфером, и гонит через себя данные, тем самым анализируя линию SCK и отсекая/подключая выходы при необходимости. Так же на нём индикация режима и опрос кнопок...
Все нормальные программаторы отключаются от линий программирования сразу после него(хотя некоторым можно сказать чтобы оставили вывод RESET включенным, чтобы МК не запускался сразу) - это очень удобно при отладке прошивки. Вообще на программаторе не нужны никакие кнопки - всё по-возможности должно управляться с компьютера. Да и этими кнопками там делать нечего - вход в режим программирование происходит по команде от программы. А переключаться между режимами UART и программирования совершенно неудобно - приходится кроме нажатия кнопок Compile и Program ещё и тянуться к программатору(а он нередко лежит в дальнем углу стола), так что нужно автоматическое отключение UART при программировании.
ploop писал(а):Так же добави возможность выключать питание программируемого девайса кнопкой (или программно, если понадобится)
По питания я обычно ставлю два выключателя - один включает питание МК программатора от USB, второй от таргета(чтобы не было проблем с уровнями), а оба сразу включают питание таргета от USB. В редких случаях бывает полезно программное включение питания во время прошивки.
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

По-моему если уж делать свой USB-программатор, то не стоит использовать микросхемы типа FT232, а лучше сделать всю поддержку USB в AVR(либо с помощью V-USB либо МК с аппаратной поддержкой USB).
Согласен на счет аппаратной поддержки, но что-то такой МК приобрести проблематично (поэтому и обратил внимание на 232-ю). А программная меня смущает. Не знаю почему. Хотя с тем же протоссом проблем не возникло ни разу.
При этом вполне можно реализовать уже поддерживаемый всеми программатор(AVRISP mkII или AVR Dragon).
Кстати, нет ссылок на реализации этих программаторов на чём-нибудь ходовом, типа меги8?
И вот еще какая мысль - тут у меня в железе uart заведён на аппаратный uart контроллера. В принципе таким образом можно эмулировать любой документированный протокол программирования. Или я ошибаюсь?
Кстати в таком случае можно сделать UART вместе с программатором как Composite Device - для системы это будет выглядить как два отдельных устройства, а работать будет на одном МК(нужно только достаточное число USB-endpoint'ов). Хотя с CDC у меня были проблемы в WinXP SP2(именно там появилась вся необходимая поддержка, а ошибок у MS в новых фичах всегда достаточно), так что возможно оно будет нормально работать только в Vist'е и семёрке.
Работаю под Linux'ом, там таких проблем вроде нет. Просто будет несколько устройств.
По питания я обычно ставлю два выключателя - один включает питание МК программатора от USB, второй от таргета(чтобы не было проблем с уровнями), а оба сразу включают питание таргета от USB.
А вот это замечательная идея! Приму к сведению на будущее (сюда уже не подпаять).
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение Murav »

ploop писал(а):А программная меня смущает. Не знаю почему. Хотя с тем же протоссом проблем не возникло ни разу.
У меня программная вроде нормально везде работает. Только в некоторых случаях нужен драйвер фильтра(или правка драйвера в Linux) чтобы bulk endpoint'ы нормально работали.
ploop писал(а):Кстати, нет ссылок на реализации этих программаторов на чём-нибудь ходовом, типа меги8?
Я сейчас делаю себе программатор MiniProg - http://www.simonqian.com/en/AVRminiProg/ , там есть полный вариант(ISP+параллельное программирование+JTAG-программирование на меге16 или 32) и урезанный - только ISP на меге8, совместимый с USBASP и AVR910 USB. Я пока разбираюсь(точнее уже сделал и теперь делаю новые фичи) только с полным вариантом, а урезанный вариант пока не пробовал. Ещя в этом программаторе имеется интересная возможность - автовыбор скорости программирования.

Сейчас пытаюсь сделать в нём отладку через JTAG(по JTAG мне отлаживать сейчас нечего, делаю его только из-за того что у JTAG и debugWire значительная часть протокола одинаковая).
ploop писал(а):И вот еще какая мысль - тут у меня в железе uart заведён на аппаратный uart контроллера. В принципе таким образом можно эмулировать любой документированный протокол программирования. Или я ошибаюсь?
Не понял, что имелось в виду.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Не понял, что имелось в виду.
Ну допустим тот же AVR-910 как реализуется? Данные, передаваемые по UART обрабатываем ("преобразум" в SPI). То же самое с JTAG-адаптерами. Я это имел ввиду. Вот пара ссылок и даже пример из атмеловского документа:
http://radiokot.ru/lab/controller/29/04.gif
http://easyelectronics.ru/img/AVR_kurs/JTAG/JTAG.GIF

Изображение
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

На ночь глядя вообще дикая мысль мне в голову пришла: валяется у меня USB-хаб четырёх-портовый без дела. Контроллер паяемый, обвяза не много.
По идее, можно с помощью него реализовать 4 независимых устройства, например ISP-программатор, USB-UART переходник, JTAG-адаптер и еще что-нибудь. Обеспечить гальваническую развязку с ПК, используя нп выходе, например, оптопары и буферы, питаемые от таргетов. И работать с этими устройствами можно будет практически одновременно.
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение Murav »

ploop писал(а):То же самое с JTAG-адаптерами
В том программаторе, ссылку на который я привёл такое есть и я проверял - работает. Описание протокола программирования по JTAG у Atmel достаточно подробное, только сам протокол заметно сложнее чем ISP(в мегу8 вся реализация протокола однозначно не влезет), так что его сложновато реализовать. Хотя программирование по JTAG работает заметно быстрее чем через ISP. И кстати ISP и JTAG для AVR можно легко совместить в одном и том же контроллере, если полностью реализовать в нём весь протокол программирования по JTAG.
ploop писал(а):На ночь глядя вообще дикая мысль мне в голову пришла: валяется у меня USB-хаб четырёх-портовый без дела. Контроллер паяемый, обвяза не много.
По идее, можно с помощью него реализовать 4 независимых устройства, например ISP-программатор, USB-UART переходник, JTAG-адаптер и еще что-нибудь.
Только непонятно, зачем всё это запихивать на одну плату, если это несвязанные устройства.
ploop писал(а):Обеспечить гальваническую развязку с ПК, используя нп выходе, например, оптопары и буферы, питаемые от таргетов.
Гальваническую развязку USB сделать весьма непросто - линии там двунаправленные и высокочастотные.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Ненене, USB-часть так и будет от USB питаться. А вот тот же SPI уже можно отделить оптикой, там же тупо логические уровни.
Вот как сдесь: http://radiokot.ru/lab/controller/29/04.gif
Murav
Опытный кот
Сообщения: 877
Зарегистрирован: Чт фев 18, 2010 13:51:56

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение Murav »

Такая схема плоха тем, что требуется целых две микросхемы - по одной на каждой стороне. Лучше либо изолировать USB(при этом могут быть проблемы с потерей программатора программой при его отключении) либо ISP. Мне больше нравится второй вариант, но в нём получается больше оптопар и есть проблемы с переводом выводов программирования в Z-состояние(нужно придумать какую-нибудь схему на транзисторах для этого).
ploop писал(а):А вот тот же SPI уже можно отделить оптикой, там же тупо логические уровни.
Вот как сдесь: http://radiokot.ru/lab/controller/29/04.gif
Здесь опторазвязка стоит на интерфейсе UART.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

Здесь опторазвязка стоит на интерфейсе UART.
Это я для примера привёл. Представьте 2313 по левую сторону, а в место неё буфер. Но да, количество оптопар увеличится до шести.... Хотя для дома нафиг такие извращения.
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение java »

ploop писал(а):Руки чешутся что-нибудь изобретать
А возможно изобрести вот такой программатор? :))
http://www.phyton.ru/pages/page51.html
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение ploop »

А что, можно! :)

ЗЫ:
На пару дней нашлось чем почесать, попросили проттосса собрать. Оказывается "крутые" радиолюбители не могут ни плату сделать, ни запаять чего-то мельче дипа...
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение java »

ploop писал(а):А что, можно! :)
Будешь первым :))) Изрыл весь инет, только собранныё по запредельной цене!
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Аватара пользователя
Yuri_93
Вымогатель припоя
Сообщения: 505
Зарегистрирован: Пт окт 15, 2010 10:26:31
Откуда: Украина

Re: Изобретаем новый велосипед: USB программатор для AVR

Сообщение Yuri_93 »

Что то сильно ploop торопиться схему выкладывать, даже слишком :)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»