реклама на сайте
подробности

 
 
10 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Программатор Dimoniprog (USB, STK500v2 совместимый, c изоляцией, ПУ, питанием target), Софт + пример железяки для энтузиастов
Dimonira
сообщение Nov 2 2008, 21:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Решил таки выложить это своё творение. Может кому пригодится.
Раньше программировал AVR с помощью супер-программы AvReal в связке с байт-бластером Альтеры на параллельном порте принтера компьютера. Это было очень хорошее и удобное решение. При использовании для написания софта компилятора IAR, можно было настроить вызов программирования контроллера прямо из оболочки IDE по одному клику, быстро и удобно. Однако время шло и при переходе на ноутбук возникла проблема - отсутствие параллельного порта принтера. Тут и возникла идея создания нового программатора, подключаемого к USB порту. Ознакомившись с доселе созданными вариантами (Prottoss, Petka/Tuxgraphics, Doper), решил сделать программатор с гальванической изоляцией, преобразованием уровней, возможностью питать целевое железо от USB порта и реализовать его на основе связки FT232 + ATMega8. Под это дело был написан софт (проект под IAR 5.11B). Софт старался написать просто, прозрачно и понятно (и никакого ассемблера), чтобы любой легко смог "заточить" его на свой вкус. Мне думается, что связка FT232 + ATMega8 является достаточно универсальным решением, которое позволяет реализовывать разное железо от простых вариантов до более сложных. Так что, внеся небольшие изменения в софт, можно быстро настроить его на свой вариант железа.

Железо.
Основные пояснения по железу:
1. Изоляция достигается через интерфейс RS-232 и питание с помощью ADUM1201 и изолированного конвертера DC/DC со стабилизированным выходом на 5В типа AM1DR-0505S (я использовал P6CG-0505ELF).
2. Для преобразования уровня от целевого девайса использованы ADG3304 и ADG3301, которые обещают диапазон 1.15-5В. Программатор запитан от 5В питания, чтобы априори быть "больше или равно" чем питание целевого девайса. Поэтому ADG330х "развёрнуты" стороной с большим питанием в сторону программатора. При равном питании для понижения питания "правой" стороны, поставлен диод. Прада, это несколько повышает нижний предел уровней (на 0.25 В).
3. Для интерфейса программирования целевых кристаллов у контроллера ATMega8 использован SPI порт, что позволяет программировать и самому быть программируемым внешним программатором с того же разъёма ISP, надо только ещё перемычку XP5 на RESET переставить: позиция 1-2 соответствует работе программатором, позиция 2-3 - для программирования ATMega8 извне.
4. Программатор генерирует сигнал тактовой частоты (ISP clock) для целевого девайса (на всякий случай). Это нестандартная опция (нет в STK500). Цепь выведена на 3 вывод 10-ти контактных ISP разъёмов (обозначен как PULSE).
5. В контроллер заведены на входы АЦП напряжения питания программатора и целевого девайса (через делители). Правда в STK500 v2 в режиме AVRISP эти измерения (точнее напряжение целевого девайса) не запрашиваются. Но можно проверить встроенным терминалом (см. ниже в описании софта).
6. Наличие DC/DC позволяет питать напряжением 5В целевое устройство (до 1Вт за вычетом потребления самого программатора). Для этого надо замкнуть XP4.
7. На разъём XP6 выведен интерфейс RS-232 "TTL", для двух целей: можно подключать сотовые телефоны для перепрошивки (или ещё для чего?), а ещё надеялся, что можно будет через него зашить сам программатор (не имея другого программатора), подключив нужные связи на разъём ISP и использовав софт PonyProg2000 (аналогично как у Petka). При использовании этого интерфейса надо разомкнуть XP3. При работе программатором XP3 должна быть замкнута. Думаю, ясно почему.
8. Для ISP разведены как 6-ти, так и 10-ти контактные разъёмы с шагом 2.54 и 2 мм. Поэтому их 4-е штуки.
9. Т.к. STK500 v2 в режиме AVRISP , то частота кварца должна быть 3.6864 МГц.
10. Предусмотрены контакты XP1, XP2. для использования boot-загрузчика.

Схема приводится в первоначальном варианте (без исправлений). На основе схемы была сделана печатная плата и собрано пару девайсов:

