Не получается подключить Arduino rev3 к компьютеру.

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
SHIVO
Сообщения: 1
Зарегистрирован: 01 апр 2012, 18:47

Не получается подключить Arduino rev3 к компьютеру.

Сообщение SHIVO »

Здравствуйте.
Купил Arduino rev3 и не смог подключить к компьютеру. Во первых Arduino определяется на компьютере как ATmega 16u2, а не как неизвестное устройство. Во вторых драйвера скаченные с официального сайта http://arduino.cc/ не подходят (пробовал новые и предыдущие версии). Пытался гуглить на эту тему, но видимо с таким случаем никто не сталкивался, ничего не нашел.
Может, у кого ни будь есть предположения, как подключить, буду благодарен.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Mr.Kubikus »

Итак «больная» ардуина пользователя SHIVO попала в нашу лабораторию. Очень интересный случай. Попробуем её реанимировать.

После подключения к компьютеру через USB в диспетчере устройств появляется группа Atmel USB Devices и в ней устройство ATmega16U2. Обновление драйвера для этого устройства через контекстное меню выполнить не получается. Система говорит, что драйвер не обнаружен.
05.png
05.png (19.53 КБ) 41420 просмотров
На плате Arduino Uno установлено два микроконтроллера - ATmega328P и ATmega16U2. В первом крутятся скетчи, скомпилированные в среде Arduino, а второй выполняет функцию преобразователя USB-Serial. Через этот МК, собственно, скетчи и загружаются в ATmega328P.

Получается, что у нашего «пациента» что-то не в порядке с МК ATmega16U2. Во flash-памяти этого контроллера должны быть два куска кода. Одна часть – это прикладное ПО, которое реализует функцию преобразования USB-Serial. Другая часть – USB DFU (Device Firmware Update) загрузчик. Если бы ПО USB-Serial работало нормально, то в диспетчере устройств, после обновления драйвера, должен был бы появиться последовательной порт. На следующей картинке пример с нормальной ардуиной:
07.png
07.png (22.82 КБ) 41420 просмотров
Если МК определяется в диспетчере как ATmega16U2, то, скорее всего, после подачи питания запускается USB загрузчик. Хотя по умолчанию управление должно переходить сразу к коду USB-Serial.

Для загрузки микропрограмм в контроллеры AVR через USB фирма ATMEL предлагает утилиту FLIP. Скачиваем и устанавливаем. Кроме загрузки FLIP умеет считывать прошивку из контроллера.

Теперь можно посмотреть, что же зашито в 16U2 на «больной» ардуине:
06.png
06.png (55.72 КБ) 41420 просмотров
А теперь сравним со «здоровым» образцом:
08.png
08.png (42.83 КБ) 41420 просмотров
Что мы тут видим? Различаются контрольные суммы и версии загрузчиков. Также оказалось, что вся прикладная область памяти «больной» 16U2 забита значениями 0xFF.

Попробуем это исправить. Загрузим с помощью FLIPa в 16U2 hex-файл Arduino-usbserial-atmega16u2-Uno-Rev3.hex, который лежит в папке hardware\arduino\firmwares\arduino-usbserial.

Файл загрузился и после сброса ардуина стала определяться в диспетчере устройств как Arduino Uno R3. Уже хорошо. Однако при попытке загрузить скетч из IDE индикатор RX на плате моргал три раза и в нижнем окне появлялась строка сообщения: avrdude: stk500_getsync(): not in sync: resp=0x00.

Похоже, что 16U2 и 328P были настроены на разные скорости обмена. Такое могло произойти, если в 16U2 неправильно установлены конфигурационные биты в младшем байте FUSES.
Так как FLIP не умеет менять конфигурационные биты FUSES, то придется шить через ISP. Для этого скачиваем другую полезную утилиту для прошивки чипов AVR – avrdude. Хотя она есть где-то в папках Arduino.

Для того, чтобы прошить 16U8 с помощью avrdude я собрал программатор из другой рабочей платы arduino. Подробнее про Arduino ISP можно прочитать на Arduino::Learning.
02.JPG
02.JPG (166.35 КБ) 41420 просмотров
Avrdude запускается из командной строки со следующими параметрами:
-p at90usb162
-F
-P com15
-c avrisp
-b 19200
-U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex
-U lfuse:w:0xFF:m
-U hfuse:w:0xD9:m
-U efuse:w:0xF4:m
-U lock:w:0x0F:m

