Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программатор Dimoniprog (USB, STK500v2 совместимый, c изоляцией, ПУ, питанием target)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3
Dimonira
Решил таки выложить это своё творение. Может кому пригодится.
Раньше программировал 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 порт (выше писал).
-------------------------
Пока всё на этом. Устал набирать...
acorn
Привет. Серьезная разработка, респект. Для меня сейчас не актуально, потому не вникал, но с включением 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."
Ты его сознательно не ставил?
Dimonira
Нет не сознательно! Спасибо за уточнение.
Раньше этого резистора не было, в новом даташите появился.
Поскольку я использую FT232 давно (как они появились), то так и "тяну" эту обвязку. В новом даташите не обратил внимания.
Впрочем, я не понял зачем оно надо. Работает нормально и без него.
Ну, раз хозяин пишет, что надо, значит надо добавить.
dch
а сайтец у Вас есть ? Целесобразно такие проекты отдельно публикануть, а то тут то есть, то авария сервера. Может потеряться а потом всплыть. По собственному печальному опыту знаю - некоторые проекты больше семьдесят двух раз переделываются не понятно по какой причине
ukpyr
может, пригодиться :
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 программирования
Dimonira
Цитата(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 программирования

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

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

Хотя если питать ADUM1201 с обеих сторон от 5В (вторую сторону от DC/DC), то можно между ADUM1201 и мегой поставить всё-таки преобразователи уровней (sn74lvc1t45), а мегу со всем остальным уже питать от разных напряжений, получаемых от 5В DC/DC.
ukpyr
Цитата
Да, но хорошо бы ещё избавиться от ограничения минимального питания 2.7В у изоляторов ADUM1201.

ADUM можно запитать от 5В из преобразователя, TX ADUMа развязать диодом, RX - через согласующий транзистор
Dimonira
Ну а если целевое питание тоже 5В? Как-то эти диоды и транзисторы выглядят не очень по-сравнению с 74lvc1t45. Если предлагалось RX/TX тоже выводить.
Огурцов
Вопрос: cкажите, pls, а земли, случайно, соединять не нужно ? В смысле, через емкость.
Dimonira
Зачем?

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

Пока не делал. Решил сначала среди своих так сказать "перетереть". Поскольку подразумеваются возможные переделки железа с целью улучшения. А дальше видно будет.
dch
Цитата(Dimonira @ Nov 4 2008, 13:10) *
А дальше видно будет.

четыре раза переехал - один раз сгорел это на бытовом уровне у нас один раз переехал - сгорел четыре :-) , я периодически в безобидной ситуации обнаруживаю потерю 10 процентов файлов
Непомнящий Евгений
Dimonira, можно тупой вопрос?

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

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

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

Ну, это кому как. Вообще я бы сказал (не конкретно про ISP программатор), что средства для разработки стоят дорого. Иной раз очень дорого. Так что для личных целей могут быть не всем по карману.
----------------------------
А потом просто, было время на выходных, руки чесались, хотелось что-то наваять, детальки валялись (жалко ведь, валяются бесхозно). Вот и решил провести время с пользой себе и может другим. Конечно, платы пришлось изготавливать за деньги, это да. Но мне хотелось их сделать для получения опыта заказа плат от частного лица, на будущее, есть некоторые мысли. Опыт появился: заказывал 5 шт. плат, а мне дали 10, из них одна была помечена как бракованная (хотя я смотрел, смотрел, так и не заметил в чём там брак). Как мне сказали, лишних 4 штуки вам передаются безвозмездно, т.е. даром smile.gif
Арк К
Цитата(Непомнящий Евгений @ Nov 5 2008, 10:18) *
Я не въеду, зачем нужны самопальные программаторы (ваш, PROTOSSa, avreal), если имеется стандартный AVR ISP-2 от Atmela.

Дело ещё и в том, что для AVRISP требуется родной софт и драйвер, а это в сумме около 100МБ
Dimonira
ВНИМАНИЕ! На схеме замечена ошибка! Потерялся 3 вывод контроллера - его надо на землю (соединить с 5 и 21). Сори 05.gif
-----------------
Не понял почему я не могу отредактировать свою тему?
SKov
2 Dimonira:
Спасибо за интересную разработку.
Не принимайте близко к сердцу сомнения скучных людей в целесообразности этого дела.
Лично мне могут пригодится ваши исходники для осуществления давнишнего намерения "скрестить"
сериальные программаторы для АВРов и ПИКов. Для этого не хватало вразумительных Си-шных исходников. Теперь они есть.
Что касается вашего железа, то тут все дело вкуса и предпочтений. Например, я бы вашу Мегу + оптоизолятор+ FTDI заменил на что-нибудь типа PIC18F2550. В результате получилась бы более компактная схема примерно за ту же цену, правда, без опторазвязки. Понимаю, что программатор для АВР , сделанный на ПИКе, может вызвать очередную волну религиозных войн, так что не буду настаивать на этом решении wink.gif
Действительно, в этом случае мы получим по железу что-то очень похожее на pickit-2 - известный программатор для пиков с открытыми исходниками. Было бы здорово туда же добавить и АВРы (при незначительной доработке схемы). Если будет время, попробую смастерить что-то такое. И в USB-шный вариант PICSTARTa тоже можно попробовать внедрить ваш софт.
В общем, спасибо, вы сделали интересное и полезное дело!
Огурцов
Цитата(SKov @ Nov 5 2008, 22:11) *
В результате получилась бы более компактная схема примерно за ту же цену, правда, без опторазвязки.

