Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
146 Часть 11. Программирование микроконтроллеров АVR на ассемблере Кроме того, к Bootloader'y должна прилагаться периферия, соответствующая задей ствованному порту (это может быть не только UART, хотя это и самый частый слу чай) . Все это вместе взятое ограничивает применение Bootloader' a определенной сферой. В профессиональной практике наличие встроенного загрузчика не столь уж редкое явление - дистанционная смена прошивки всяких там смартфонов именно так и производится. А вот в нашем деле - с изготовлением уникальных единичных экземпляров аппаратуры - возня с Bootloader' ом скорее помешает основному де л ну у , . Исключение могут составить случаи, когда вы хотите наладить удобную заме например, калибровочных коэффициентов в EEPROM без доступа к «телу» контроллера. Но не забывайте при этом, что Bootloader'ы не бывают универсаль ными, и их всегда надо подбирать под конкретный тип МК, а потом еще, возможно, и подстраивать под выбранную тактовую частоту. И напоследок одно замечание: имеющийся Bootloader почти наверняка будет ис порчен, если попытаться запрограммировать содержащий его контроллер через обычный внутрисхемный ISР-программатор, - Bootloader после этого придется загружать заново. Поэтому применять тот и другой способ вперемешку нельзя : либо последовательный порт, либо ISP. Простейшая программа Сначала мы покажем, что простейшие ассемблерные программы для АVR не нуж даются ни в каком специальном оформлении. Для этого рассмотрим уже ставший классическим пример с попеременной установкой вывода в высокий и низкий уро вень (простейшую генерацию частоты, - см. подробный разбор этого примера в [ 1 ] ) . Заодно продемонстрируем, почему язык С (не говоря уж об Arduino) все-таки отчуждает нас от того, что реально происходит в контроллере. Если у вас есть под рукой Arduino Uno или любая другая плата Arduino на основе ATmega328, загрузи те в нее такой простой скетч (листинг 6.9) . void setup ( ) { pinМode ( S , OUTPUT ) ; / /вывод 5 - на выход } void loop ( ) { digitalWrite ( S , HIGH ) ; digitalWrite ( S , LOW ) ; Если вы подключите к выводу 5 Arduino ос Циллограф, то сможете убедиться, что на нем генерируются прямоугольные импульсы с частотой чуть больше 70 кГц. Есть много других вариантов выполнения подобного алгоритма, но если в них
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==