Редко, но иногда бывает очень нужен “параллельный” программатор для контроллеров AVR производства Atmel. Хотя большинство микроконтроллеров AVR программируется через “последовательный” ISP интерфейс, но бывают случаи в необходимости и в “параллельном”, это может быть и отсутствие поддержки ISR, к примеру ATtiny28, или для установки некоторых конфигурационных бит, недоступных ISP, или иногда просто по случаю или принудительно на некоторых контроллерах запрограммируют вывод Reset как вход/выход общего назначения, тогда такой контроллер можно перепрограммировать только с помощью “параллельного” программатора, или придется хороший чип просто выкинуть. Хотя такой программатор позволяет запрограммировать микросхему гораздо быстрее чем “последовательный”, но для домашних и малых партиях программирования это большой роли не играет.
Из поиска нужного программатора большую часть пришлось просто отсеять из-за своей дороговизны, и как следствие неоправданности изготовления, чаще это бывает универсальные программаторы стоящие не одну сотню долларов. Но поиски самого простого увенчались успехом на сайте японской фирмы ELM [1], единственный недостаток этого программатора, так это интерфейс программы, который ведется с командной строки, как в старых программах ДОС-версий. К тому же этот программатор позволяет программировать 8-ми выводные контроллеры в последовательном режиме при высоком напряжении High-Voltage Serial Programming Mode.
Несущественно измененная схема от оригинала представлена на рис.1 , но прежде чем приступать к изготовлению проверьте свой LPT порт, выход в “единичном” состоянии на выводе порта должен быть не менее 3,5 вольта, если на Вашем компьютере оказался уровень ниже то придется поставить преобразователь уровня ТТЛ-КМОП, к примеру 74HCT541, там где в схеме указана его установка. Если в Вашем компьютере уровни в норме то схему можно делать без него как показано на схеме.
Рис.1
К разъему X1 подключается внешний источник постоянного тока 15-18В, 150мА. Для питания самогО программатора и для питания программируемой микросхемы используются два напряжения +12В и +5В собранные на интегральных маломощных стабилизаторах напряжения DA1 и DA2. В оригинале схемы их нет, там программатор питается с компьютера напряжением +5В, а +12В преобразуется импульсным преобразователем NJM2352D, что будет намного дороже, да к тому же схема получается сложнее. HL2 индицирует поступающее напряжение.
С компьютера сигналы программирования поступают на разъем X2 подключенный к LPT (принтерному) порту. Программа управляет программированной микросхемой через два ключа собранных на VT1-VT4 для подачи напряжения и регистром DD1 для записи и чтения на шине данных, остальные сигналы управления поступают на микросхему прямо с LPT порта. Ключ на VT3,4 подает +5В Vcc на вывод питания программируемой микросхемы, а ключ на VT1,2 +12В на вывод RESET, HL1 при этом показывает, что происходит программирование. DD1 это 8-ми битный последовательно-параллельный регистр, который может получать данные в последовательной форме и выводить в параллельной, так и наоборот, вводить в параллельной, а выводить в последовательной. С помощью его формируется байтная пересылка при параллельной шине данных программируемой микросхемы и последовательная передача или прием байта с LPT порта компьютера.
К разъему X3 подключаются переходники для программирования конкретных контроллеров. Схемы переходников показаны на рис.2 а-е .
Рис.2 а-е
Переходник соответствует количеству выводов контроллера в DIP корпусе. В таблице указаны контроллеры и соответствующие им схемы переходников [2]. Подключение контроллеров в других корпусах можно посмотреть в описании этих микросхем.
20pin (1200) Рис.2а | 20pin (26) Рис.2б | 28pin Рис.2в | 40pin (8515) Рис.2г | 40pin (8535) Рис.2д | 8pin Рис.2е | 64pin | 100pin |
---|---|---|---|---|---|---|---|
90S1200 90S2313 tiny2313 | tiny26 | 90S2333 90S4433 mega8 mega48 mega88 mega168 tiny28 | 0S4414 90S8515 mega161 mega8515 mega162 | 90S4434 90S8535 mega8535 mega163 mega323 mega16 mega32 | 90S2323 90S2343 tiny10 tiny11 tiny12 tiny13 tiny15 tiny22 tiny25 tiny45 tiny85 | mega603 mega103 mega64 mega128 mega165 mega325 mega645 mega169 mega329 mega649 | mega3250 mega6450 mega3290 mega6490 |
Список поддерживаемых микросхем для данной версии программы в ДОС версии:
AT90S 1200,2313,2323,2333,2343,4414,4433,4434,8515,8535
ATtiny 10,11,12,15,22,26,28
ATmega 8,16,32,48,88,161,162,163,168,169,323,8515,8535
Список поддерживаемых микросхем для данной версии программы в WIN32 версии:
AT90S 1200,2313,2323,2333,2343,4414,4433,4434,8515,8535
ATtiny 10,11,12,13,15,22,24,25,26,28,44,45,84,85,2313
ATmega 8,16,32,48,64,88,103,128,161,162,163,165,168,169,323,325/329,406,603,640,645/649,1280,1281,2560,2561,3250/3290,
6450/6490,8515,8535
90PWM 2,3.
Программатор автоматически определяет подключенный тип контроллера по идентификатору в ячейках самом
контроллере.
Настройку программатора нужно начать с правильности монтажа и проверки возможных деталей. Далее подключаем программатор
к LPT порту компьютера, который работает в ДОС сессии или загружен с дискеты в чистом ДОС. После этого подать питание на
программатор и запустить программу AVRXCHK.COM. Это тестовая программа для проверки работоспособности программатора,
с ее помощью можно манипулировать каждым выводом программатора в отдельности, как по выходу, так и по входу.
Первоначально проверяются все выходные сигналы. Клавишами на клавиатуре компьютера стрелками вправо и влево
перемещаемся по выводам разъема, при этом мигающий курсор устанавливается под соответствующим номером вывода.
Клавишей “пробел” можно переключать уровень на выводе, “L”-низкий уровень “0”, “H”-высокий уровень “1”. Только на выводе
1 при включении “H” должно быть 12В, а на выводе 20 – 5В. Таким образом проверяем все выводы на разъеме, если есть какие
нибудь “нечистые” выводы, т.е. не чисто “0” или “1” то надо проверить почему, также при замыкании возможны включения двух и
более выводов одновременно, этого не должно быть. Если все выхода работают чисто и хорошо можно приступить к проверке
входов, для этого все выводы желательно поставить в “L”, а вывод 20 в “H”, он будет использоваться для подачи высокого
уровня “1” на входах выводы 12-19 через резисторы на схеме. Теперь можно нажать ВВОД (Enter) и перейдем на тестирование
входов. Для этого надо взять любой проводник и укрепить на выводе 10 (GND) разъема X3 и поочередно замыкать на выводы 3,
12-19, при этом на индикации соответствующих выводах должно переключаться с “H” на “L”. Если переключения происходят четко
на этом проверка заканчивается. Но иногда могут быть переключения при тесте входа не совсем четкие, особенно если
программатор включен через длинный кабель (при включении программатора непосредственно к LPT выходу такое вероятнее
не будет наблюдаться), тогда конденсаторы 470пФ - 1нФ между 11 (BUSY) и GND, а также 10 (ASC) и GND разъема X2 могут
устранить эту проблему. Настройка программатора на этом заканчивается.
Сейчас можно приступать к программированию микросхем, но при программировании есть одно замечание – никогда не вставляйте микросхему в разъем для программирования если ни разу не запускали программу для программирования, а если это невозможно, то выключите питание на программаторе. Это связано с тем что на LPT выходе могут быть любые уровни не соответствующие программированию, и на микросхему может быть подано питание не только +5В но и +12В. После запуска программы будет выведено сообщение когда можно вставлять микросхему, чаще удобнее сделать по-другому, когда микросхема уже вставлена в разъем, а подавать питание при предупреждении об установке микросхемы. Но если хоть раз было обращение к микросхеме а нужно дальше с ней работать тогда ее вынимать и отключать питание не надо, т.к. программа устанавливает уровни LPT порта в безопасное состояние.
Для программирования в ДОС, Windows 95,98,Me используется программа AVRXP.COM для ДОС, хотя можно использовать и WIN32 версию AVRPP.EXE, это более новая программа и совместима с ДОС. У них есть только разница в командной строке, в AVRXP.COM для разделения используется прямой слеш “/”, как в ДОСе, а в AVRPP.EXE знак минус “-“, как в Windows. В остальном ключи одинаковые. Для использования Windows NT,2k,XP используется только программа AVRPP.EXE, но к ней нужен еще драйвер GIVEIO.SYS для того чтобы программа могла работать непосредственно с LPT портом. Этот драйвер нужно скопировать в папку WINDOWS/SYSTEM32/, затем для регистрации драйвера запустить AVRPP –r, к тому же Вы в системе должны быть как “администратор”. Для работы в Windows 95,98,Me желательно войти в “сеанс MS-DOS” (Пуск->Программы), а для работы в NT,2k,XP в “командная строка” (Пуск->Все программы->Стандартные). Но кто не работал с командной строки это немного трудно, возможен и другой вариант: в Total (Windows) Commander найти нужный файл, поставить на него курсор и, удерживая клавишу Shift нажать Enter, при этом программа запустится в окне и это окно после выполнения не закроется. В окне будут выведены все ключи с которыми работает программа. Для установки этих ключей нужно в Total Commander при выделенной программе удерживая клавишу Ctrl нажать Enter, при этом в нижней командной строке Total Commander появиться имя файла, к нему надо дописать ключи и запустить с удерживанием клавиши Shift.
Для записи во flash память контроллера надо ввести имя программы программатора и имя HEX-файла, обязательно с
расширением. Пример: avrxp(avrpp) мойфайл.hex мойфайл.epp, для верификации, т.е. проверки записанного нужно ввести ключ /v,
пример: avrxp /v мойфайл.hex мойфайл.epp, или avrpp -v мойфайл.hex мойфайл.epp. Для записи конфигурационных бит и
калибровочных байт есть небольшая разница, у AVRXP.COM нужно вводить в шестнадцатеричном виде а в AVRPP.EXE в
бинарном, пример: avrxp /fl12 или avrpp –fl10010 (00010010). Для чтения flash и записи в HEX-файл avrxp /rp > мойфайл.hex,
тоже для чтения EEPROM: avrxp /re > мойфайл.eep.
/e- стирание микросхемы
/c- копирование калибровочных байт
/l Это основные ключи для работы с программами. Выбор типа контроллера производится программно, и
если что-то не совпадает то об этом выводится сообщение, к примеру, если попытаться в 8-ми Кбайтную flash записать
более, программа выдаст предупреждение не производя никаких действий.
В заключении можно добавить что ELM свободно распространяет не только свои программы, но и их исходники, для
использования в любых, даже коммерческих целях не претендуя на авторство. Эти документы можно взять с сайта ELM[1].
17.10.2006г.     Литература:
Лузянин Виктор Алексеевич.
Загрузить программы для работы программатора
1. http://elm-chan.org/works/avrx/report_e.html#AVRXP
2. http://elm-chan.org/docs/avr_e.html