Рис. 13.1. Параллельный программатор AutoProg
Надо сказать, что и тот и другой способ программирования не составляет никакого секрета и подробно излагается в описании любого AVR. Так что в принципе программатор может быть изготовлен самостоятельно как в виде аппаратного устройства, обычно подключаемого через COM-порт, так и в чисто программном виде, с подключением кристалла через LPT-порт. Причем Atmel даже приводит в своих рекомендациях (Application Notes, которые наши электронщики обычно ласково зовут «аппнотами», доступны на сайте Atmel по адресу: http://www.atniel.com/dyn/products/app_notes.asp?family_id=607) типовую схему простейшего ISP-программатора (см. «аппноту» AVR910, которая в PDF-формате содержит схему, а asm-файлы включают исходные коды «прошивки»). Программу для ПК, впрочем, придется писать самому, на основе описания процесса программирования (или доставать где-нибудь готовую, например, извлекать из AVR Studio), поскольку программатор лишь транслирует команды.
Конечно, изготовление такого программатора самостоятельно — это занятие очень «на любителя», потому что количество затраченных усилий отнюдь не соответствует результату. Программатор можно заказать в самой Atmel, хотя это и нецелесообразно по ряду причин, т. к. долго и дорого (зато поддержка AVR Studio, о которой далее, обеспечена). Дешевенькое «наколеночное» устройство такого типа можно приобрести рублей за 300 через Интернет, а цена «более фирменных» ISP-систем не выходит за пределы примерно 30 долл. Автор этих строк много лет пользуется программатором AS-2 фирмы Argussoft, который непосредственно подсоединяется к COM-порту (на рис. 13.2 он показан без соединительного кабеля).
Рис. 13.2. Программатор AS-2фирмы Argussoftв разобранном виде
Есть и аналогичная модификация AS-3, которая работает с USB. Программатор позволяет «прошивать» прямо в системе многие микросхемы Atmel (не только AVR), причем интерфейс управляющей программы на русском языке очень нагляден, что, в частности, дополнительно предохраняет от неверной установки Fuse-битов (см. раздел в конце этой главы). Поддерживается пакетная работа (когда стирание, запись и проверки объединяются в одну операцию), а также имеется полезная функция перепрошивки самого программатора, если он вдруг начинает сбоить.
Рис. 13.3. Программа-загрузчик к программатору AS-2
Программирующий разъем — десятиконтактный игольчатый IDС или PLD (подробнее про наименования разъемов такого типа см. главу 14 ) и именно на него будут ориентированы все схемы, приведенные в этой книге. Это не значит, что я вас призываю покупать именно AS, разъем такого типа стал стандартом и им снабжены многие ISP, кроме упоминавшегося простейшего ISP от самой Atmel, где разъем минимальный— шестиконтактный (три линии собственно SPI, а также два питания и Reset). Впрочем, при необходимости всегда можно изготовить переходник, т. к. все последовательные программаторы работают по одним и тем же линиям (в десятиконтактном разъеме «лишние» контакты служат для разделения сигнальных линий «земляными», так же, как в соединительном кабеле IDE-интерфейса жестких дисков).
Внешний вид программирующего разъема PLD-10 на макетной плате и разводка его выводов показана на рис. 13.4. Обратите внимание, что отсчет выводов ведется не по кругу, как для микросхем, в нижнем ряду расположены все нечетные выводы, в верхнем — четные (это удобно, т. к. не приходится нарушать нумерацию у разъемов с различным количеством контактов, когда короткие могут получаться из длинных простым «отламыванием» лишней части). Естественно, при отсутствии чехла ответная часть может быть при-соединена двумя способами, потому первый вывод на плате следует помечать (на фото видна черная точка, проставленная фломастером). Названия выводов соответствуют таковым у контроллера.
Рис. 13.4. Пример расположения программирующего разъема PLD-10на макетной плате и его разводка выводов
С или ассемблер ?
Ядро и система команд МК AVR с самого начала создавались в сотрудничестве с фирмой IAR Systems— производителем компиляторов для языков программирования C/C++. Поэтому структура контроллера максимально оптимизирована для того, чтобы можно было писать программы на языках высокого уровня. Так утверждает реклама, но верить подобным утверждениям стоит с некоторой оглядкой, т. к. все в конечном счете зависит от компилятора. Ведь задача перед ним стоит очень непростая: перевести строки на языке высокого уровня в команды контроллера, что для AVR ничуть не проще, чем для «настоящих» микропроцессоров, и потери тут неизбежны как в части компактности кода, так и времени его выполнения. Но это еще не самое главное.
Читать дальше
Конец ознакомительного отрывка
Купить книгу