Железо после опробывания потребовало пары доработок, которые на схеме не приведены. Поэтому привожу эти доработки здесь:
1. Резистор R11 (верхний вывод по схеме) надо оторвать и подключить напрямую к цепи VTG.
2. Выяснилось, что надо подтянуть линию MISO с "внешней" стороны к целевому питанию. Так что надо навесить резистор 22к между 1 и 5 выводами D5.

По проверкам железа.
Зашивал программатор с помощью программатора Prottoss-а (в варианте Мастер-Кит). Не понял почему, но шился только один из двух образцов. На втором не входил в режим программирования.
В то же время оба образца на ура прошивались на десктопном компьютере с помощью AvReal+BB(LPT).
Программаторы друг друга шить не хотят, видимо это связано с преобразователями уровней ("много" их получается в связке). И вообще эти преобразователи уровней мне как-то не очень понравились. Была замечена чувствительность к длине кабеля ISP, - покороче надо. Хотя идея реализации, а именно подключение программатора к USB через кабель, а не напрямую в разъём, позволяет ситуацию с коротким ISP легко преодолеть. Опять же из-за этих преобразователи уровней (как я понял, но досконально не разбирался, не было нужды) не удалось запрограммировать программатор с помощью PonyProg2000.
Проверить прошивание кристаллов с памятью более 64К не удалось за неимением таковых в наличии.
Остальное вроде работает.
Поэтому (резюмируя выше сказанное) в следующей версии железа (если я на неё пойду) наметились следующие основные идеи доработок:
1. Заменить преобразователи уровней на другие, а именно sn74lvc1t45. Может они будут лучше работать. Тогда, возможно, и диод не понадобится.
2. Вместо перемычки питания XP4 поставить 3-х контактную панельку и завести туда ещё землю. Тогда можно будет не только замыкать для подачи питания 5В на целевую схему, но и втыкать туда, например какой-нибудь LDO и получать из 5В другое требуемое напряжение.
3. Видимо, лучше всё же вывести на отдельный 6-ти пиновый разъём линии SPI интерфейса и RESET контроллера программатора напрямую (минуя преобразователи уровней). Это должно дать возможность зашить программатор без программатора через PonyProg2000.

Софт.
Софт сделан под IAR 5.11B. Проект разбит на файлы, функциональность которых ясна из названия.
Реализован стандартный протокол STK500 v2 в режиме AVRISP (всё что надо поддержал). Помимо стандартного, реализован доморощенный терминальный протокол (для связи можно использовать любую терминальную программу в режиме 115200/8/без паритета/1стоп, т.е. так же как в STK500) для настройки параметров программатора, которые невозможно сделать через STK500. А именно:
1. Настройка частоты ISP clock в соответствии с формулой: ISP clock = 3686400/(2*N*(1+OCR)), где параметры N и OCR можно задать.
2. Настройка значений сопротивлений делителей, через которые заводятся для контроля напряжения питаний программатора и целевого девайса. Это для того, чтобы не заботиться о точности этих резисторов. Измерил тестером перед запайкой, а потом ввёл эти значения и всё будет измеряться точно. В софте "зашито" по-умолчанию значения 330 и 220 (это соответствует 33к и 22к) для обоих делителей.
Значения параметров запоминаются в EEPROM (в том числе и параметров протокола STK500).
Помимо этого терминальный протокол позволяет выдать измеренные значения напряжений, текущие значения параметров и версии софта (firmware).
Выбор протокола происходит автоматом - пока не заработал протокол STK500, работает терминальный протокол. Как только от компьютера получен байт, "понравившийся" протоколу STK500, так сразу терминальный протокол "отключится" и больше не будет работать (мешать) до нового включения программатора в порт USB.
Команды терминального протокола и их формат можно увидеть, подключившись терминалом к порту, на котором сидит программатор, и выдав в него символ '?' или 'h'. В ответ программатор выдаст список с пояснениями. Либо можно понять по тесту программы (терминал реализован в main.c).
Если нет желания использовать терминальный протокол, то можно его исключить, закомментировав строчку с определением TERMINAL_INTERFACE в main.c. Но тогда частота ISP clock останется фиксированной 921600 Гц (задаётся через определения в isp.c).
Фузы надо поставить так: BODLEVEL=0, BODEN=0, SUT=1, CKSEL=F, остальные непрошиты (как есть в новом контроллере).
Для облегчения "шития" smile.gif сделан AES boot загрузчик (взятый готовый и настроенный на нужную тактовую и скорость обмена). Всё "хозяйство" загрузчика лежит в поддиректории AES-Boot\. Загрузчик использует те же параметры порта (115200 и т.д.).
При использовании загрузчика сначала зашиваем его (boot.hex). Потом замыкаем XP1, XP2, втыкаем девайс в USB, размыкаем XP1, XP2, далее запускаем update (точнее upd_com1.bat или upd_com2.bat в зависимости от номера COM порта, либо переделаете на нужный).
При использовании загрузчика фузы надо поменять: должно быть BLB1=0, BOOTRST=0, BOOTSZ=0 (он сразу такой).
Я шил бут-загрузчик через AvReal+BB(LPT1) сразу со всеми фузами и локами командой:
Код
avreal32 +atmega8 -p1 -ab -e -l2 -v -w -fbodlevel=0,boden=0,sut=1,cksel=f,bootsz=0,bootrst=0,blb1=0 -c boot.hex