Ну так есть же такая, на Mege8. Если хотите, можно было бы at90usb* использовать. Но на FT232 или там CP2102 получается более прямое и надежное решение. И развзка не лишняя, тем более что сделана так просто и красиво.
Dimonira
Что-то меня пропёрло этими программаторами smile.gif
Сейчас разработал усовершенствованную схему. Попробую собрать (вот только денег на плату жалко sad.gif )
Улучшение в том, что теперь питать таргет можно разными фиксированными напряжениями: 5; 3.6; 3.3; 3; 2.7; 1.8 В (выбирается перемычкой). От этого же напряжения питается MEGA88V, - теперь её взял, чтобы работала во всём диапазоне питаний. Преобразователи уровня переставил (и другие взял, - 74lvc1t45) - поставил между развязкой и MEGA88V. Так что теперь MEGA88V работает с таргетом на одном напряжении питания и порт ISP "обслуживает" напрямую. Так что тогда наверняка должна будет шиться сама с того же порта ISP. В общем, реализовал идею, предложенную ukpyr. Мне такой вариант больше понравился.
Кроме этого вывел развязанный RS-232 (RX/TX) наружу (для шитья ARM-ов, например) и сделал сразу разъём а-ля PonyProg для первичной прошивки плюс может ещё для чего: eeprom и т.п., что можно шить через PonyProg (тупо выводить весь интерфейс RS-232 с FT232 не стал).
Сейчас разведу плату, на выходных подправлю софт под MEGA88V и тоже сюда положу.

Цитата(SKov @ Nov 6 2008, 01:11) *
Спасибо за интересную разработку.

Рад что пиргодился.
Цитата(SKov @ Nov 6 2008, 01:11) *
Лично мне могут пригодится ваши исходники для...

Для того и выложил, дерзайте!
В том и мысль была, что есть софт, сделанный под "идею" (USB->FT232->MCU->ISP), а железяка может быть разнообразной, (не противоречащей "идее").
SKov
Цитата(Огурцов @ Nov 6 2008, 07:10) *
Ну так есть же такая, на Mege8. Если хотите, можно было бы at90usb* использовать. Но на FT232 или там CP2102 получается более прямое и надежное решение. И развзка не лишняя, тем более что сделана так просто и красиво.

Прямое решение такое, при котором используется минимум деталей. С FT232 не работал, а вот связка ср2102+ADUM+мега (в моем случае была Мега88) - многократно опробована и хорошо себя зарекомендовала. Интеренсо, что ср2102 была "разогнана" до 2Мбит, при этом все очень устойчиво работало, включая и ADUM, который обязан был работать только на 1Мбит !
Что касается развязки, которая "сделана так просто и красиво" , то могу сказать, что сделать её по-другому было бы очень трудно wink.gif
Возвращаясь к скрытому подталкиванию автора к схеме pickita-2 могу заметить, что для формирования переменного питания там использовался ШИМ. И для VPP тоже свой ШИМ с повышающим преобразователем.. Это удобно, а вдруг автор все-таки захочет реализовать высоковольтное программирование - а тут уже ПОЛНОСТЬЮ ГОТОВАЯ схема ! wink.gif
Dimonira
Цитата(SKov @ Nov 6 2008, 14:30) *
Прямое решение такое, при котором используется минимум деталей. С FT232 не работал, а вот связка ср2102+ADUM+мега (в моем случае была Мега88) - многократно опробована и хорошо себя зарекомендовала. Интеренсо, что ср2102 была "разогнана" до 2Мбит, при этом все очень устойчиво работало, включая и ADUM, который обязан был работать только на 1Мбит !

А я вот с CP2102 не работал. В первую очередь потому, что паять её проблематично, а дома вообще никак. Так что когда весь девайс паять легко, наличие такого компонента не рентабельно даже в "промышленных масштабах". А связка FT232 + что-либо хорошо себя зарекомендовала. Паять можно. Скорость, кстати, если мне не изменяет память до 5 Мбит возможна, хотя мне такое никогда не требовалось.
ADUM-ы тоже есть на разные скорости. Смотря какая буква в обозначении. Возможно, именно поэтому 1-мегабитный и работал на повышенной скорости, - их же из "одной бочки разливают", нанося разную маркировку уже потом.
Цитата(SKov @ Nov 6 2008, 14:30) *
Возвращаясь к скрытому подталкиванию автора к схеме pickita-2 могу заметить, что для формирования переменного питания там использовался ШИМ. И для VPP тоже свой ШИМ с повышающим преобразователем.

Почему-то у меня нет доверия к схеме, которая питает ШИМ-ом саму себя. Если делать раздельное питание, то смысла в ШИМ особо не вижу - с перемычками и LDO имхо намного проще и наверное дешевле (с учётом трат на софт, отладку).
Цитата(SKov @ Nov 6 2008, 14:30) *
Это удобно, а вдруг автор все-таки захочет реализовать высоковольтное программирование - а тут уже ПОЛНОСТЬЮ ГОТОВАЯ схема ! wink.gif

Вот до сих пор не понял, а надо ли кому-то это высоковольтное программирование? Мне так ни разу и не потребовалось. А со временем оно наверное вообще будет уходить как пережиток прошлого.
Если его делать, то тогда надо прикидываться STK500, а не AVRISP. Отсюда полезут разные заморочки. Тогда уж точно надо управлять питанием таргета по протоколу STK500. А остальное, тоже делать? Вот и понеслась. Повторять STK500, а смысл?
А так хоть (как AVRISP) получается нормальный законченный девайс, не подменяющий собой STK500. Плюс допвозможности, не связанные с Атмелами.
SKov
Цитата(Dimonira @ Nov 6 2008, 16:31) *
А я вот с CP2102 не работал. В первую очередь потому, что паять её проблематично,
...
Почему-то у меня нет доверия к схеме, которая питает ШИМ-ом саму себя.

Вот до сих пор не понял, а надо ли кому-то это высоковольтное программирование? STK500.
....
Плюс допвозможности, не связанные с Атмелами.

Ну, ср210х паяется на коленке руками без всяких проблем. Более того, этот чип весьма устойчив к перегреву. Я его для эксперимента 3 раза выпаивал строительным феном самым жестоким образом, а потом снова запаивал паяльником - и он работал.
В pickit-е схема не питает сама себя от шима. Вообще, понижение питания меги для понижения уровня выходных сигналов - это слабое место вашей разработки . Я слышал, что профи так не делают wink.gif. Привязка сигналов к выходному питанию в pickite сделано грамотно - с помощью согласователей уровня (на одном транзисторе на каждую линию).
Высоковольтное программирование бывает нужно. И не только для шитья фузов старых тинек.
Та же Мега88 у меня шьются в STK500 только в высоковольтном режиме, т.к. ресет используется в качестве выхода (ножек не хватало). Прикидываться STK500 хотя бы в ограниченном варианте было бы неплохо. Но, видимо, это уже сложно. Жаль.
Огурцов
Цитата(SKov @ Nov 6 2008, 11:30) *
Прямое решение такое, при котором используется минимум деталей. С FT232 не работал, а вот связка ср2102+ADUM+мега (в моем случае была Мега88) - многократно опробована и хорошо себя зарекомендовала.

