Предыдущая статья. Следующая статья

Переходник CP2102 и ProMini.

Продающиеся во многих китайских магазинах недорогие переходники USB-TTL на чипе CP2102 имеют одну неприятную особенность при попытке использовать их для заливки скетчей в arduino Pro Mini: не работает автоматический ресет. Ручной ресет на самой ардуине мне тоже задействовать не удалось - пришлось шерстить интернет и дорабатывать переходники.

Образец No1 на фото, после подпайки провода к ноге DTR чипа, не подавал признаков жизни, заказал второй, у которого DTR было явно выведено на плату - его и запустил первым. Чуть позже разобрался и с образцом No1.
Подключение к Pro Mini:
У образца No1 надо подключать RX-TX и TX-RX соответственно, а у образца No2 - прямо RX-RX, TX-TX.

Нога RESET подключается к GRN или DTR на плате ProMini, далее эта дорожка, через керамический конденсатор, соединена с ногой RESET чипа ATMEGA328.

Напаяный "проводок" - линия для автоматического ресета ардуины от сигнала DTR, подключаемая через дополнительный керамический конденсатор примерно в 0.1 uF (104).

Ну и, для памяти, настройки Tools и т.п.:
- порт платы cp2102 виден как /dev/ttyUSB[0/1] в отличие от UNO, где /dev/ttyACM0.
- программатор - "USBasp", хотя эта настройка не влияет до тех пор, пока мы не начали пользоваться USB ASP программатором вместо переходника cp2102
- плата "Arduino Pro or Pro Mini ..."

- при подключении программатора USBASP или другой платы по ISP (11,12,13 (MISO MOSI SCK), rst, vcc, gnd) - линию RESET надо подключать не к GRN/DTR, а к ноге с надписью RESET, которая имеет прямое соединение с чипом, а не через керамический конденсатор. Иначе вылезают различные глюки с чтением сигнатуры:
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature .......
... хотя, по внешнему виду, плата вроде бы даже и перегружается...

Замена (прошивка) загрузчика в плате ProMini

В процессе программирования и эксплуатации ProMini всплыли известные проблемы штатного bootloader-а с watchdog таймером. Суть проблемы "Crazy LED" хорошо описана в статье на Хабре, здесь я только коротко перескажу порядок действий после подключения платы ProMini к программатору USBASP:

- после того, как команда avrdude -t -p m328p -c usbasp -v плату увидела и сигнатуру правильно прочитала, делаем настройки bootloader-а, как это прописано на хабре: в boards.txt в секции "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328" меняем строчку с расположением лоадера (в моем случае пришлось чуть поправить пути) на
xxxxxxxxx.bootloader.file=../optiboot/optiboot_atmega328.hex
строка может отличаться в начале, но по смыслу - понятно.

- шьем новый bootloader через Arduino_IDE, не забываем что теперь эта плата для IDE будет называться "Arduino Uno", и меняем скорость компорта (старое значение 57600):
xxxxxxxxx.upload.speed=115200

avrdude -c usbasp -p atmega328p -U flash:w:optiboot_atmega328.hex:a -U lfuse:w:0xff:m -U efuse:w:05:m -U hfuse:w:0xde:m
Скорость компорта при прошивке bootloader все равно своя (19200 ?), поэтому новые ProMini перешиваем уже безо всяких изменений в файлах концигурации.

Определить какой загрузчик прошит в текущий момент можно по миганию светодиода: у штатного загрузчика он мигает один раз, а в случае optboot - должен мигнуть трижды.

Вот еще неплохие статьи про замену загрузчика: http://samopal.pro/bootloader2/
http://www.handcode.ru/2015/01/hello-world-atmega328-avr-gcc-avrdude.html

PR-CY.ru
Еще статьи.