Гы-гы, хотя зачем лочить, коли тут всё выложил 07.gif smile.gif

Проект компиллируется в simple формат (Dimoniprog.raw). После этого надо применить POSTLINK для получения отдельных файлов кода (Dimoniprog_code.hex) и eeprom (Dimoniprog_eeprom.hex). Далее можно их шить.
Если используется бут-загрузчик (и boot.hex уже прошит в контроллер вместе с нужными фузами), то надо сначала из двух вышеупомянутых файлов сделать файл Dimoniprog.enc для программы "обновлятеля". Для этого в директории AES-Boot запускаем create.bat. После чего можно обновлять (upd_com1.bat или upd_com2.bat или другой порт).

В заключении несколько советов по настройке IAR Embedded Workbench IDE для облегчения жизни.
Для начала заменим родной postlink.bat (в C:\Program Files\IAR Systems\Embedded Workbench 5.0\avr\bin\) на прилагающийся. Не помню (давно было) для чего я это делал, видать не работало.
Добавим три команды через меню "Configure Tools..." (во всех случаях ставим флажок "Redirect to Output window"):
Код
Menu Text: Postlink
Command: $TOOLKIT_DIR$\bin\POSTLINK.BAT
Argument: $TARGET_FNAME$ $TOOLKIT_DIR$\bin\POSTLINK.EXE
Initial Directory: $TARGET_DIR$

Код
Menu Text: Create boot application
Command: $PROJ_DIR$\AES-Boot\create
Argument: -c cfg.txt -e $TARGET_DIR$\$PROJ_FNAME$_eeprom.hex -f $TARGET_DIR$\$PROJ_FNAME$_code.hex -o $PROJ_FNAME$.enc -l BLB11 BLB12
Initial Directory: $PROJ_DIR$\AES-Boot\

Код
Menu Text: Update booting device (COM1)
Command: $PROJ_DIR$\AES-Boot\update
Argument: $PROJ_FNAME$.enc -COM1 -115200
Initial Directory: $PROJ_DIR$\AES-Boot\

В последней команде надо уточнить номер порта или можно сделать несколько таких команд для разных портов.
Первую команду (Postlink) запускаем после компилляции софта для получения файлов кода (Dimoniprog_code.hex) и eeprom (Dimoniprog_eeprom.hex).
Две других нужны при использовании бут-загрузчика.
Вторую (Create boot application) запускаем вслед за первой для получения файла Dimoniprog.enc для программы "обновлятеля".
Третьей командой (Update booting device) запускаем обновление firmware программатора. Только надо не забыть перед запуском команды произвести манипуляции с перетыканием перемычки между XP1-XP2 с перевтыканием программатора в USB порт (выше писал).
-------------------------
Пока всё на этом. Устал набирать...
Прикрепленные файлы
Прикрепленный файл  postlink.rar ( 571 байт ) Кол-во скачиваний: 495
Прикрепленный файл  Dimoniprog.rar ( 136.8 килобайт ) Кол-во скачиваний: 656
 
Go to the top of the page
 
+Quote Post
acorn
сообщение Nov 2 2008, 22:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 28-11-05
Пользователь №: 11 495