Так правильно - это тоже, что и в топике. Я имел ввиду вариант, когда usb внутри mcu - с одной стороны минимум деталей, с другой - развязку уже не прикрутишь.
ср2102 я купил горсть. С дуру. Надеялся, что обойдется, но при близком рассмотрении стало понятно, что эти корпуса для печки и руками их не поставить. Не поставить так, чтобы не было потом мучительно больно - качество пайки не проверить, поэтому паять нужно как положено.

зы: Высоковольтное интересно, для разных восьминогих. А куча разъемов, как кто-то сказал выше, (мне) не нужна - ISP/UART/JTAG/DW можно вывести через один, если не через 6-пиновый, то через 10-пиновый. А питание можно взять от таргета.
Dimonira
Цитата(SKov @ Nov 6 2008, 17:15) *
Вообще, понижение питания меги для понижения уровня выходных сигналов - это слабое место вашей разработки . Я слышал, что профи так не делают wink.gif.

Вы доверяете слухам? Это чем же именно это слабое место? ВСЁ работает в ШТАТНОМ режиме.
Ну вот теперь знайте, - я так делаю. Мой более чем 20-летний опыт радиоинженера (не считая института и любительства) мне внутренним голосом нашептал, что так делать можно smile.gif
Когда найдёте этого профи, потребуйте у него объяснений. Потом расскажите. Посмотрим что это за Сухов такой smile.gif
Цитата(SKov @ Nov 6 2008, 17:15) *
Привязка сигналов к выходному питанию в pickite сделано грамотно - с помощью согласователей уровня (на одном транзисторе на каждую линию).

Эту схему я не видел, не знаю. Только с ваших слов. Я бы не сказал, что на транзисторах - это сильно грамотно. Это просто один из путей "обхода" проблемы малой кровью. Так что лучше просто этой проблемы не иметь, чтобы всё уже было согласовано.
Цитата(SKov @ Nov 6 2008, 17:15) *
Та же Мега88 у меня шьются в STK500 только в высоковольтном режиме, т.к. ресет используется в качестве выхода (ножек не хватало).

Вот это как раз не очень правильно. Ещё работая в ящике сразу после института (особенно на войну), научился понимать простую вещь - всегда должен быть запас: по количеству ножек в разъёмах, выводов микросхем, по току питания, по вольтажу комплектующих, по производительности процессора, по объёму памяти и т.д. и т.п. Сейчас с этим нет проблем. Контроллеры настолько дёшевы, что парить себе мозг, экономя на копейках, вместо того чтобы взять контроллер на 30руб дороже, просто себе потом дороже. Не видел ни одного девайса, который не требовалось потом доработать, что-то улучшить, добавить и т.д. Если же нет запаса, это приведёт к глобальным переделкам.
Цитата(SKov @ Nov 6 2008, 17:15) *
Прикидываться STK500 хотя бы в ограниченном варианте было бы неплохо. Но, видимо, это уже сложно. Жаль.

Это не столько сложно, сколько не нужно. У меня была такая мысль, но я её отбросил за ненадобностью. И потом не очень понятно насколько этот вариант может быть ограниченным. Сегодня Студия на какую-то неадекватную реакцию вашего программатора посмотрит сквозь пальцы, а завтра новая версия Студии пошлёт куда подальше. И что? Это ненужный гимор.


Цитата(Огурцов @ Nov 6 2008, 17:19) *
А питание можно взять от таргета.

Ну дык это ж не всегда можно. Некоторые вообще питание умышленно не выводят. Так что лучше иметь путь преодоления, - поставить своё питание. Благо с USB порта его взять не проблема. Конечно, всё что угодно от него не запитаешь, это понятно, мощи то только 2,5Вт максимум. И всё же, сегодня при малых потреблениях современных микросхем, такой мощи хватит для очень многих вариантов девайсов.
Но, кроме того, может понадобиться вариант прораммирования отдельно взятых чипов. Что тогда? Надо же запитать как-то. Тут то питание с программатора будет очень удобно. Подцепил панельку и только чипы успевай перетыкать.

Цитата(Огурцов @ Nov 6 2008, 17:19) *
качество пайки не проверить

Проверить то можно... Рентгеном. Тоже недешёвая процедура sad.gif
SKov
Цитата(Dimonira @ Nov 6 2008, 23:04) *
Вы доверяете слухам? Это чем же именно это слабое место? ВСЁ работает в ШТАТНОМ режиме.

Да не горячитесь, все нормально. Просто мне подумалось, что проще мудрить с преобразователями, чем выбирать более дорогой МК. Ну, если все штатно, то вопрос не в правильности схему, а в её оптимальности. Это уже дело вкуса, а о вкусах не спорят wink.gif

Цитата
Эту схему я не видел, не знаю. Только с ваших слов. Я бы не сказал, что на транзисторах - это сильно грамотно.

Транзистры - это сильно дешево. Но для такой разработки дешевизна не на первом месте, иначе бы не было опторазвязки, ДС-ДС, и прочих наворотов.

Цитата
Проверить то можно... Рентгеном. Тоже недешёвая процедура sad.gif

Можно рентгеном, а еще можно включить и попробовать - работает или нет.
Для такой "домашней" разработки вполне удобный и приемлемый способ wink.gif
Огурцов
Цитата(Dimonira @ Nov 6 2008, 20:04) *
Так что лучше иметь путь преодоления, - поставить своё питание.

В принципе, если ДЦДЦ небольшой, т.е. занимает не много места, можно просто его не ставить. Т.о. будет два варианта питания кто-кого.

