Не вводится в режим DFU...

Тема в разделе "Arduino & Shields", создана пользователем Roman777, 21 дек 2015.

  1. Roman777

    Roman777 Нуб

    Всем доброго вечера!
    Прочитал несколько разных способов, в том числе и читал тему на Амперке про этот режим, но все тщетно, никак не вводится ардуина в DFU!
    Пробовал контакты соединять с включенной платой в USB, так же пробовал сначала закоротить контакты, а затем подключить компьютеру, разное время держал контакты в короткозамкнутыми. Но, все равно подключается как обычно.
    Заранее спасибо всем участникам форума, совместными усилиями я думаю у нас получится разобраться с вводом в этот режим!)
     
  2. AlexU

    AlexU Гуру

    Arduino'ы разные бывают, о какой речь идет?
     
  3. Roman777

    Roman777 Нуб

    Arduino UNO R3
     
  4. AlexU

    AlexU Гуру

    После подключения платы через USB к компьютеру, на доли секунд закоротите контакты ближайшие к USB разъему ( см. картинку в разделе "Reset the 8u2" по ссылке https://www.arduino.cc/en/Hacking/DFUProgramming8U2).
    Если это не сработает, то:
    1. Вы уверенны, что плата именно Arduino UNO R3, а не клон какой? (Если нет, выложите фотку).
    2. Каким образом Вы определяете: вошёл контроллер в режим DFU или нет? (А то может он у Вас входит в режим DFU, а Вы этого не замечаете).
     
  5. Roman777

    Roman777 Нуб

    IMG_1471.JPG IMG_1472.JPG
     
  6. Roman777

    Roman777 Нуб

    Вошел он в этот режим или нет я определяю по тому, что во первых его программа Atmel не видит, и он не подключается как устройство USB!
     
  7. AlexU

    AlexU Гуру

    Плата правильная. Правда на мой плате стоит ATmega16U2, а на Вашей ATmega8U2. Но думаю, что в контексте данной темы это не существенно.
    Повторю шаги для ввода контроллера ATmega16/8U2 в режим DFU (cистема Ubuntu 15.10, для Windows может понадобиться установка дополнительных драйверов):
    1. Подключаю Arduino с помощью USB кабеля;
    2. Смотрю список USB устройств -- команда 'lsusb' -- в списке нахожу Arduino:
    3. Беру отвёртку и закорачиваю ближайшие к USB контакты (по неясной причине не могу загрузить картинку).
    4. Смотрю список USB устройств -- в списке вместо Arduino появилось DFU устройство
    5. Далее при помощи программы 'dfu-programmer' взаимодействую с контроллером ATmega16U2. При этом основной контроллер ATmega328P продолжает жить своей жизнью (в соответствии с прошивкой).
     
  8. Roman777

    Roman777 Нуб

    Спасибо большое за ответ! Но у меня возникли еще пара вопросов!
    Есть ли требования к выбору версии программы "dfu-programmer"? И есть ли потом возможность обратно откатиться в прежний режим работы Ардуины?)
     
  9. Roman777

    Roman777 Нуб

    Установил факт того, что при закороченных контактах компьютер вообще не видит ардуину, хотя диоды горят..
     
  10. AlexU

    AlexU Гуру

    Потому что нога RESET контроллера закорочена на землю. Контроллер не запустится пока не подать +5 на пин RESET.
    Компьютер "увидит" контроллер (речь идёт о контроллерах с поддержкой DFU -- ATmega16/8U2 из таких) только тогда, когда в контроллер залита "правильная" прошивка, которая правильно инициализирует USB интерфейс у контроллера. Котроллер ATmega16/8U2, применяемый в Arduino, во-первых содержит DFU-Bootloader, который запускается, если после подачи питания закоротить RESET на землю; во-вторых -- основную прошивку: драйвер-адаптер USB<->USART, которая позволяет взаимодействовать с соновным контроллером (ATmega328P) через USB.

    Как-то не задавался этим вопросом. Есть еще FLIP -- официальная программа от Atmel. Но версия под Linux -- 3.2.1 -- не поддерживает ATmega16/8U2. Хотя сделал так, что бы поддерживала -- из виндовой версии 3.4.7 скопировал файлы из папки PartDescriptionsFiles. Но прошивать не пробовал -- пока нет надобности.

    Т.е. Вы хотите перепрошить контроллер ATmega8U2, а потом при необходимости вернуть первоначальную прошивку? Если так, то самый простой вариант: слить текущую прошивку (у меня это получилсоь без проблем), а новую заливать через 'dfu-programmer' или 'flip' -- они bootloader не тронут, а перепрошьют только основную прошивку.

    Если по-сложнее, то во-первых Atmel дает возможность скачать набор DFU-Bootloader'ов для своих контроллеров, во-вторых в составе Arduino IDE можно найти исходники прошивки для контроллера ATmega16/8U2. Так что восстановить прошивку, если не точно такую же, то по крайней мере выполняющую те же функции, можно.