Загрузка бутлоадера в Arduino
В Arduino есть отличная функция — сторожевой таймер. Это такая штуковина, которая автоматически перезагружает микроконтроллер, если он зависнет. Использование этой функции очень полезно для повышения автоматизации системы. А зависнуть контроллер может по разным причинам — от ошибок в прошивке, до электрических помех, поступающих извне. Таким образом, в случае зависания, через несколько секунд последует автоматическая перезагрузка и все начнет работать. Иначе пришлось бы ручками нажимать кнопку перезагрузки. Но сторожевой таймер напрочь отказался работать с текущим бутлоадером. Значит надо было залить новый. Ниже расскажу как я это делал. В общем-то загрузка бутлоадера многократно описана на разных сайтах, но в моей ситуации не все прошло гладко — не каждая прошивка подошла, а многие важные инструкции были найдены на забугорных сайтах (включая японские). Так что пишу дальше. Итак, для загрузки бутлоадера понадобилось: 1. Прошивка бутлоадера. 2. Прошивальщик. 3. Специальный прошивочный кабель. Единственной прошивкой, которая подошла, оказалась ADABootLoader. В моем случае мне подошел файл ADABoot_328.hex, так как Arduino у меня собрана на микросхеме ATMega328p. В качестве прошивальщика подошла программа avrdude и графическая оболочка avrdude-GUI-1.0.5 к ней, через которую можно прошивать многие типы микроконтроллеров. Осталось сделать прошивочный кабель. Вообще-то делать его вовсе не обязательно, если только не собираетесь заниматься прошивкой на регулярной основе. В остальных случаях достаточно просто нужным образом соединить контакты разъемов на плате. Ниже картинка и схема соединений. Разъемы соединили. Запускаем программу avrdude-GUI, вводим настройки. В моем случае получилось вот так: Особое внимание надо обратить на правильную установку Fuse и Lock битов, иначе последствия могут быть непредсказуемыми. Например, может получиться так, что в микроконтроллер не будет загружаться сектч — выполняемая программа. Подробнее про Fuse биты написано тут. Следует так же отметить, что бутлоадер нормально прошился только с помощью кнопки «Erase — Write — Verify». Вот, собственно, и все. Прошивка прошла удачно, после чего сторожевой таймер заработал. Ниже ссылки, на источники очень важной информации, без которой нифига не получилось бы: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html http://www.compcar.ru/forum/showthread.php?t=4675&highlight=bit-bang http://robocraft.ru/blog/arduino/51.html http://www.geocities.jp/arduino_diecimila/bootloader/bitbang_w_ide_en.html http://www.milesburton.com/Dallas_Temperature_Control_Library#Download Ну и на всякий случай я сохранил копии этих крайне важных страниц, на случай, если с источниками что-нибудь случится. Тэги: Arduino
|
Konstantinovsk.ru
Информационный портал