Цитата(Dimonira @ Nov 6 2008, 20:04) *
Проверить то можно... Рентгеном. Тоже недешёвая процедура

Так и запаять, конечно, можно, только как-то это бессмысленно, пока есть выводные. Когда-то очень давно весьма приветствовал появление SMD(T) технологии и сразу отказался от монтажа в отверстия. А сейчас выводные SMD компоненты активно вытесняются безвыводными и (пока?) непонятно, что с ними делать. На коленке уже не спаяешь, а заказывать полный цикл на производстве ради изготовления какой-нибудь домашенй поделки для души выглядит что-то уж слишком дорого.

зы: Да, перечитал, пересмотрел - новые восьминожки без HV шьются.
Dimonira
Цитата(SKov @ Nov 6 2008, 23:32) *
Можно рентгеном, а еще можно включить и попробовать - работает или нет.
Для такой "домашней" разработки вполне удобный и приемлемый способ wink.gif

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

------------------------------
Пока пришлось прервать работу над новым вариантом схемы из-за срочной работы над автономным микропрограмматором (сейчас буду строчить про него новую темку), а пока решил уточнить кое-что.
Есть у меня проекты, в которых несколько вариантов выходных конфигураций (в одном проекте), поэтому описанные ранее команды в "Configure Tools..." следует поправить. Надо в аргументах двух команд заменить $PROJ_FNAME$ на $TARGET_BNAME$, чтобы "выход" этих команд тоже "назывался" по-разному, для каждой конфигурации. Но это ещё потребует перекрыть опцию линкера имени выходного файла в каждой конфигурации, - задать разные имена файлов.
Ну, а команды теперь станут такими:
Код
Menu Text: Create boot application
Command: $PROJ_DIR$\AES-Boot\create
Argument: -c cfg.txt -e $TARGET_DIR$\$TARGET_BNAME$_eeprom.hex -f $TARGET_DIR$\$TARGET_BNAME$_code.hex -o $TARGET_BNAME$.enc -l BLB11 BLB12
Initial Directory: $PROJ_DIR$\AES-Boot\

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

Кроме этого, для последней команды надо снять флажок "Redirect to Output window", а то update.exe выдаёт в это окно сумбур, т.к. там выдаётся индикатор прогресса. Так что пусть работает в отдельном консольном окне, там с отображением будет нормально.
SKov
Цитата(Dimonira @ Nov 9 2008, 22:20) *
Этот способ хорош только тогда, когда новый девайс спаял, включил, а он работает.
А вот если не работает, то тогда на что думать? Толи припаяли плохо, толи косяк схемы, толи неисправная микруха и т.д.
Рентген же может сказать почти наверняка - нормально припаяно или нет.

Ничего не имею против тов. Рентгена wink.gif
Однако, новый прибор никто не паяет сразу весь целиком.
Сначала достаточно припаять разъем USB, потом CP2102 с парой кондюков, потом
бросить временную перемычку между Rxd и Txd у CP2102, т.е. замкнуть выход на вход.
И попробовать в гипертерминале, как проходит эхо от выхода на вход.
Очень хорошая диагностика.
Не хуже рентгена wink.gif
Dimonira
Цитата(SKov @ Nov 9 2008, 23:11) *
Однако, новый прибор никто не паяет сразу весь целиком.

Это только когда сам, на коленке smile.gif
Dimonira
Сразу запамятовал написать, что я не проверял работу программатора с контроллерами, имеющими более 64К памяти (таких не имею в своих запасах). Так что если кто-то попробует, было бы интересно узнать результат (это тёмное место протокола и как себя ведёт студия на "стыке" перехода границы 64К точно неизвестно, так что без проверки утверждать правильность работы невозможно).

-------------------------------------------------------

