То есть попытка перепрошить u16 была успешной, но с новой прошивкой большой скетч так же зависает, а короткий шьётся нормально? Значит атмеги обе исправны. Раз уже пробовали с разных компьютеров заливать, то с вероятностью 99% проблема на самой плате меги 2560. Можно в процессе загрузки следить осциллографом за питаинем на u16, за линией ресета к 2560, за сигналами rx/tx от u16 к 2560. Сравнить с такими же на рабочих мегах. Может уровни не даташитные. Может там резистор где подтягивающий ушел в обрыв, или конденсатор какой коротит. По 2560 платы должны быть одинаковы. Только функции адаптера на одной из них выполняет u16 и у нее больше всякого обвеса, который тоже может быть причиной. Кварц например. Вот и накапливается ошибка uart и уходит за допустимый предел за время прошивки. Но это лишь предположения.
Немного не так.
На плату МЕГА с U16 _удалось_ залить большой скетч только через "Arduino As ISP" с использованием вспомогательной УНО.
Таким же образом удалось залить большой сектч и на исправную МЕГУ с СН340 (для проверки).
А вот перепрошить U16 не удалось.
Использовал программу ATMEL FLIP.
Ага, значит всё не так плохо. U16 еще может перепрошиться и заработать. С кондачка это не делается. Никакие посторонние программы не нужны. На компьютере установлено ардуино-иде, которое при установке тащит набор компиляторов avr-gcc и прошивальщик avrdude. На avr-gcc можно собирать свои программы и с помощью avrdude их прошивать в микроконтроллеры. Ide это лишь надстройка, которая за нас набирает команды gcc и avrdude с необходимыми параметрами. Ставим в ide галочки на "показывать дополнительную информацию о компиляции и загрузке", жмем "прошить через программатор" и в нижней части ide получаем длинный список со всеми командами. Вот сейчас поставил галочку "показать загрузку" и получил формат avrdude, который ide состряпала.
-p atmega2560 это мы для такого чипа прошивку шьёмКод:/usr/bin/avrdude -C/etc/avrdude.conf -v -V -patmega2560 -carduino -P/dev/ttyUSB0 -b19200 -Uflash:w:/tmp/arduino_build_339166/Blink.ino.hex:i
-carduino -P/dev/ttyUSB0 это программатор "arduino" подключен на com адаптер "USB0"
В конце видны параметры для прошивки во флэш-память файла Blink.ino.hex, это скетч блиньк после компиляции.
Все ключи можно увидеть, если просто запустить avrdude без параметров. Если что-то более развернуто прочитать, то там тоже есть варианты. Например можно вывести список поддерживаемых программаторов, микроконтроллеров и пр. Фьюзы avrdude почти всегда считывает и показывает, так что специально их запрашивать нет необходимости. По фьюзам можно судить, в каком режиме работает микроконтроллер, можно ли прочитать прошивку с него, в частности для 2560 там будет установлен бит использования загрузчика и биты резервирующие нужное количество памяти для этого загрузчика, возможно биты защиты обрасти загрузчика. Что для конкретной U16 установлено, можно узнать лишь подключившись и прочитав. В даташите на каждый микроконтроллер фьюзы расписаны подробно.
Вобщем, если подключиться к isp разъёму возле u16 и запустить avrdude, указав ему тип программатора и тип микроконтроллера, то avrdude попробует подключиться к мк.
Наример прошивка для U16 могла бы выглядеть так:
В виндосе команда будет немного по другому выглядеть, и ком-порт, и пути к файлам, но суть одна.Код:/usr/bin/avrdude -C/etc/avrdude.conf -v -V -pm16u2 -carduino -P/dev/ttyUSB0 -b19200 -Uflash:w:proshivka_dlya_u16.hex:i
avrdude подключится к порту USB0 куда воткнут юсб кабель, будет использовать команды для программатора arduino, посылать команды на скорости 19200, и по сигнатуре проверять что к программатору подключен m16u2 (atmega16u2) или ругаться.
Считайте для начала хотя бы фьюзы с u16. Это будет означать, что программатор с чипом связывается и можно искать инструкцию для восстановления прошивки микроконтроллера u16 на плате мега2560
Вот что дал поиск по папке ардуино на ноутбуке. Там у ардуины эти прошивки на черный день уже припасены. Вторая и последняя очень похожи по названию на то, что нужно. У меня 2560-R3, то есть точно последняя.
Код:/usr/share/arduino/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Uno-R3.hex /usr/share/arduino/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Mega2560-Rev3.hex /usr/share/arduino/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-MegaADK-Rev3.hex /usr/share/arduino/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-atmega16u2-Uno-Rev3.hex /usr/share/arduino/hardware/arduino/avr/firmwares/atmegaxxu2/arduino-usbserial/Genuino-usbserial-atmega16u2-Mega2560-R3.hex
Спасибо от R8CT
]R8CT, выложите текст с ошибками из терминала при прошивке 2560 (не бутлоадером)
Arduino: 1.8.6 (Windows 10), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
Скетч использует 124054 байт (48%) памяти устройства. Всего доступно 253952 байт.
Глобальные переменные используют 2556 байт (31%) динамической памяти, оставляя 5636 байт для локальных переменных. Максимум: 8192 байт.
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_ReceiveMess age(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Произошла ошибка при загрузке скетча
Прочитал, но мало что понял.
Не хватает знаний.
Буду пытаться по Вашему описанию делать.
Но наверное, завтра с утра.
На свежую голову.
Всем привет! Прошу помощи.
Приобрел LCD графические дисплеи ERM19264_UC1609 на контроллере UC1609C разрешением 192X64,
и 12864 IIC ЖК-модуль 128X64 I2C ST7567S COG
,
не смог оживить, использовал рекомендованные библиотеки LCD_UC1609,ERM19264_UC1609 ,U8g2-2.32.15.
Подсветка есть,а на экране никаких признаков ответа.
Подскажите ,кто знает секрет запуска этих девайсов.
R8CT,
для истории:
Скрытый текст
Подключил по вчерашней схеме мегу2560 к уне
Раз уж говорили про конденсатор, то как раз на схеме подтяжка ресета рядом, можно тау посчитать, сколько конденсатор 10 мкф. будет заряжаться до напряжения, необходимого для старта мк.
Набрал команду без параметров чтения или записи (тогда просто кажет сигнатуру и фьюзы)
аккуратно все шесть проводов с isp 2560 преставляю на isp 16u2 и немного изменяю командуКод:oleg@laptop ~ $ avrdude -carduino -p m2560 -P /dev/ttyUSB0 -b 19200 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9801 (probably m2560) avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF) avrdude done. Thank you.
читаю флэш с 16U в файлКод:oleg@laptop ~ $ avrdude -carduino -p m16u2 -P /dev/ttyUSB0 -b 19200 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9489 (probably m16u2) avrdude: safemode: Fuses OK (E:F4, H:D9, L:FF) avrdude done. Thank you.
смотрю размер файла дампаКод:oleg@laptop ~ $ avrdude -carduino -p m16u2 -P /dev/ttyUSB0 -b 19200 -U flash:r:m16u2dump.hex:i avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9489 (probably m16u2) avrdude: reading flash memory: Reading | ################################################## | 100% 16.36s avrdude: writing output file "m16u2dump.hex" avrdude: safemode: Fuses OK (E:F4, H:D9, L:FF) avrdude done. Thank you.
считаю контрольную сумму на всякий случайКод:oleg@laptop ~ $ ls -l m16u2dump.hex -rw-r--r--. 1 oleg oleg 37168 Sep 15 17:46 m16u2dump.hex
прошиваю файл обратно в 16uКод:oleg@laptop ~ $ md5sum m16u2dump.hex ea34787f28c2d0a4b59c7bce4b4c65fb m16u2dump.hex
подключаю мегу2560 к ноутбуку юсб кабелем, чтобы убедиться, что 16u2 эмулирует юсб-сериал.Код:oleg@laptop ~ $ avrdude -carduino -p m16u2 -P /dev/ttyUSB0 -b 19200 -U flash:w:m16u2dump.hex:i avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9489 (probably m16u2) 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 "m16u2dump.hex" avrdude: writing flash (15644 bytes): Writing | ################################################## | 100% 27.50s avrdude: 15644 bytes of flash written avrdude: verifying flash memory against m16u2dump.hex: avrdude: load data flash data from input file m16u2dump.hex: avrdude: input file m16u2dump.hex contains 15644 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 15.71s avrdude: verifying ... avrdude: 15644 bytes of flash verified avrdude: safemode: Fuses OK (E:F4, H:D9, L:FF) avrdude done. Thank you.
смотрю какой порт появился после подключения меги2560
из сообщений ядра видно, что обнаружен USB ACM и создан файл-устройство ttyACM0Код:oleg@laptop ~ $ dmesg |tail [29868.049129] usb 1-5.2: new full-speed USB device number 7 using xhci_hcd [29868.241020] usb 1-5.2: New USB device found, idVendor=2341, idProduct=0242, bcdDevice= 0.01 [29868.241041] usb 1-5.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [29868.241054] usb 1-5.2: Product: Genuino Mega 2560 [29868.241065] usb 1-5.2: Manufacturer: Arduino LLC (www.arduino.cc) [29868.241075] usb 1-5.2: SerialNumber: 5533031363535121B100 [29868.251580] cdc_acm 1-5.2:1.0: ttyACM0: USB ACM device
правим avrdude и подключаемся к меге2560
16U выполняет функцию адаптера юсб-ком, а 2560 отвечает через нее программатору.Код:oleg@laptop ~ $ avrdude -cwiring -p m2560 -P /dev/ttyACM0 -b 115200 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9801 (probably m2560) avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF) avrdude done. Thank you.
Было бы логично, пока подцеплен и настроен "ардуино программатор", прошить бутлодер в 2560 нажатием кнопки "прошить загрузчик" в ide. Это тоже полезный опыт. К тому же загрузчик 2560 тоже может чудить с большими файлами. Даже можно его прочитать и сравнить его хэш с прочитанным с рабочей меги. (: Если перепрошивка атмег не даст результата, тогда, как советует IG_58, меняйте кварцы. Это хорошо "бьётся" с проблемой, если размеры успешно записанной части прошивки немного отличаются. Если же сбоит всегда на одном и том же размере, то или программная ошибка загрузчика или железячная в uart. Ведь через "программатор" большая прошивка заливается, а это как раз в обход uart-ов двух атмег и дорожек rx/tx между ними.
Спасибо от R8CT
Нашел казалось правильный вариант запуска ЖК-модуль 128X64 I2C ST7567S COG
U8G2_ST7567_ENH_DG12 8064I_F_SW_I2C u8g2(U8G2_R0, 5 /* I2C SCL пин */, 4 /* I2C SDA пин */, U8X8_PIN_NONE);
и назначить I2C который я определил сканером I2c ,он оказался 03F ,потому в скетч добавил u8g2.setI2CAddress(0 x3F * 2);
однако это не помогло.
Не смог найти U8G2 в которой есть этот конструктор U8G2_ST7567_ENH_DG12 8064I_F_SW_I2C u8g2(U8G2_R0, 5 /* I2C SCL пин */, 4 /* I2C SDA пин */, U8X8_PIN_NONE); все какие нашел библиотеки установил, но в них отсутствует необходимый радел.
Подскажите или дайте ссылку.
С уважением, Александр!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)