Привет. Серьезная разработка, респект. Для меня сейчас не актуально, потому не вникал, но с включением FT232RL есть замечание: по даташиту (Version 2.01, chapter 6.3, "USB Bus Powered with Power Switching Configuration") вывод управления полевиком (CBUS3, он-же PWREN#) должен быть подтянут к плюсу USB через 10К. Там и текстом:
"One of the CBUS Pins should be configured as PWREN# in the internal FT232R EEPROM, and used
to switch the power supply to the external circuitry. This should be pulled high through a 10 k
resistor."
Ты его сознательно не ставил?
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 2 2008, 22:41
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Нет не сознательно! Спасибо за уточнение.
Раньше этого резистора не было, в новом даташите появился.
Поскольку я использую FT232 давно (как они появились), то так и "тяну" эту обвязку. В новом даташите не обратил внимания.
Впрочем, я не понял зачем оно надо. Работает нормально и без него.
Ну, раз хозяин пишет, что надо, значит надо добавить.
Go to the top of the page
 
+Quote Post
dch
сообщение Nov 3 2008, 17:12
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



а сайтец у Вас есть ? Целесобразно такие проекты отдельно публикануть, а то тут то есть, то авария сервера. Может потеряться а потом всплыть. По собственному печальному опыту знаю - некоторые проекты больше семьдесят двух раз переделываются не понятно по какой причине
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Nov 3 2008, 17:58
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



может, пригодиться :
http://ukpyr.narod.ru/prog_avr910_iso_03.htm?lang=rus

несколько советов :
- использовать контроллер mega88v - можно обойтись без преобразователей уровня.
- выходной разъем лучше сделать один, и вывести на него дополнительно RX/TX, генератор для подачи частоты на процы без кварцев. а выход на разные разъемы сделать разными шнурками.
- добавить джамперы для сброса внешнего/внутреннего контроллеров, в таком варианте можно использовать RX/TX для программирования других процев по посл.каналу.
- использовать стаб. LP298xLV на 1.8В - трехконтактным джампером перекрывается диапазон 1.8, 3.3, 5В. Выбор напряжений можно сделать четырехконтактным джампером - для использования внутр/внешн. питания, подавать питание на таргет.
- генератор высокого напряжения для HV serial программирования

Сообщение отредактировал ukpyr - Nov 3 2008, 18:04
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 3 2008, 19:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Цитата(ukpyr @ Nov 3 2008, 20:58) *
- использовать контроллер mega88v - можно обойтись без преобразователей уровня.

Это если питание меги такое же как у целевого? Т.е. питать от целевого? Ну у меня же наоборот желание сделать было - питать целевой от USB. Либо я сию глубокую мысль не понял.
Цитата(ukpyr @ Nov 3 2008, 20:58) *
- выходной разъем лучше сделать один, и вывести на него дополнительно RX/TX, генератор для подачи частоты на процы без кварцев. а выход на разные разъемы сделать разными шнурками.
- добавить джамперы для сброса внешнего/внутреннего контроллеров, в таком варианте можно использовать RX/TX для программирования других процев по посл.каналу.

Разъёмы ISP стоят в стандартной распиновке, а не в доморощенной. Так что если и выводить изолированные RX/TX, то на какой-то другой разъём.
Сделать переход от 2.54 мм шага в 2 мм, как и с 10 на 6 контактов красиво невозможно. Поэтому я развёл все 4-е варианта отдельно. В конце концов я же никого не призываю делать так же. Железо приведено в общем как пример реализации программатора в связке USB->FT232->ATMega->ISP. Так что не меняя софт можно все вышеуказанные вариации сделать.
Цитата(ukpyr @ Nov 3 2008, 20:58) *
- генератор высокого напряжения для HV serial программирования

А оно надо?
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Nov 3 2008, 19:12
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Ну у меня же наоборот желание сделать было - питать целевой от USB. Либо я сию глубокую мысль не понял.
для этого и нужен регулируемый стабилизатор на 1.8-5В. мега88v позволит избавиться от преобразователей.

Сообщение отредактировал ukpyr - Nov 3 2008, 19:15
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 3 2008, 19:54
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Цитата(ukpyr @ Nov 3 2008, 22:12) *
для этого и нужен регулируемый стабилизатор на 1.8-5В. мега88v позволит избавиться от преобразователей.

Да, но хорошо бы ещё избавиться от ограничения минимального питания 2.7В у изоляторов ADUM1201.

Хотя если питать ADUM1201 с обеих сторон от 5В (вторую сторону от DC/DC), то можно между ADUM1201 и мегой поставить всё-таки преобразователи уровней (sn74lvc1t45), а мегу со всем остальным уже питать от разных напряжений, получаемых от 5В DC/DC.
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Nov 3 2008, 20:18
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Да, но хорошо бы ещё избавиться от ограничения минимального питания 2.7В у изоляторов ADUM1201.

ADUM можно запитать от 5В из преобразователя, TX ADUMа развязать диодом, RX - через согласующий транзистор
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 3 2008, 21:16
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Ну а если целевое питание тоже 5В? Как-то эти диоды и транзисторы выглядят не очень по-сравнению с 74lvc1t45. Если предлагалось RX/TX тоже выводить.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 4 2008, 03:00
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Вопрос: cкажите, pls, а земли, случайно, соединять не нужно ? В смысле, через емкость.
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 4 2008, 10:10
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Зачем?

Цитата(dch @ Nov 3 2008, 20:12) *
а сайтец у Вас есть ? Целесобразно такие проекты отдельно публикануть, а то тут то есть, то авария сервера. Может потеряться а потом всплыть. По собственному печальному опыту знаю - некоторые проекты больше семьдесят двух раз переделываются не понятно по какой причине

Пока не делал. Решил сначала среди своих так сказать "перетереть". Поскольку подразумеваются возможные переделки железа с целью улучшения. А дальше видно будет.
Go to the top of the page
 
+Quote Post
dch
сообщение Nov 4 2008, 20:30
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Цитата(Dimonira @ Nov 4 2008, 13:10) *
А дальше видно будет.

четыре раза переехал - один раз сгорел это на бытовом уровне у нас один раз переехал - сгорел четыре :-) , я периодически в безобидной ситуации обнаруживаю потерю 10 процентов файлов
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Nov 5 2008, 06:18
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Dimonira, можно тупой вопрос?

