Программирование Arduino Pro-mini
Для создания "радиолюбительских микроконтроллерных поделок" я иногда использую сравнительно недорогие модули Evolution Light SEM0010M из магазина Ekits.ru. Модуль не представляет собой чего-то выдающегося: на небольшой макетной плате распаяна Atmel-овская Mega (существуют разные варианты), к ней приделан кварцевый резонатор и ... все! больше ничего нет! если не считать разъема для внутрисхемного программирования ISP. В общем-то, очень удобно - не надо паять мелкий многовыводный корпус, заботиться о подключении программатора, искать плату для распайки периферии... И среда программирования Algorithm Builder очень удобна для создания не слишком увесистых программ.
Все хорошо, но "жаба душила": жаль 250 рублей за "это чудо". Раз связавшись с Aliexpress, решил посмотреть - а нет ли чего подобного у более технологично развитых юго-восточных соседей? И нашел - среди многочисленного семейства клонов Arduino дешевизной выделяется маленькая плата Arduino Pro Mini. Цена примерно в полтора-два раза дешевле, однокристалка - существенно мощнее. Кроме кварца есть кое-какая индикация, стабилизатор напряжения, кнопка сброса!!! И, главное, поддержка сообществом Arduino! Без минусов, конечно, не обойтись - нет места для установки периферии и, что не слишком существенно, очень долгая доставка - до двух месяцев...
В-общем, для пробы, за те же 250 рублей я заказал наборчик (на фото слева), состоящий из платы контроллера и моста USB-UART bridge для программирования ардуины. В вышеозначенном магазине такой набор звучит примерно так: CP2102 Module + Pro Mini Module Atmega328 5V 16MHZ For Arduino. Параметры набора продавец описывает следующим образом:
В-общем, для пробы, за те же 250 рублей я заказал наборчик (на фото слева), состоящий из платы контроллера и моста USB-UART bridge для программирования ардуины. В вышеозначенном магазине такой набор звучит примерно так: CP2102 Module + Pro Mini Module Atmega328 5V 16MHZ For Arduino. Параметры набора продавец описывает следующим образом:
CP2102 Module Description:
Name: CP2102, USB to TTL Module Baud Rate Range: 300-1Mbps Control chip: CP2102 Working voltage: 4V-5.25V Support: Windows 98SE, 2000, XP, Vista, Window7, Mac OS 9, Mac OS X & Linux 2.40 Output voltage: Dual voltage output ( 3.3V and 5V ) Output indicator: Power indicator, TXD indicator Output current: 100mA (with current limiting protection ) 6 Pins for: RST TXD RXD GND 5V 3.3V |
Pro Mini description:
1.14 Digital input / output ports RX, TX D13, D2 ~~ of, 2 or 8 analog input port A0 to A7 3. The TTL level serial transceiver port RX / TX 4.6 PWM ports, D3,, D5 , D6, D9, D10, D11 . Using Atmel Atmega328P-AU microcontroller supports serial download 7. Support for external 5V ~ 12V DC power supply 8. Support 9V battery-powered the 9 clock frequency 16MHz 10. Dimensions: 33.3 * 18.0 (mm) |
Получив посылку, изучение наборчика я начал с CP2102 Module, т.к. тут и паять ничего не нужно - воткнул в USB порт и "любуйся" результатом. Мост "в миг" обнаруживается системой и устанавливается (с помощью соответствующего драйвера) как Silicon Labs CP210x USB to UART Bridge (COM9) (ну, номер порта - кому как повезет...) Позднее этот модуль у меня прописался и на других машинах: и на Windows XP, и на Windows 7 Starter (!). Поиграв с модулем (игрушки как-нибудь опишу в другом разделе...), решил я заняться делом и посмотреть - как себя ведет с этим модулем Pro mini.
Подключил по вполне логичной, на мой взгляд, схеме:
CP2102 USB to UART
GND +5V Tx Rx RST |
Arduino Pro mini
GND VCC Rx Tx GRN |
Запускаем Arduino 1.0.5, выбираем Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328, выставляем наш СОМ порт, загружаем пробный скетч, жмем "Загрузить..." и ... получаем сообщение
avrdude: stk500_getsync(): not in sync: resp=0x00 ... не беда, было бы странно - получить положительный результат с первого раза. Проверяем подключение, наличие контакта там где он должен быть и отсутствие такового там, где его не надо... Жмем кнопку... и снова тот же результат. |
Нынешний путь "ленивого радиоинженера" - лезем в интернет и... обнаруживаем: такая проблема встречается у многих. Предлагается масса путей ее решения, но единого внятного метода - нет! Придется идти своим путем. Пробуем:
- Изменяем скорость обмена в файле "C:\Program Files\Arduino\hardware\arduino\boards.txt" (раздел "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328", параметр "pro5v328.upload.speed=57600" (из ряда 9600, 14400, 19200, 28800, 38400, 57600, 115200) - ну как же без этого...
- Смена сигналов Rx - Tx - меняем провода местами - ведь восточные друзья "могли напутать"
- Нажимаем кнопку Reset в разные моменты, а так же пробуем подключить пятый провод между GRN и RST (вроде бы сброс должен автоматом проходить)
- Подключаем Pro mini к UNO без ATMega328 - пытаемся заменить мост USB - UART на тот, что стоит на Arduino UNO
Программирование Pro mini через UNO при изъятой "меге" из платы UNO
Контакты Arduino UNO R3
GND 5V TX (1) RX (0) RESET |
Контакты Arduino Pro mini
GND VCC TX RX RST |
При таком соединении плат (микросхему контроллера, конечно, из платы UNO надо убрать), в Arduino 1.0.5 выбираем Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328, порт СОМ8 (тот что в диспетчере соответствует Arduino), скорость (см boards.txt) оставляем "изначальную" 57600 - программирование скетча проходит без проблем! Убеждаемся, что скорость в Pro mini "прошита" 57600, а не как везде написано 19200 или 9600! Уже хорошо - найден хоть какой-то метод заливки скетча!
|
Программирование Arduino Pro mini через ISP (внутрисхемное программирование)
Разъема ISP на плате Pro mini нет, но необходимые контакты присутствуют на одной стороне платы. Соединяем следующим образом:
Arduino Pro mini
GND 11 VCC RST 13 12 |
ATtiny 13
4 5 8 1 7 6 |
ATtiny 2313
10 17 20 1 19 18 |
ISP
GND MOSI VCC RES SCK MISO |
Подключал через панельку ATtiny самодельного программатора, поэтому привожу номера выводов этих микросхем.Запустил Algorithm Builder (имеющийся программатор ISP работает через эту среду) - считал Fuse, всю прошивку контроллера ATMega 328 (см файл mini-pro-328.hex)
видно что bootloader в памяти присутствует (см старшие 2К байта). В принципе, тоже положительный результат - неудобно (много проводов), но программировать в среде Algorithm Builder - так же можно... |
Программирование Pro mini "как положено" через USB to UART Bridge
В конце концов, после долгого перебора вариантов, нашел рабочий...
CP2102 USB to UART
GND +5V Tx Rx |
Arduino Pro mini
GND VCC Tx Rx |
Подключение платы
Отличие от первого варианта в соединении Rx, Tx! Наши друзья побоялись, что "народ не поймет" соединения Rx - Tx и обозвали выводы UART "обратным способом". Второе: вывод сброса платы перед загрузкой не работает, т.е. линия RST моста не отрабатывается программой... Придется сбрасывать плату перед загрузкой "вручную". Третье - скорость 57600. |
опубликовано 11.02.2014