Вчера я обновил ПО для Ардуино до версии 1.0.2 (было 1.0.1). Но после первой загрузки, на Леонардо, он вообще перестал выходить на связь. На первые этапы, подключение идет успешно: kernel: usb 2-5: new full-speed USB device number 4 using ohci_hcd kernel: usb 2-5: New USB device found, idVendor=2341, idProduct=0036 kernel: usb 2-5: New USB device strings: Mfr=2, Product=1, SerialNumber=0 kernel: usb 2-5: Product: Arduino Leonardo kernel: usb 2-5: Manufacturer: Arduino LLC kernel: cdc_acm 2-5:1.0: ttyACM0: USB ACM device kernel: usbcore: registered new interface driver cdc_acm kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters Но далее, буквально за 5-7 секунд: kernel: usb 2-5: USB disconnect, device number 4 И все, даже из таблицы USB девайсов он пропадает (у меня Linux). При этом аппарат показывает LED ON постоянно включен и мигающий LED L. ТХ и RX никакие признаки жизни не выдают. Было так: kernel: usb 2-5: new full-speed USB device number 4 using ohci_hcd kernel: usb 2-5: New USB device found, idVendor=2341, idProduct=8036 kernel: usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=0 kernel: usb 2-5: Product: Arduino Leonardo kernel: usb 2-5: Manufacturer: Arduino LLC kernel: input: Arduino LLC Arduino Leonardo as /devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.2/input/input6 kernel: hid-generic 0003:2341:8036.0002: input,hidraw1: USB HID v1.01 Mouse [Arduino LLC Arduino Leonardo] on usb-0000:00:02.0-5/input2 kernel: cdc_acm 2-5:1.0: This device cannot do calls on its own. It is not a modem. kernel: cdc_acm 2-5:1.0: ttyACM0: USB ACM device kernel: usbcore: registered new interface driver cdc_acm kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters Я могу предположить что загрузка программы прошла неудачно и слетел bootloader. Предположение верна? Если так, как вернуть в жизнь аппарат? Если вариант перезаписать bootloader то хотелось знать где лучше читать об этом, ведь то что достал обобщено говорить о процедуре и нигде не говорит о Леонардо. Надо также отметить что скоро у меня будет еще один Леонардо, вообще то в понедельнике или во вторнике. Есть один UNO но боюсь что он не подходит для такой задачи, не так ли?
Продолжение 1, все таки не сидел сложа руки... Все таки, если загрузить тупой файл (пустые функции setup+loop), карта оживляется. При этом нужно провести компиляция так как указан на сайте arduino.cc: держим reset нажать, компилуем код, как только появляется "Upload" освобождаем кнопку. Программа грузится и потом появляются все строки в загрузке, как и было раньше. Такой же финт работает когда проводишь небольшие программы с Serial.println. А вот попытка использовать другие комманды приводит к печальному исходу. При этом Leonardo ведет себе совершенно дико. То вообще никакой связи, то повторяет предыдущий глюк, то держится подольше на связь но никакой информации не передает. А еще были моменты когда он лихорадочно перестартовал канал - /dev/ttyACM0 то появлялся то исчезал. Продолжение 2! Только что получил второй Леонардо. Абсолютно та же самая проблема (да да, рискнул, но бесплатное шампанское не бывает). Так что могу предположить что при переходе с 1.0.1 на 1.0.2 что то в хлам ушел и остается даже после того как вернул старую версию... Вообще весело!
Пробовал ino, то же самое эффект, те же самые проблемы. Народ из самой Arduino ответили. Говорят что проблема в загрузке скетча. Советуют перейти на 1.0.3 и загрузить новую прошивку в нем (через ArduinoISP).
Спасибо, что поделились опытом. До этого мне казалось нереальным испахабить плату прямо из-под Arduino IDE.
Все можно испахабить На самом деле, прочитав описание Леонардо, я понял что покупаю платы с некой долей риска. Я подозревал что идея Леонардо хорошая, но если что то не так то плата улетит в некуда. Так и получилось. Этот почти самостоятельный USB кажется слишком самостоятельным. Он запускается независимо от состояния всего остального. Однако, может быть и это спасение. Все таки, при жесткой перегрузке, связь восстанавливается и есть шанс форсировать новый скетч стандартными способами. Но глобально, мне кажется что у Леонардо просто отсутствует некая мерка "самочувствия" в момент "передачи дел" от USB в саму систему. Конечно в такие масштабы трудно реализовать такое, однако, когда выводишь компоненты из общей кучи в менее централизованные архитектуры, нужно всегда об этом подумать.
Парализовал Leonardo некорректным программированием таймеров. Думал уже панихиду заказывать. Реанимация прошла успешно. Спасибо!