Пока руки не дошли до разводки платы и сборки нового варианта программатора, решил положить тут хотя бы новую схему.
Кардинальное отличие в питании. Теперь контроллер программатора питается от такого же напряжения питания, как и целевой контроллер. Для этого есть перемычки для установки этого напряжения из вариантов: 5, 3.6, 3.3, 3, 2.7, 1.8 Вольт. Для реализации этой идеи надо поменять контроллер на Мегу88V. Софт под неё пока тоже не переделал, впрочем это не сложно. Т.к. в новом контроллере АЦП измеряет при другом референсе (питание же может быть 1.8 В), то делители с цепей питания изменены. Это тоже надо учесть в софте. Как и раньше, можно запитать целевую схему с программатора, но уже не только 5 Вольтами, но и всеми остальными вариантами напряжений.
Преобразователи уровней теперь другие и перенесены в новое место - между развязкой и контроллером программатора. Так что контроллер программатора теперь напрямую выведен на разъём ISP (ну, разве что через резисторы).
На дополнительный разъём выведен интерфейс RS-232 в уровнях логики (тоже в уровнях выбранного напряжения питания), причём после развязки. Его можно использовать, например, для прошивания ARM-ов.
Кроме того, с микросхемы FT232RL выведен на разъём интерфейс аналогичный интерфейсу PonyProg (ранее просто тупо выводил все концы, что наверное не очень нужно). Надеюсь, что в этом новом варианте схемы (т.к. контроллер напрямую подключён к ISP) можно будет таки запрограммировать этот программатор без другого программатора, прямо с компьютера программой PonyProg (соединив соответствующие цепи с этого разъёма и разъёма ISP).
Поскольку питание программатора теперь может быть разным, то светодиоды, которые включает контроллер, подключены на 5В неизменных (с DC/DC), чтобы яркость была постоянной, а чтобы управлять светодиодами при низких питаниях контроллера (чтобы он не погорел), добавлены внешние ключевые транзисторы.
В качестве кнопки SB1 я поставил т.н. тактовую кнопку (Switronic IT 1181). Кнопка SB2 с фиксацией, небольшая такая вертикальная, есть такие в магазине (Switronic MPS 580), но можно поставить и простые джамперы, как и XT2, XT3. Дело вкуса.
Кварц 3.6864МГц (а то на схеме не написано).
Индуктивность L2 прежняя, а L1 решил поставить попроще - в корпусе 1206 т.н. ferrite bead.
Цепь, ранее называемую PULSE, переименовал в более подходящий CLK.
6-пиновые разъёмы решил вообще выкинуть, так что оставил 10-пиновые, но с разным шагом. Всё-таки переход с 10 на 6 пин сделать плоским кабелем не сложно (по сравнению с переходом с одного шага на другой).
Dimonira
Наконец-то решился, развёл плату, заказал её и собрал программатор Dimoniprog-M по последней схеме. Переделал софт под Мегу88 как самого программатора, так и AES-Boot загрузчика (его под Мегу88 нет, но это, оказалось, не главная проблема). Вчера бился именно с загрузчиком. Не думал, что будет такая подстава от Атмела. Пришлось вникать и разбираться с их кодом (AVR231 - AES Bootloader). Посмотрев его, возникает ощущение, что всякие подобные "советы" производителя готовятся какими-нибудь студентами, практикантами и т.п. Ну как можно было вставить запуск ватчдога в цикл прошивальщика, надеясь на него в качестве выхода из цикла прошивания, и так и оставить ватчдог в "свободном плавании" уже после этого "запланированного" сброса? Я не понимаю. Да и вообще нахрен он там нужен по большому счёту? Только чтобы в итоге выйти из самими вставленного бесконечного цикла по окончанию прошивания? Ну это ж бред! Можно было выйти и простым return. Кто-то, видимо, именно практиковался...
Аналогичные мысли о практикантах и студентах ещё возникают, например, когда смотришь на реализацию платы АВР-Дракона (разводка DC/DC), которую я чуть было не купил в своё время, но вовремя опомнился. В общем, как известно, на других надейся, а сам не плошай.
Короче, дело было уже ночью, когда я внёс нужные правки в этот долбаный (весь вечер угробил) AES Bootloader и всё стало нормально загружаться и работать. Помимо ватчдога (оставил его, хэ с ним, но добавил код, чтобы он "расслабился") пришлось добавить включение подтяжки на вход, к которому подключена кнопка перехода на загрузку, иначе контроллер независимо от состояния кнопки всегда входил в режим загрузки (в родном железе STK500, на котором тренировались загрузчико-писатели, видимо, эта подтяжка есть, иначе я не понимаю...).
Сегодня ещё софт погоняю, потом отпишусь.

Прискорбно, но по результатам вчерашних разборок пришлось сделать такой вывод:
Первая схема программатора Dimoniprog, использущая ПУ ADG330x, не рекомендуется для повторения!
Analog Devices меня сильно огорчил. Тоже получается подстава, не ожидал от них. ADG330x - это ещё тот девайс. Возможно, его тоже разработали студенты-практиканты.
Траблы полезли когда я попытался прошивать новый программатор (Dimoniprog-M) старым (Dimoniprog). При том, что контроллер нового варианта "сидит" прямо на разъёме, прошить старым программатором его не удалось. Когда я посмотрел (на работу притащил) осциллографом сигналы, то удивился как такое вообще может быть: наличие подтяжки на входе сброса целевого кристалла (Меги88В в новом программаторе) приводило к тому, что сигнал на выходе ADG330x был в каком-то промежуточном состоянии, не нуль, не единица, а хрен знает что, при этом формируемый сигнал сброса, точнее его снятие на некоторое время, выглядело как импульс над этим непонятным промежуточным уровнем. В общем, нуля на сбросе я так и не увидел. По другим выходам сигналы шли вроде нормально. Я сделал вывод, что ADG330x, являясь двунаправленным ПУ с "автоопределением" направления "передачи" (в этом, видимо, сабака и зарыта) во многих ситуациях "не понимает" что он должен делать и в каком сотоянии "держаться", толи держать выходы, толи считать эти же пины входами. Так что область применения ADG330x имхо ограничена только ситуациями, когда с обеих сторон от ПУ всё заранее определено и однозначно (подтяжки, уровни, питание и т.д.). И в качестве "оконечного" интерфейса программатора явно не годится. Именно по причине таких траблов я и не рекомендую повторять первый вариант схемы программатора.

Напротив, второй вариант получился свободным от таких траблов, поскольку ПУ там стоят "внутри" схемы, да к тому же они теперь другие, в которых направление передачи фиксировано подачей нужного уровня на управляющий вход. Не говоря уже о других преимуществах новой схемы: можно питать target на выбор разными напряжениями или просто запитать контроллерную часть программатора внешним питанием от target, не думая о совместимости уровней (если просто снять перемычку выбора питания XT2, о чём на схеме я забыл упомянуть в описании функций перемычек).
Новый программатор (Dimoniprog-M), в отличие от старого, спокойно прошивается программой PonyProg2000 (для Меги88 надо скачать последнюю версию). Я на работе как раз ей и воспользовался (т.к. на работе никаких других программаторов не было, а мой старый вариант не шил). Так что никакого программатора не нужно. Сделал проводки, соединил разъёмы и вперёд. Но эта затея, конечно, не быстрая. Прошивка только загрузчика (2 КБ) занимала более 10 минут, а прошивка понипрогом самой программы программатора заняла более 30 минут (точно не засекал, не дождавшись конца шития, пошёл обедать). Что там с софтом пони-прога намудрил итальянец, не знаю. Видимо "исторически" как сложилось, так и осталось. Я бегло глянул сигналы, там получался такт что-то не менее 5 мс на бит! Так что с другого программатора всё же быстрее smile.gif Правда, он ещё должен быть. Однако при использовании бут-загрузчика эта процедура начального программирования нужна только один раз, поэтому подождать 10-15 минут пока прошивается бут-загрузчик не обременительно. А дальше уже самим бут-загрузчиком заливать прошивку, это быстро, секунды 4-5.
Dimonira
Вот зафотил новый вариант:
Огурцов
Куул! Есть ли лишние платы на продажу ? Можно ли замениить FTDI на Prolific ?
Dimonira
Покрутил немного вечером новый вариант в работе, вроде работает без проблем, не то что старый, который кабенился в некоторых ситуациях. И на более длинном ISP кабеле, на котором старый не работал, этот работает. Завтра ещё покручу, посмотрю.
Оказалоь, что VREF имеет достаточный разброс (по даташиту от 1 до 1.2 В), так что измеряемое напряжение питания с АЦП получалось с ошибкой в 60 мВ (при 5В). Так что "выбрал" отклонение референса через коррекцию величины сопротивлений делителей, благо такую фичу встроил.

