Простой “параллельный” программатор для AVR

Редко, но иногда бывает очень нужен “параллельный” программатор для контроллеров 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- блокировочные биты /r{p|e|f}- чтение flash|EEPROM|fuse(конфигурационных бит) /f{l|h|x}- запись конфигурационных бит младший|старший|расширенный.

Это основные ключи для работы с программами. Выбор типа контроллера производится программно, и если что-то не совпадает то об этом выводится сообщение, к примеру, если попытаться в 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



Hosted by uCoz