Наша свежеслепленная , как и компьютер без софта – просто железо. Чтобы плата ожила и начала делать хоть что-нибудь нужна программа или как часто говорят – прошивка. Написать её под ардуину можно на разных языках — ассемблере, си, паскале, хоть на бейсике, но, обычно, пишут на , из под личной ардуиновской среды разработки — и загружают (прошивают) оттуда же.
Как писать прошивки (у ардуино они называется – скетчи) нам подробно уважаемый 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 пин, жмём резет, ждём пока бутлоадер потупит в ожидании нового скетча…мигает!
Полезная темка для начинающих, но с ошибочкой. Да, я придираюсь, но все-же… На скрине с кодом миганий (точнее, на листинге) первый Delay на включение с задержкой 500 мс, а второй на 1 сек. В комментах «подождем пол секунды» оба раза.
Комментарии (1)
RSS свернуть / развернутьvalidoll
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.