Во время работы avrdude все действия протоколируются на экране:

Код: Выделить всё

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s
avrdude: Device signature = 0x1e9489
avrdude: Expected signature for AT90USB162 is 1E 94 82
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex"
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex auto detected as Intel Hex
avrdude: writing flash (15668 bytes):

Writing | ################################################## | 100% 7.58s
avrdude: 15668 bytes of flash written
avrdude: verifying flash memory against Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:
avrdude: load data flash data from input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex:
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex auto detected as Intel Hex
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex contains 15668 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 11.98s
avrdude: verifying ...
avrdude: 15668 bytes of flash verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.06s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xF4"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xF4:
avrdude: load data efuse data from input file 0xF4:
avrdude: input file 0xF4 contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.05s
avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: safemode: Fuses OK
avrdude done.  Thank you.
Проверка показала, что теперь все работает. Наш «пациент» ожил. Можно загружать в него скетчи.
С уважением, Григорий
GitHub FB ВК
Marvin
Сообщения: 22
Зарегистрирован: 05 май 2012, 19:04

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Marvin »

Спасибо за Вашу статью. У меня примерно такая же проблема: http://roboforum.ru/forum86/topic11561.html
По указаной Вами ссылке страница не открывается из-за проблем на сервере. Нашел Flip здесь, но в списке поддерживаемых устройств ATmega16U2 не содержится.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Mr.Kubikus »

Похоже сайт Атмела закрылся на переучет :). Сейчас поищу дистрибутив FLIP у себя.

У меня установлена версия 3.4.5. В ней в списке устройств есть ATmega16U2.
С уважением, Григорий
GitHub FB ВК
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Mr.Kubikus »

Нашел. Качайте - https://docs.google.com/open?id=0B6b_8W ... zRoN2lBZU0. Завтра файл уберу.
С уважением, Григорий
GitHub FB ВК
Marvin
Сообщения: 22
Зарегистрирован: 05 май 2012, 19:04

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Marvin »

Mr.Kubikus писал(а):Нашел. Качайте - https://docs.google.com/open?id=0B6b_8W ... zRoN2lBZU0. Завтра файл уберу.
Файл вижу, скачать не могу.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Mr.Kubikus »

Попробуйте еще раз. У меня все скачивается. Там кнопочка - "Загрузить"
С уважением, Григорий
GitHub FB ВК
Marvin
Сообщения: 22
Зарегистрирован: 05 май 2012, 19:04

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Marvin »

Скачал, выбрал atmega8u2, жму usb-разъем со шнурком, доступно только USB получаю ошибку atlibusbdfu.dll not found, хотя в окне about эта библиотека есть. Вычитал http://ramfactory.com/forum/viewtopic.php?p=694 что нужно обновить драйвер из папки с Flip. Не получается, говорит, что там не содержиться нужного драйвеера. Плата с Uno у меня определяется как Communications Port. Mega 2560 вообще не видится операционной системой. Драйвер из папки IDE 1.0 обновляется, в том смысле, что операционная система не ругается, но устройство попрежнему остается в виде Communications Port.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Mr.Kubikus »

Надо перевести ATmega16U2 в режим DFU - http://arduino.cc/en/Hacking/DFUProgramming8U2. Замкните выводы RESET и GND на разъеме ICSP, который соединен с ATmega16U2. После этого обновите драйвер через диспетчер устройств. Драйвер находится в папке "Flip 3.4.5\usb".
С уважением, Григорий
GitHub FB ВК
Marvin
Сообщения: 22
Зарегистрирован: 05 май 2012, 19:04

Re: Не получается подключить Arduino rev3 к компьютеру.

Сообщение Marvin »

Mr.Kubikus писал(а):Надо перевести ATmega16U2 в режим DFU - http://arduino.cc/en/Hacking/DFUProgramming8U2. Замкните выводы RESET и GND на разъеме ICSP, который соединен с ATmega16U2. После этого обновите драйвер через диспетчер устройств. Драйвер находится в папке "Flip 3.4.5\usb".
Замыкаю указанные на картинке выводы:
Ни какой реакции не заметно, пробовал переподключать плату. При выборе (вручную) драйвера в Flip 3.4.5\usb получаю от системы: "В указанном месте отсутствуют сведения об оборудовании".
Может стоит попробовать сделать что-то через Parallel Port Programmer ?
Ответить