В этой главе читатели могут познакомиться со схемой программатора, которая может работать с программой AVReAl, и научиться пользоваться этим программатором.
Программа avreal.exe с авторским описанием работы с ней находится на компакт-диске, прилагаемом к книге.
Программатор AVReAl может работать с различными схемами программаторов. Остановимся на схеме, совместимой с использованной в стартовой плате STK200 фирмы Atmel. Почему именно эта схема? Потому что она же может работать совместно с компилятором языка С CodeVision AVR.
Схема программатора показана на рис. 4.12.
Рис. 4.12.
Легко увидеть, что схема действительно предельно проста. Тем не менее она позволяет осуществлять все необходимые операции: проверять память микроконтроллера на наличие в ней программы, стирать ее содержимое, зашивать новую программу и т. д.
Внешний вид собранного программатора показан на рис. 4.13.
Рис. 4.13.
Программатор работает с портом LPT1, 2 или 3. Если у вас порт LPT занят (например, принтером), можно купить на радиорынке отдельную плату с LPT-портом от старого компьютера, настроить ее на адрес порта LPT2 или 3 и подключать программатор к ней.
Следует иметь в виду, что длина проводов, соединяющих программатор и схему с микроконтроллером, не должна превышать 15…20 см. При большей длине начинают очень сильно влиять наводки на провода и возникают ошибки при работе программатора. Для удобства работы следует приобрести удлинитель порта LPT и подключить программатор к нему.
В качестве разъема для программирования рекомендую разъем типа LDC10. На рис. 4.14 изображен внешний вид этого разъема и его цоколевка. Номера выводов на схеме программатора соответствуют номерам на этом разъеме.
Рис. 4.14.
Следует стараться использовать на всех своих схемах с микроконтроллерами AVR один тип разъема программирования и его цоколевку — в этом случае можно будет пользоваться одним программатором для любых схем.
Автор программатора и настоящего описания:
(E-mail: [email protected]).
AVReAl — программатор At90sXXXX через LPT.
Новые версии, описание и FAQ лежат на
http://www.ln.com.ua/~real/avreal;
Компилируется в следующих вариантах: 16-битовом DOS, для работы на процессорах начиная с 286; 32-битовом WIN32, для работы необходимы файлы: для Windows 95/98 — DLportIO.DLL, для Windows NT — LportIO.DLL и DLportIO.sys.
Это файлы из комплекта DriverLINX от Scientific Software Tools, Inc. (http://www.sstnet.com). Его поставка достаточно громоздкая, с примерами работы на С и VisualBASIC, автоматической инсталляцией DLportlO.SYS для Windows NT и т. д. — итого файл port95nt.exe имеет размер 1,6 Мб.
В переупакованном виде p95nt.zip лежит у автора на
http://www.ln.com.ua/~real/avreal/p95nt.zip.
Также существует вариант программатора для LINUX, но он еще недостаточно оттестирован.
Подключение LPT к чипу осуществляется через Altera ByteBlaster (ключ -ab) или через адаптер, совместимый с платами STK200/STK300 (ключ -as).
Подключение выводов процессоров:
При использовании буферированных адаптеров (Altera ByteBlaster, Atmel STK*00) программа рассчитана на работу в схеме с «родными» питанием и кварцем. Возможна генерация XTAL1 по линии LED в STK*00 и по дополнительной линии, выведенной на контакт 8 в ByteBlaster.
Программа использует файлы в формате INTEL HEX (avrasm -i). При этом она загружает файл прошивки не в массив, а в список. То есть различается ситуация «байт 0xFF в. hex» и «непомянугый байт». В результате есть возможность шить только то, что надо, остальное только проверять при необходимости (см. ключ — v+).
Для любителей патчить прямо по НЕХ-файлу: если не совпадает контрольная сумма строки, то задается вопрос: «игнорировать?». При ответе 'Y' (или 'у') эта и все остальные ошибки CSUM игнорируются (но сами символы контрольной суммы должны присутствовать, иначе программа завершит работу еще раньше по недопустимому символу в строке).
Для облегчения таких патчей (особенно «форматных» записей в EEPROM) реализована возможность, подсмотренная у программы от [email protected] для программирования PIC через Tait-совместимое железо: перед анализом строки из нее убираются пробелы и табуляции. В итоге можно дать:
:08 0001 00 00 01 0203 0405 0 6 0 7 DB
Также игнорируются пустые строки и строки, начинающиеся с '#', последнее предназначено для помещения комментариев о версии непосредственно в НЕХ-файлы.