Выбрать главу

Прежде всего, скачайте с сайта vnvw.arduino.сс самую свежую версию среды разработки Arduino IDE. На момент написания книги это была версия 1.6.1. Если вы захотите использовать старую версию прошивки MultiWii v2.20, то для компиляции придется использовать архивную версию Arduino ГОЕ 1.0.5, иначе при компиляции будут возникать ошибки. Для установки достаточно запустить инсталлятор и подтвердить запросы на установку по умолчанию. Обе версии Arduino ГОЕ могут быть установлены на компьютер одновременно, но в разные папки.

После окончания установки подключите контроллер к компьютеру и запустите Arduino IDE. Откроется стартовое окно с пустым проектом. В терминах Arduino программа для микроконтроллера называется скетч. Теперь нужно настроить компилятор под нужный микроконтроллер и указать номер порта для связи. Выберите меню Инструменты | Плата | Arduino Mega 2560.

Затем выберите порт: Инструменты | Порт и задайте номер порта СОМ, который соответствует вашей плате. Если плата не подключена, то нужный порт в списке не появится.

Примечание

Микроконтроллер АТМеда2560 оснащен энергонезависимой памятью (EEPROM) емкостью 4096 байт. В этой памяти хранятся настроечные константы прошивки MultiWii. Перед загрузкой новой прошивки EEPROM необходимо очистить. В противном случае прошивка может работать неправильно, либо не заработает вообще.

Для очистки EEPROM загрузите специальный короткий скетч из папки готовых примеров Arduino: Файл | Образцы | EEPROM | eeprom_dear. Скетч откроется в новом окне, но настройки платы и порта останутся прежними.

Примечание

Имейте в виду, что загрузка любой новой программы в память контроллера стирает записанную ранее. Если вы взяли чужой контроллер на время или не уверены, что хотите уничтожить имеющуюся прошивку, то не загружайте в память контроллера новые программы!

В строке

for (int i = 0; i < 512; i++)

исправьте значение 512 на 4096, чтобы очистить EEPROM полностью:

for (int i = 0; i < 4096; i++)

Теперь нажмите кнопку со стрелкой для загрузки программы в микроконтроллер. В течение нескольких секунд произойдет компиляция исходного текста программы в машинные коды, затем плата весело замигает светодиодами во время загрузки прошивки. Примерно через три секунды после загрузки светодиод А на плате начнет светиться постоянно. Это означает, что процесс очистки EEPROM завершен и контроллер готов к записи и настройке новой прошивки. Файлы примеров Arduino IDE защищены от записи, поэтому сохраните исправленный скетч очистки EEPROM в другое удобное место.

Память EEPROM нужно чистить, если:

• это первая загрузка прошивки в память контроллера, или предыдущая версия неизвестна;

• меняется версия прошивки;

• меняется тип коптера;

• меняется состав датчиков платы или их тип;

• после записи новой прошивки коптер стал вести себя неадекватно.

В остальных случаях, когда вы ограничиваетесь правкой настроечных параметров, стирать EEPROM перед повторной записью прошивки не надо.

Настройка базовых опций кода прошивки

Ранее вы скачали и разархивировали проект прошивки MultiWii. Проект состоит из нескольких файлов. Файлы скетчей имеют расширения ino или срр; файлы так называемых заголовков имеют расширения h. В среде Arduino имя папки проекта обязательно совпадает с именем главного файла проекта. Например, если папка носит имя MultiWiiAIOP, то главный файл в этой папке называется MultiWii_AIOP.ino.

Откройте главный файл двойным щелчком или через меню Файл | Открыть. При этом в среде Arduino IDE откроются все файлы проекта. Сейчас нас интересует только файл config.h. В нем подробно расписана конфигурация прошивки. Остальные файлы, если вы не имеете четкого понимания своих действий, лучше не трогать.

Механизм конфигурирования прошивки MultiWii, как, впрочем, и многих других программ для микроконтроллеров, основан на так называемых "дефайнах" — служебных директивах компилятора #define (определить). После этой директивы через пробел следуют имя параметра и его значение. В коде программы вместо конкретного значения указывают имя параметра. Во время обработки программного кода компилятор отыскивает имя параметра и автоматически подставляет вместо него соответствующее значение.

Например, если определен некий параметр