Цитата(Огурцов @ Nov 26 2008, 23:09) *
Куул! Есть ли лишние платы на продажу ? Можно ли замениить FTDI на Prolific ?

Я заказывал 5 плат, сделали 6. Но мне самому то столько не надо. Себе может ещё один соберу для подстраховки. Да и платы же повторно заказать можно. За подготовку производства берут деньги только в первый раз, так что теперь не так накладно.

А зачем Prolific? Это же тупиковый вариант. С драйверами под новые и некоторые операционки проблемы - их нет (под Висту, например). Причём делать их производители не собираются, перекладывая драйвера на плечи тех, кто использует их микрухи. Даже откровенно посылают нах.
Так что если не нравится FTDI, то тогда уж менять на SiLabs, они драйвера делают для всего.
bloodden
Взял бы у Вас 1 шт. WMZ или WMU. Пустую плату. Сикока?
Огурцов
Нужна 1 плата - написал в личку.
Dimonira
По поводу комплектующих: у меня запаса практически нет, почти всё ушло на эти образцы sad.gif
То, чего у меня не было, я покупал в Мегаэлектронике (прошу не считать рекламой). По-моему там можно всё что нужно купить. Вроде и выслать они тоже берутся. Резисторы и электролиты брал в Микронике. Но не знаю, будут ли они высылать. Изоляторы и DC/DC покупал в Элтехе. Разъёмы, кнопки, светодиоды брал у нас на "толчке" (Юнона).
Выполнять роль поставщика и заниматься закупкой всей этой рассыпухи и потом высылать как-то не очень охота, да и времени особо нет. И потом может чего-то не быть, придётся ждать или искать в другом месте. Пообещаешь, а потом не сможешь купить. Как-то это напряжно. Если только набрать на какой-то большой заказ, но тогда деньги надо вложить, а где взять. И т.д.

Вечером выложу перечень деталюх для нового варианта. Заодно посчитаю во что выливается закупка в розницу всех деталюх. Цены как-то незаметно для меня подросли. Например, раньше (правда, давненько уже) резисторы покупал по 20коп, а в этот раз уже по 1руб.

По поводу рассылки плат с оплатой WM. В принципе это возможно, WM имеется. Если понадобится платы изготовить, то это неделя максимум (Резонит). Сколько стоит сама плата, я дома посмотрю (запамятовал) и вечером скажу.
Я вот только уже сто лет ничего не посылал, ни почтой, ни курьерами. Всё только получал smile.gif
Вот и думаю, как эту плату высылать проще? Тем более за пределы (в Киев тот же; эх, неделей бы раньше, я бы с шефом отправил, он туда уехал в командировку). Хотелось бы так, чтобы расходы по пересылке оплачивал получатель при получении, а то хрен знает сколько это куда стоит. Это в наше время возможно? Просветите, плз, кто в этом деле знаток. А то на нашу почту ходить и узнавать, прямо скажу, - желания нет, да и толком там ничего не узнаешь. Они там делают очень большое одолжение для нас, что за гроши выходят на работу, так что отношение соответствующее.
Deka
Покупатель может отправить к Вам курьера, а саму посылку оплатить при получении. Т.е. от Вас просто понадобится встретиться с курьером и всё.
Dimonira
Вечером запаял ещё один образец. Заработало всё на ура. Зашил его первым образцом тоже на ура. Во втором варианте поставил светодиоды 0805 (вместо 1206).

Выкладываю схему с перечнем:

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

Софт позже выложу, с пояснениями. Сейчас времени нет.

На счёт стоимости платы. Не знаю, ну, пусть будет пока 150р. Пока, т.к. не знаю сколько запросят за платы при повторном заказе. У Резонита есть калькулятор, но что-то там у них непонятно с ценами, пока не выяснил у них что по чём. А то в калькуляторе одно, а счёт присылают с другой суммой...

----------------------------------------

Тут на работе появилась потребность для производства упростить программирование моих плат контроллеров гигабитного эзернета с Xilinx Platform Flash - памятью. Вот я и подумал сделать на этом программаторе проигрыватель SVF (XSVF) файлов, т.е. шить по JTAG интерфейсу флеша (ISP соединить с JTAG). Для этого надо будет либо дополнить текущую прошивку, либо отдельную сделать под это дело. Что-то типа режима трансляции состояний JTAG линий интерфейса с компьютера. По идее тогда можно много чего другого шить, что имеет JTAG интерфейс.

Цитата(Deka @ Nov 27 2008, 22:02) *
Покупатель может отправить к Вам курьера, а саму посылку оплатить при получении. Т.е. от Вас просто понадобится встретиться с курьером и всё.

Ну, мне то такой вариант нравится, но может такая доставка будет накладна?
А как же гарантия оплаты? Вдруг покупатель не заплатит? Они что, готовы рисковать?
Dimonira
Посчитал по розничным ценам (там где я покупал) во что выливается закупка деталей. Оказалось примерно 800р на девайс. Мне показалось, что DC/DC за последние пару недель успели подорожать чуть ли не на 50р.
Правда, когда смотришь на цену похожего девайса от Олимекс (AVR-ISP500-ISO) в 5-6 тысяч рублей (eFind), то затраты в тыщу (с платой) уже не кажутся большими. А разница в наличии памяти "на борту" и возможности прошивать автономно по нажатию кнопки (та идея, что я в теме про BootProg вещал). По идее к моему варианту можно добавить микруху памяти и будет не хуже (кнопка уже имеется smile.gif ), зато сильно дешевле.
Можно сэкономить примерно 300р на изоляции, если не ставить DC/DC и ADUM1201, замкнув соответствующие связи. Но мне кажется это неоправдано, всё же изоляция дело полезное, особенно в целях безопасности компьютера.
Pyku_He_oTTyda
Цитата
Dimonira

