• - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!
подписаться на RSS-ленту

Программирование Arduino - Физика процесса.

Наша свежеслепленная ардуина, как и компьютер без софта – просто железо. Чтобы плата ожила и начала делать хоть что-нибудь нужна программа или как часто говорят – прошивка. Написать её под ардуину можно на разных языках — ассемблере, си, паскале, хоть на бейсике, но, обычно, пишут на Wiring’е, из под личной ардуиновской среды разработки — ArduinoIDE и загружают (прошивают) оттуда же.

Как писать прошивки (у ардуино они называется – скетчи) нам подробно рассказал уважаемый admin, а тем кто захочет разобраться с физическим процессом запихивания нашего виртуального творчества в плату поможет (надеюсь) эта серия статей.

Загрузить прошивку в МК семейства Mega (а именно такая стоит в ардуине) можно разными способами:
Последовательным программатором по интерфейсу SPI
Через интерфейс JTAG
Параллельным (“высоковольтным”) программатором.

Во всех этих случаях необходим программатор, который надо либо делать, либо где-то покупать (стоят они все прилично), а в ардуино всё шьётся обычным USB-шнурком (ну или com как в случае с хоуммейдовой платой), как же так?! Нет разработчики не стали запихивать на каждую плату по программатору, а использовали одну удобную функцю МК Atmega под названием “самопрограммирование”. Если в определённую область памяти программ атмеги прошить специальную программу-загрузчик( далее бутлоадер) то можно заставить её (атмегу) прошивать саму себя по любому имеющемуся на борту интерфейсу – I2C, UART или SPI. В ардуино используется именно UART(com порт практически) — в USB-шных версиях плат стоит преобразователь USB-to-COM (обычно ft232), а на COM-овских — преобразователь уровней COM-to-TTL (max232 или на дискретных транзисторах)

Ну а сам бутлоадер прошивается в ардуину через SPI из под ArduinoIDE.

Работает всё это следующим образом – когда Arduino перезагружается — запускается бутлоадер (если он есть). Он посылает импульсы на цифровой вывод 13 (к данному выводу подключён светодиод — он будет мигать) — это означает, что бутлоадер установлен и работает.
Далее бутлоадер ждёт команды или данные от компьютера. Обычно, это скетч, который бутлоадер записывает в flash-память МК. Затем, бутлоадер запускает свежезагруженную программу на выполнение.
Если никаких данных не поступает — бутлоадер запускает предыдущую программу, которая была загружена в микроконтроллер.
Если же никакой программы нет, то бутлоадер запускает себя снова (цикл повторяется).

Плату мы сделали, загрузчик прошили, посмотрим что можно в неё загрузить.
Для загрузки скетчей нужен прямой COM-шнурок папа-мама т.е. просто удлинитель — фактически можно воткнуть плату прямо в COM-порт(без шнурка=)

Запускаем ArduinoIDE (кто не в курсе — запускать надо файл run.bat из папки arduino-0015, свежую ArduinoIDE можно скачать здесь)
Выбираем тип нашей платы


.
.
.

Выбираем COM-порт

.
.
.
.
Выбираем скетч из примеров, например блинк — будем мигать светодиодом- стандартный для МК способ сказать хело волд =)

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Будем хоть немного оригинальны — изменим код=) Помигаем внешним светодиодом (13 пином и так бутоладер мигает)
int ledPin = 11;                // светодид подключим к 11 выходу

void setup()                    // запускается единожды когда стартует скетч
{
  pinMode(ledPin, OUTPUT);      // конфигурируем 11 пин как выход
}

void loop()                     // будет крутиться в бесконечном цикле
{
  digitalWrite(ledPin, HIGH);   // включим светодиод
  delay(500);                   // подождём пол секунды
  digitalWrite(ledPin, LOW);    // выключим светодиод
  delay(500);                   // подождём пол секунды
}

скомпилируем всё это дело — жмём на стрелку, ждём, смотрим на надпись внизу — 790байт из 7168байт, доступных для нашего скетча

подадим питание, воткнём шнурок в плату и COM-порт,

.
.
.
.
.
.
.
.
.

жмём загрузить


Ждем…Загрузилось=)

Втыкаем светодиод в землю и в 11 пин, жмём резет, ждём пока бутлоадер потупит в ожидании нового скетча…мигает!


далее: Практическое программирование Arduino/CraftDuino — начало

Ссылки на использованные материалы:
arduino.cc/en/Tutorial/Bootloader

По теме:
Программирование Arduino — статьи.
Книги про Arduino
книга на русском языке: Блокнот программиста Arduino (PDF 1.3 Mb)
Шпаргалка по Arduino
  • +2
  • 2 августа 2009, 16:22
  • Zoltberg

Комментарии (1)

RSS свернуть / развернуть
+
0
Полезная темка для начинающих, но с ошибочкой. Да, я придираюсь, но все-же… На скрине с кодом миганий (точнее, на листинге) первый Delay на включение с задержкой 500 мс, а второй на 1 сек. В комментах «подождем пол секунды» оба раза.
avatar

validoll

  • 7 февраля 2011, 21:36

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.