Я не въеду, зачем нужны самопальные программаторы (ваш, PROTOSSa, avreal), если имеется стандартный AVR ISP-2 от Atmela. Он гарантированно будет поддерживаться, работает со всеми процами, USB и т.д. При этом он относительно недорог.

PS Я ни сколько не пытаюсь умалить ваши результаты - как минимум вы получили массу опыта и респекта smile.gif, просто интересно - имеет ли все это практическое применение? beer.gif
Go to the top of the page
 
+Quote Post
Dimonira
сообщение Nov 5 2008, 09:19
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Цитата(Непомнящий Евгений @ Nov 5 2008, 09:18) *
Я не въеду, зачем нужны самопальные программаторы (ваш, PROTOSSa, avreal), если имеется стандартный AVR ISP-2 от Atmela. Он гарантированно будет поддерживаться, работает со всеми процами, USB и т.д.

На счёт последнего утверждения я бы не был так категоричен. А вот случись что, свой всегда можно переделать. Помимо всего прочего, свой можно сделать не только для Атмелов, но и вообще для разных других девайсов, - флешей, еепром, сотовых телефонов и т.п. Над своим имеешь полный контроль и владение.
Цитата(Непомнящий Евгений @ Nov 5 2008, 09:18) *
При этом он относительно недорог.

Ну, это кому как. Вообще я бы сказал (не конкретно про ISP программатор), что средства для разработки стоят дорого. Иной раз очень дорого. Так что для личных целей могут быть не всем по карману.
----------------------------
А потом просто, было время на выходных, руки чесались, хотелось что-то наваять, детальки валялись (жалко ведь, валяются бесхозно). Вот и решил провести время с пользой себе и может другим. Конечно, платы пришлось изготавливать за деньги, это да. Но мне хотелось их сделать для получения опыта заказа плат от частного лица, на будущее, есть некоторые мысли. Опыт появился: заказывал 5 шт. плат, а мне дали 10, из них одна была помечена как бракованная (хотя я смотрел, смотрел, так и не заметил в чём там брак). Как мне сказали, лишних 4 штуки вам передаются безвозмездно, т.е. даром smile.gif
Go to the top of the page
 
+Quote Post

10 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01561 секунд с 7
ELECTRONIX ©2004-2016