Написал в личку
ukpyr
Цитата
Можно сэкономить примерно 300р на изоляции, если не ставить DC/DC и ADUM1201
я оценил важность изоляции когда бабахнула плата управления асинхронником (многие дорожки и детали испарились, ноль отгорел, а варисторы светились еще минут десять), к которой был подключен мой прог. Ноутбук стоимостью 1,5К$ был спасен.

еще вопрос - зачем выводить bitbang-isp из ft232, ведь контроллер первый раз можно запрограммировать через выходной разъем (только вывести туда его Reset), а дальше - через бутлоадер ?

Цитата
Вот я и подумал сделать на этом программаторе проигрыватель SVF (XSVF) файлов
вообще назрела необходимость в замене зоопарка Ponyprog/ICprog/Willem/BBlaster/PICprog и т.д. на универсальный с подключением по УСБ, с встроенной памятью для автономной прошивки (массовые производители скажут спасибо), и работой под Win/Lin/Mac. Для быстрого JTAG имхо частотка маловата, наверно нужен более быстрый контроллер. К вашему варианту имхо нужно добавить генератор высокого (для ATTiny, PIC и т.п.), вывести лишние выводы на вых. разъем (для прогр. устройств с параллельной шиной данных (NAND, LPC-flash, AVR parallel)).
Можно добавить разъем micro-sd, на которую писать файлы прошивок и сценарий программирования.
Еще идея - адаптер USB-radio-serial/isp на CC1101 - для прошивки с удаленного компьютера.
Dimonira
Цитата(ukpyr @ Nov 28 2008, 15:28) *
еще вопрос - зачем выводить bitbang-isp из ft232, ведь контроллер первый раз можно запрограммировать через выходной разъем (только вывести туда его Reset), а дальше - через бутлоадер ?

1. Вывод интерфейса PonyProg сделан, чтобы шить контроллер программатора, не имея другого программатора (не у всех же он есть). Получается, что спаял, подключил к компу и зашил PonyProg-ом бут.
2. Если внимательно читать тему и смотреть схему wink.gif , то можно увидеть, что Reset через перемычку выведен на ISP интерфейс. Так что программирование программатора через ISP не возбраняется. Я так второй экземпляр и прошивал.

Цитата(ukpyr @ Nov 28 2008, 15:28) *
вообще назрела необходимость в замене зоопарка Ponyprog/ICprog/Willem/BBlaster/PICprog и т.д. на универсальный с подключением по УСБ, с встроенной памятью для автономной прошивки (массовые производители скажут спасибо), и работой под Win/Lin/Mac. Для быстрого JTAG имхо частотка маловата, наверно нужен более быстрый контроллер.

Автономную прошивку я "сделал" в своей теме про BootProg. К сожалению, эта мысль пришла уже после того, как я сделал программатор Dimoniprog. Так что автономность тогда не предусматривал.
По поводу быстрого JTAG, может тоже буду делать. Пока попробую небыстрый сделать на этом же железе (Dimoniprog-M). А дальше видно будет, как раз дойдёт дело до продаж моста нового поколения от FTDI под hi-speed USB (FT2232H, FT4232H), там уже под JTAG заточено плюс высокая скорость.

Цитата(ukpyr @ Nov 28 2008, 15:28) *
К вашему варианту имхо нужно добавить генератор высокого (для ATTiny, PIC и т.п.), вывести лишние выводы на вых. разъем (для прогр. устройств с параллельной шиной данных (NAND, LPC-flash, AVR parallel)).
Можно добавить разъем micro-sd, на которую писать файлы прошивок и сценарий программирования.

Ну, конечно, много чего можно. Но есть ли нужда? Я железо делал изначально под себя, а у меня таких нужд нет. А выложил сюда в качестве примера реализации железа (программатора) под софт, реализующий протокол STK500v2. Взяв софт, можно (с небольшими доработками, а может и большими?) "завести" с его помощью железо любой навороченности (в пределах разумности).
acorn
Dimonira, а софт выложишь?
Уперся я, млин, в AES бутлоадер невовремя - надо другим заниматься, а эта штука не работает, и разбираться неинтересно - собаку вроде поправил, так теперь CRC не проходит при старте - хочется взять рабочее и не отвлекаться от основной задачи - устал сегодня.
Насчет FT2232H - поможет-ли? Разве в пропускной канала проблема?
Dimonira
Цитата(acorn @ Nov 29 2008, 00:11) *
Dimonira, а софт выложишь?
Уперся я, млин, в AES бутлоадер невовремя - надо другим заниматься, а эта штука не работает, и разбираться неинтересно - собаку вроде поправил, так теперь CRC не проходит при старте - хочется взять рабочее и не отвлекаться от основной задачи - устал сегодня.

Да, завтра к вечеру наверное. Или послезавтра. Короче на выходных.
CRC я не правил, там нечего править. Может не соответствует загрузчик хостовый буту?
Впрочем, не парься, обожди малость. Займись другим...

Цитата(acorn @ Nov 29 2008, 00:11) *
Насчет FT2232H - поможет-ли? Разве в пропускной канала проблема?

