|
|
  |
AvrUsb500 by Petka, вариант программатора AVR, доступный для простого изготовления |
|
|
|
Feb 19 2008, 13:36
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 11-12-07
Из: Россия, Москва
Пользователь №: 33 198

|
Цитата(Petka @ Feb 19 2008, 12:53)  Так пони вроде и под *nix есть! Надо будет посмотреть что там к чему. Идея "самопрограммирующегося программатора" мне нравится. Более того, реализация Guido очень интересна, но это все-таки огород, потому что надо патчить uisp для реализации им битбанга. Метод, предложены Вами куда интересней, потому что позволяет шить контроллер штатными средствами без костылей типа битбанга. Если удасться прошить контроллер uisp/avrdude'ом, то, вероятно, переделаю программатор. Бляго, для проверки у меня есть все необходимое: отладочная плата с FT232RL и отладочная плата с mega8/mega88. Остается понять какой режим используется, usip точно умеет инвертировать сигналы, насчет avrdude - не знаю. Буду пробовать.
|
|
|
|
|
Feb 19 2008, 15:20
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 11-12-07
Из: Россия, Москва
Пользователь №: 33 198

|
Ога! Идея ясна. Ваш вариант - всего лишь разновидность serial bit banging, посмотрев конфигурацию avrdude нашел много различных вариантов, в том числе и тот, что у вас, обзывается sipprog (он же ponyser). Остается вопрос: почему в настройках понипрога Вы инвертируете rts dtr и cts? Потому, что соотв. выходы FT232 инвертированы? Насколько я помню, FT232Rx поддерживают конфигурирование этих линий через утилиту, которая пишет во встроенный EEPROM. Сконфигурировав таким способом FT232Rx можно отвязаться от понипрога и использовать более универсальный avrdude (впроем, его можно использовать в любом случае т.к. он поддерживает индивидальную конфигурацию шин). Однако, реализовав интерфес, называемый dasa можно сделать куба более универсальный самопрограмматор, потому что этот режим штатно поддерживается и avrdude и uisp. Я попробую реализовать именно его. P.S. Да, и еще, в вашем HOWTO первым шагом написано соединить разъемы X2 и X3, в после программирование разъединить X2 и X3, соединив X2 с X4. Думаю все должно быть с тоночтью до наоборот: во время прошивки самого программатора X2 соединяется (который является его рессетом), а в шататном режиме Х2 соединяется с Х3, который RX микроконтроллера.
Сообщение отредактировал cz0 - Feb 19 2008, 15:37
|
|
|
|
|
Feb 19 2008, 15:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(cz0 @ Feb 19 2008, 18:20)  Ога! Идея ясна. Ваш вариант - всего лишь разновидность serial bit banging, посмотрев конфигурацию avrdude нашел много различных вариантов, в том числе и тот, что у вас, обзывается sipprog (он же ponyser). Остается вопрос: почему в настройках понипрога Вы инвертируете rts dtr и cts? Потому, что соотв. выходы FT232 инвертированы? Насколько я помню, FT232Rx поддерживают конфигурирование этих линий через утилиту, которая пишет во встроенный EEPROM. В оригинальной схеме ponyser уровни +12в, -12в (RS232) с помошью диодов, резисторов, стабилитронов преобразуются соответственно в +5в и 0в. (а ft232 делает 0в и +5в соответственно ) Отсюда и инверсия. Можно и через утилиты, но зачем? Не вижу смысла.
|
|
|
|
|
Feb 19 2008, 20:23
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 11-12-07
Из: Россия, Москва
Пользователь №: 33 198

|
Цитата(Petka @ Feb 19 2008, 18:29)  В оригинальной схеме ponyser уровни +12в, -12в (RS232) с помошью диодов, резисторов, стабилитронов преобразуются соответственно в +5в и 0в. (а ft232 делает 0в и +5в соответственно ) Отсюда и инверсия.
Можно и через утилиты, но зачем? Не вижу смысла. Я попробовал зашить mega8 с вашей разводкой (благо есть отладочная плата на FT232RL и ATMega8) - все отлично прошилось. Однако мне никак не удется заставить работать avrdude и uisp. Это странно!
|
|
|
|
|
Feb 19 2008, 21:56
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 11-12-07
Из: Россия, Москва
Пользователь №: 33 198

|
Цитата(Petka @ Feb 19 2008, 23:40)  Что именно не получилось? Что получилось? Коды ошибок.... подробнее =) Что-то косячит именно в GNU/Linux, в винде все отлично зашилось avrdude'ом командой avrdude -p atmega8 -P com4-c invdasa2 -i 10 -B 10 -b 9600 -U flash:w:display.hex где в avrdude.conf #---------------------- programmer id = "invdasa2"; desc = "dasa2 with inverted rts, dtr and cts lines"; type = serbb; reset = ~3; sck = ~7; mosi = ~4; miso = ~8; ; #---------------------- Похоже, проблемы в реализации обмена с USB в GNU/Linux. Версия avrdude таже, все вроде так же - ан нет, не работает. Кстати, сответую к эксплуатации именно avrdude вмсето PonyProg т.к. заливается в десятки раз быстрее. Буквально 20 - 30 секунд.
|
|
|
|
|
Feb 20 2008, 07:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(cz0 @ Feb 20 2008, 02:23)  Нда.. все веселее и веселее. Приладил к ft232r 47hc04 дабы аппаратно инвертировать сигналы. Это дало возможность шить контроллер без соотв. галочек - это раз, а в avrdude указать стандартный ponyser/siprog. В виндовзе все великолепно заработало. В GNU/Linux все так же мимо кассы: ioctl("TIOCMGET"): Bad address в avrdude и неизвестный девайс в uisp, хотя программатор в точности dasa2/ponyser/siprog. Забавно. Толи лыжи не едут... толи.. даже не знаю что. Похоже это баг, буду писать в багтрак avrdude. Скорее всего причина такова: Ponyprog после дёргания DSR, дожидается когда линия ДЕЙСТВИТЕЛЬНО изменит состояние (пони контролирует RTS). И только после этого продолжает работу. Такой механизм гарантирует независимость от задержек по обмену USB и задержек в ОС и драйверах. avrdude не контролирует RTS, поэтому обмен быстрее, но ненадёжнее. (Отсутствует обратная связь по RTS). C avrdude я не разбирался, но вероятно его можно настроить и на более правильный обмен. попробуйте, расскажите.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|