Jump to content

    
Sign in to follow this  
Petka

AvrUsb500 by Petka

Recommended Posts

Сознаюсь, виноват :) Я посмотрел Вашу схему, достаточно интересно. А есть ли такой режим программирования в avrdude или uisp? Я не проактикую Виндовз так что понипрога у меня нет.

Share this post


Link to post
Share on other sites
Сознаюсь, виноват :) Я посмотрел Вашу схему, достаточно интересно. А есть ли такой режим программирования в avrdude или uisp? Я не проактикую Виндовз так что понипрога у меня нет.

Так пони вроде и под *nix есть!

Share this post


Link to post
Share on other sites
Так пони вроде и под *nix есть!

Надо будет посмотреть что там к чему. Идея "самопрограммирующегося программатора" мне нравится. Более того, реализация Guido очень интересна, но это все-таки огород, потому что надо патчить uisp для реализации им битбанга. Метод, предложены Вами куда интересней, потому что позволяет шить контроллер штатными средствами без костылей типа битбанга. Если удасться прошить контроллер uisp/avrdude'ом, то, вероятно, переделаю программатор. Бляго, для проверки у меня есть все необходимое: отладочная плата с FT232RL и отладочная плата с mega8/mega88. Остается понять какой режим используется, usip точно умеет инвертировать сигналы, насчет avrdude - не знаю. Буду пробовать.

Share this post


Link to post
Share on other sites

Ога! Идея ясна. Ваш вариант - всего лишь разновидность 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 микроконтроллера.

Edited by cz0

Share this post


Link to post
Share on other sites
Ога! Идея ясна. Ваш вариант - всего лишь разновидность serial bit banging, посмотрев конфигурацию avrdude нашел много различных вариантов, в том числе и тот, что у вас, обзывается sipprog (он же ponyser). Остается вопрос: почему в настройках понипрога Вы инвертируете rts dtr и cts? Потому, что соотв. выходы FT232 инвертированы? Насколько я помню, FT232Rx поддерживают конфигурирование этих линий через утилиту, которая пишет во встроенный EEPROM.

В оригинальной схеме ponyser уровни +12в, -12в (RS232) с помошью диодов, резисторов, стабилитронов преобразуются соответственно в +5в и 0в. (а ft232 делает 0в и +5в соответственно ) Отсюда и инверсия.

 

Можно и через утилиты, но зачем? Не вижу смысла.

Share this post


Link to post
Share on other sites
В оригинальной схеме ponyser уровни +12в, -12в (RS232) с помошью диодов, резисторов, стабилитронов преобразуются соответственно в +5в и 0в. (а ft232 делает 0в и +5в соответственно ) Отсюда и инверсия.

 

Можно и через утилиты, но зачем? Не вижу смысла.

Я попробовал зашить mega8 с вашей разводкой (благо есть отладочная плата на FT232RL и ATMega8) - все отлично прошилось. Однако мне никак не удется заставить работать avrdude и uisp. Это странно!

Share this post


Link to post
Share on other sites
Я попробовал зашить mega8 с вашей разводкой (благо есть отладочная плата на FT232RL и ATMega8) - все отлично прошилось. Однако мне никак не удется заставить работать avrdude и uisp. Это странно!

Что именно не получилось? Что получилось? Коды ошибок.... подробнее =)

Share this post


Link to post
Share on other sites
Что именно не получилось? Что получилось? Коды ошибок.... подробнее =)

Что-то косячит именно в 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 секунд.

Share this post


Link to post
Share on other sites

Нда.. все веселее и веселее. Приладил к ft232r 47hc04 дабы аппаратно инвертировать сигналы. Это дало возможность шить контроллер без соотв. галочек - это раз, а в avrdude указать стандартный ponyser/siprog. В виндовзе все великолепно заработало. В GNU/Linux все так же мимо кассы: ioctl("TIOCMGET"): Bad address в avrdude и неизвестный девайс в uisp, хотя программатор в точности dasa2/ponyser/siprog. Забавно. Толи лыжи не едут... толи.. даже не знаю что.

Share this post


Link to post
Share on other sites

Нда.. все веселее и веселее. Приладил к ft232r 47hc04 дабы аппаратно инвертировать сигналы. Это дало возможность шить контроллер без соотв. галочек - это раз, а в avrdude указать стандартный ponyser/siprog. В виндовзе все великолепно заработало. В GNU/Linux все так же мимо кассы: ioctl("TIOCMGET"): Bad address в avrdude и неизвестный девайс в uisp, хотя программатор в точности dasa2/ponyser/siprog. Забавно. Толи лыжи не едут... толи.. даже не знаю что. Похоже это баг, буду писать в багтрак avrdude.

Edited by cz0

Share this post


Link to post
Share on other sites
Нда.. все веселее и веселее. Приладил к 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 я не разбирался, но вероятно его можно настроить и на более правильный обмен. попробуйте, расскажите.

Share this post


Link to post
Share on other sites

Дело в том, что виндовый avrdude тоже нормально шьёт.. К тому же, даже если оторвать DSR от RTS.

Share this post


Link to post
Share on other sites
Дело в том, что виндовый avrdude тоже нормально шьёт. К тому же, даже если оторвать DSR от RTS.

Видимо в винде задержки другие. Если вы отрываете DSR от RTS и avrdude работает, значит подтверждается моя гипотеза, что avrdude НЕ контролирует RTS! Научите его контролировать RTS и будет программироваться и под линукс, но медленнее, разумеется =)

Share this post


Link to post
Share on other sites

Непонятно зачем reset меги подсоединяется к Ft232, как это работает??? :blink: :blink: :blink:

Share this post


Link to post
Share on other sites
Непонятно зачем reset меги подсоединяется к Ft232, как это работает??? :blink: :blink: :blink:

Это очевидно, Ватсон! Что бы программировать мегу через Ft232. Само-собой что после программирования эту связь надо убрать. Читайте внимательно howto.pdf, doc.pdf

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this