А в чём проблема? Я про новые чипы написал только потому, что если делать что-то, то уж лучше освоить новое "железо" (интересу больше).
Dimonira
Итак, свершилось smile.gif
Я написал поясняющие тексты описаний и инструкций, так что теперь выкладываю софт для варианта программатора Dimoniprog-M на Меге88:
Нажмите для просмотра прикрепленного файла
Поскольку основные пояснения содержатся в текстовых файлах внутри архива, тут расскажу только об отличиях от старого варианта.
Софт переделан под Мегу88. Это "потянуло" за собой изменения для UART (названия регистров и некоторых битов другие) и процедуры измерения АЦП: другое опорное напряжение и сопротивление делителей на входах. Поскольку опорное стало меньше (1.1В), то делитель пришлось "усилить", для чего сопротивления в нижнем плече теперь стоят 8.2кОм, а потому, вводить их значения в старом формате (было 220 для 22кОм) стало непригодным. Так что теперь сопротивления нижних плечей делителя вводятся иначе (в 10 раз точнее), - 820 для 8.2кОм. Соответственно функция пересчёта показаний АЦП изменена и процедура ввода в терминале тоже (диапазон ввода тоже расширен).
Поскольку светодиоды чтения/записи ISP теперь подключены через транзисторы, то управление ими пришлось инвертировать.
Изменена (и переименована) функция настройки выдачи тактовой частоты ISP CLK. В прежнем софте при отключении такта (параметр прескалер N=0) получалось, что выход CLK оставался в активном состоянии, да ещё в произвольном положении - либо 0, либо 1. Так что теперь я сделал, чтобы при отключении такта выход переходил в третье состояние, "отключался" от ISP разъёма.
Кнопка входа в бут-загрузчик теперь получила своё назначение и в основном режиме работы программатора. Если она нажимается когда программатор уже включён, то происходит сброс режима обмена по STK (если он был к тому моменту) в терминальный. Это сделано для того, чтобы не заморачиваться перевтыканием программатора в USB если вдруг захочется поменять, например, частоту ISP CLK. Но теперь не следует нажимать эту кнопку в момент, когда программатор что-то программирует (по идее ничего страшного, но всё же).
Прежний AES-boot нормально не работал. Там была некорректная работа с ватчдогом (Атмел напорол) и в виду отсутствия внешней подтяжки на входе подключения кнопки входа в бут-загрузку, происходил постоянный вход в режим загрузки при включении. К тому же у Атмела не было варианта для Меги88. Всё это теперь поправлено, а исходник AES-boot добавлен в проект (вариант для Меги88). Кроме того, загрузчик дополнен индикацией своего состояния: при входе в загрузку и пока она не завершена (плюс 2 секунды) непрерывно горят светодиоды R, W; при ошибке по контрольной сумме (при включении питания всегда делается эта проверка) они попеременно мигают. Это же мигание будет и при ещё пустом контроллере, когда зашит только загрузчик.

Для тех, кому исходники софта не нужны и вникать нет желания или потребности, а надо только "оживить" программатор, следует прочесть инструкцию AES-Boot\instruction.txt и сделать что там написано.

ЗЫ. Новое предназначение девайса - в качестве тестера smile.gif Если перемкнуть XT4 и подключить два конца к ISP разъёму (VTG и GND), то можно ими измерять напряжение в пределах 0-5.5В. Или использовать в качестве логического пробника smile.gif Правда в терминальной программе придётся всё время "тыкать" команду 'a'. А можно сделать программку, чтобы автоматом в цикле посылала команду и отображала результат...
Ну, это, скорее, шутка smile.gif

Всё пока...
Dimonira
В инструкции по прошиванию забыл указать настройки программы PonyProg2000 (если через неё зашивается бут-загрузчик). Потом инструкцию поправлю, а пока приведу тут. Открываем Setup->Interface setup, там в диалоге ставим:
выбираем Serial, "SI prog API", нужный COM, ставим три галки на: "Invert SCKL", "Invert D-IN", "Invert D-OUT", а на "Invert Reset" галка не нужна.
defunct
Цитата(Dimonira @ Nov 5 2008, 11:19) *
Ну, это кому как. Вообще я бы сказал (не конкретно про ISP программатор), что средства для разработки стоят дорого. Иной раз очень дорого. Так что для личных целей могут быть не всем по карману.

Давайте рассматривать не "иной раз", а конкретно этот случай.
Скажите зачем нужно исп. кустарный программатор (Ваш, protoss'a или AvrReal и т.п.) если есть AVRISP, есть его схема (проще вашей в разы, и дешевле для изготовления в домашних условиях) есть прошивки и есть поддержка производителя.

Что вы добавили? USB конвертер?

Дык не проще на FT232 сделать обычный конвертер USB<->COM, и отдельно сделать обычный COM AVRISP. К конвертеру подключать хоть зоопарк разных устройств, в т.ч. и AVRISP...
Dimonira
Цитата(defunct @ Dec 1 2008, 20:42) *
Давайте рассматривать не "иной раз", а конкретно этот случай.
Скажите зачем нужно исп. кустарный программатор (Ваш, protoss'a или AvrReal и т.п.) если есть AVRISP, есть его схема (проще вашей в разы, и дешевле для изготовления в домашних условиях) есть прошивки и есть поддержка производителя.

Что вы добавили? USB конвертер?

Дык не проще на FT232 сделать обычный конвертер USB<->COM, и отдельно сделать обычный COM AVRISP. К конвертеру подключать хоть зоопарк разных устройств, в т.ч. и AVRISP...

Уважаемый "гуру" форума, а вы вообще тему с начала читали? Такое ощущение, что нет.
Иначе бы вопрос "зачем?" не стоял бы. Схема AVRISP проще в разы? После добавления конвертера USB<->COM тоже будет проще в разы? А изоляция и питание целевой схемы у AVRISP тоже есть, причём разными напряжениями? Хотелось бы конкретно ваши "разы" увидеть в конкретном виде.
Я сделал программатор, который удовлетворяет моим требованиям. И всё. И выложил для тех кому надо аналогичное. Вам не надо? Ну и не надо, я же вас ни к чему не призываю! Можете делать AVRISP.
На мой взгляд, проще моей схемы вы не сделаете (при условии тех же возможностей!). Если часть возможностей исключить, тогда да, можно проще.

Поддержка производителя? Даже не смешно. Мне почему-то кажется, что её для AVRISP больше не будет. Или вы ещё надеетесь? smile.gif А зачем она там?

Лично я терпеть не могу "зоопарка" устройств (байт-бластеры, житаги и т.п.), которые надо как-то соединять, подключать, провода всякие там, кабели. Достало. Меня раздрожает даже один программатор, который надо подключать для прошивания контроллеров. Но тут уж приходится. А вот, например, для АРМа не надо было, шил сразу через USB и это очень радовало!

Я вообще не понял зачем вы это сюда написали, а? Настроение плохое?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.