Программатор на max232 своими руками

Добавил пользователь Дмитрий К.
Обновлено: 15.09.2024

Сегодня, когда на дворе 2017 год, рассказывать со страниц своего сайта об устаревших интерфейсах типа LPT и COM смысла нет (так же как нет этих портов в современных ноутбуках. Правда, еще остаются опционально в виде штырьков на материнских платах некоторых производителей). Если только в качестве архива, типа, ностальжи - как это было. Сегодня все очень просто - купил AVR mkII (USB) оригинальный программатор или его клон и никаких ископаемых COM/LPT.
Сегодня радиолюбительские форумы предлагают множество вариантов сборки клона AVR mkII программатора - это как киты так и готовые устройства по цене не более 10 баксов. И все. Мы получаем 3в1 - ISP/PDI/TPI интерфейсы.

Достаточно в поисковике ввести запрос "AVRISP-MKII своими руками" или "AVRISP-MKII клон" и вы получите много ссылок на схемы и киты для изготоврения клона эта программатора.

Но не у всех есть такая возможность - купит или спаять клон. Поэтому в качестве экспонатов музея старинных интерфейсов AVR микроконтроллеров я оставлю информацию о них на этой странице. Просто, чтобы было где взять.

В сети существует много ресурсов, посвященных применению микроконтроллеров (МК) и их программированию. Прошить (запрограммировать) МК можно при помощи программатора. Программаторы бывают разные. На западе существуют "стартовые наборы", которые предназначены для программирования нескольких видов МК с кнопочками и светодиодами (для работы с прерываниями). Таких программаторов существует несколько видов: STK200/300/500(501/502), ICE40/50, JTAGICE, ICE200, AVRISP.

Интерфейс LPT

Эта схема (приведена для понимания идеи), назовем ее референсной, подключается к предыдущей: разъем J1 CON10 подключается к J2 STRIP 1X9 - просто надо составить соответствие между сигналами и все будет работать (проверено). Вообще говоря, к любому из адаптеров можно подключить МК с кварцем и двумя емкостями. Подать питание и смело можно шить. Главное знать какой именно адаптер Вы паяете и какая конкретно программа его поддерживает.

Существует еще адаптер Altera Byte Blaster и STK200/300. Программу для них можно взять здесь (программа поддерживает оба этих адаптера, работает из командной строки). Я спаял адаптер STK200/300. Вот его схема:




Принципиальная схема адаптера Altera Byte Blaster имеет вид:


Все приведенные здесь адаптеры (программаторы) реализуют принцип In System Programming, ISP (иногда встречается термин In Circuit Programming, ICP), т.е. программирование МК прямо в устройстве: на плату запаиваете разъем с 6-ю или 10-ю выводами, разводите на него сигналы и теперь если надо запрограммировать МК, к этому разъему подключаете шлейф от программатора и через несколько секунд firmware (прошивка) МК будет обновлена - без извлечения МК из рабочей платы.

Существует еще один адаптер: SP12 так же с LPT интерфейсом. Страничка в сети с подробным описанием процедуры установки софта и подробным фотоописанием находится здесь. Я приведу лишь схему и пару фото того, что это такое.



Интерфейс COM

Все хорошо, если LPT-порт свободен. А если занят? У меня, например, к LPT-порту подключен LCD (4х20) и работает програма jaLCDs 3.11. Ну, здесь несколько вариантов:
1. подключить программатор (адаптер) к USB-порту - над этим пока стоит сильно потрудится. За рубежом такие программаторы уже продаются, правда стоят они порядка USD90;
2. подключить LCD к USB-порту (тут дела обстоят несколько попроще, но. );
3. подключить программатор к COM-порту. Для этого ведь все есть и схема (даже две) и описание метода - осталось только желание, а время найдется.
Принципиальную схему такого программатора и описание метода программирования можно взять в фирменном описании Atmel "AVR910". Он построен на МК AT90S1200. Там же можно скачать прошивку для AT90S1200. Я в схеме программатора заменил транзисторы всего одной микросхемой - MAX202CPE. С таким же успехом можно заменить на MAX232 и т.д. с соответствующей дороботкой схемы, я думаю, что это не сложно. С этим прамматором работает AVRProg, которая входит в состав AVR Studio. COM программатор на at90s1200 выглядит следующим образом:





: : Прошивка : :

Интерфейс USB

Печатная плата была изготовлена все тем же методом утюга, правда ширина дорожек - 0.5 мм (это максимальная ширина дорожек на этой плате). Шьется все программой AVRprog, входящей в AVRStudio. Скорость, конечно, маловата - 128000, ну а что вы хотели от COM-переходника.
Основа программатора - микросхема FT232BM. Это есть переходник USB на вирутальный COM-порт. Печатная плата программатора - двухсторонняя.

Благодаря оптимальному соотношению цена/качество микроконтроллеры семейства AVR фирмы Atmel пользуются заслуженной популярностью как среди радиолюбителей, так и профессионалов. Возможность их программирования по последовательному интерфейсу SPI позволяет использовать для этих целей очень простые программаторы, например PonyProg [1]. Такой программатор подключается к LPT или COM порту компьютера и по сути содержит только буферные элементы для согласования уровней выводов порта с контроллером. Все необходимые алгоритмы реализуются управляющей программой, запускаемой на компьютере. Во всех деталях работа с программаторами такого типа описана в [2]. Казалось бы, это самый простой и в то же время наилучший вариант. Зачем усложнять задачу? К сожалению, все не так просто.

Основное назначение LPT порта – это работа с принтером, а COM порта – обеспечение связи с внешними устройствами, например модемом по интерфейсу RS-232. Программное управление уровнями на отдельных линиях этих портов хотя и возможно, но это уже нестандартная задача, а значит за то, что она будет выполняться корректно, изготовители материнских плат ответственности не несут. Да и не далек тот день, когда эти порты вовсе исчезнут из компьютера, а работать через конвертер USB-COM простейшие программаторы не могут. Более того, стандартная аппаратно-программная конфигурация персонального компьютера даже при наличии быстродействующих процессора и ОЗУ не позволяет точно сформировать интервалы времени, меньше нескольких сотен миллисекунд. Для программирования же современных контроллеров необходимы импульсы длительностью порядка единиц микросекунд и менее. Поэтому невозможно гарантировать корректную работу простых программаторов на всех без исключения компьютерах.

Есть и еще одна важная сторона вопроса программирования. В каталог Atmel 1997г., посвященный AVR было включено всего 4 контроллера этого класса. В 2002г. их было уже 18, а в 2006 – 48! Энтузиасты – программисты share ware программаторов просто не в силах своевременно вводить корректную поддержку всех новых типов, ведь для этого как минимум надо иметь хотя бы один экземпляр каждого типа и достаточное количество свободного времени. Даже те радиолюбители, которых вполне устраивают старые типы контроллеров, могут оказаться в сложной ситуации. Например, класс AT90S полностью снят с производства. На смену ему пришли ATtiny и ATmega, которые имеют несколько иные алгоритмы программирования. В такой ситуации логично будет не изобретать велосипед, а воспользоваться разработками производителя AVR.

Предлагаемый программатор – это упрощенный и модернизированный аналог выпускаемого и поддерживаемого компанией Atmel внутрисхемного программатора AVRISP. Упрощение заключается в исключении из схемы элементов защиты от статического электричества – в серьезных случаях они все равно не помогут – и замене преобразователей уровня COM-TTL на дискретных элементах специализированной микросхемой MAX232.

Принципиальная схема основной платы программатора показана на рис.1. Собственно программатор выполнен на DD2 типа ATmega8535. Светодиоды HL1 красного цвета и HL2 зеленого индицируют режим программирования и готовности соответственно. DD3 предназначен для записи новых версий прошивок в основной контроллер, а также для управления напряжением питания программируемого контроллера. Прототип от Atmel не имеет собственного источника питания т.к. он предназначен только для внутрисхемного программирования, поэтому питание на него подается от пользовательского устройства. В данной конструкции питание на программируемый контроллер может быть подано от программатора, в связи с чем появляется необходимость его отключения на момент установки контроллера в панельку. В базовом программном обеспечении такая функция не предусмотрена, вмешиваться же в фирменную прошивку DD2 нецелесообразно, т.к. она постоянно обновляется. А вот прошивка загрузчика DD3 неизменна, поэтому она и была несколько доработана.

В рабочем режиме этот контроллер не выполняет никаких функций, поэтому его вполне можно использовать для целей коммутации Vcc. Для повышения нагрузочной способности выводы PD2…PD6 соединены параллельно. При нажатии на кнопку SB1 на этих выводах появляется напряжение 5в, о чем сигнализирует свечение HL3 желтого цвета. Но это еще не все. При программировании контроллера на него должна подаваться тактовая частота. В готовом устройстве для этой цели чаще всего используется кварцевый резонатор. В данном случае тактовая частота 1,8 мгц формируется на выводе PB3 DD3, с которого и подается на программируемый контроллер. При повторном нажатии SB1 выводы PD2-PD6 и PB3 переходят в высокоимпедансное состояние, т.е. напряжение питания и тактовая частота с программируемого контроллера снимаются.

Таким образом, перед установкой контроллера в панельку следует нажать SB1 отключая питание, после установки нужно вновь нажать SB1. Свечение HL3 будет индицировать подачу питания и готовность к работе. После успешного программирования перед извлечением контроллера из панельки питание с него вновь снимают, нажимая SB1. При внутрисхемном программировании эта кнопка не используется.

Программатор выполнен в корпусе, спаяном из фольгированного гетинакса. Плата коммутации является верхней крышкой, в ней сделаны по месту не показанные на чертеже отверстия для SB1 и HL1-HL3. Разъем СШ-7 для внутрисхемного программирования размещается на боковой стенке. Кабель связи с компьютером может иметь длину 1…1,5м. Питание осуществляется от любого сетевого адаптера с напряжением 9…15в и током до 100ма.

Контроллер DD3 перед установкой в схему необходимо запрограммировать. Его прошивка разработана на основе Appnote AVR910: In-System Programming [5]. Первая версия этого документа датирована 1997 г. Первоначально использовался контроллер типа AT90S1200, в дальнейшем, не без активного участием радиолюбителей программа была адаптирована для AT90S2313, а ее возможности расширены [6]. В предлагаемом устройстве для записи в контроллер DD3 следует использовать доработанный автором файл прошивки isp_2313.hex из архива isp.zip.. В этом же архиве находится исходный текст этого файла isp_2313.asm и дистрибутивы печатных плат в формате Sprint-Layout 4.0.

Получается, что для того, чтобы сделать этот программатор, необходим другой программатор. Но он нужен только один раз и для этой цели можно воспользоваться упоминавшимся ранее PonyProg или обратиться за помощью к друзьям. Как уже говорилось, с одинаковым успехом можно использовать как AT90S2313, так и ATtiny 2313. Прошивка будет работать с любым из них. Однако, если на Fuse биты первого можно не обращать внимания, используя их значения по умолчанию, то для ATtiny2313 Fuse биты следует установить следующим образом: SPMEN=1, DWEN=1, EESAVE=1, SPIEN=0, WDTON=1, BODLEVEL2…0=111, RSTDISBL=1, CKDIV8=1, CKOUT=1, SUT1…0=11, CKSEL3…0=1101 (0 - запрограммирован, 1 - нет). К сожалению, фирма Atmel не предусмотрела возможность включать состояние этих бит в файл прошивки, а их неправильная установка может привести к полной неработоспособности устройства. Поэтому, в случае возникновения сомнений, следует руководствоваться фирменной документацией на контроллер ATtiny2313, а тем, у кого нет опыта в работе с программаторами предпочтительно поискать старый AT90S2313.

Установка Fuse бит ATmega8535 по умолчанию также не подходит, и, если есть возможность, их желательно предварительно запрограммировать следующим образом: S8515C=1, WDTON=1, SPIEN=0, CKOPT=0, EESAVE=1, BOOTSZ1…0=00, BOOTRST=1, BODLEVEL=1, BODEN=1, SUT1…0=11, CKSEL3…0=1111. Запрограммировать их можно будет и непосредственно в описываемом программаторе, но лучше использовать контроллер с предварительно установленными Fuse битами. Дело в том, что по умолчанию в качестве тактового установлен внутренний RC генератор на 1 мгц. Соответственно на выводе XTAL2 никакого сигнала не будет, значит и на DD3 тактовая частота подаваться не будет. А это приведет к полной неработоспособности устройства.

Выходов из этой ситуации может быть несколько. Первый, как уже указывалось, использовать контроллер с предварительно запрограммированными Fuse битами. Если это невозможно, придется запаять временную перемычку между выводом XTAL1(13) DD2 и XTAL2(4) DD3. Теперь кварц окажется подключенным и к DD3. Все будет работать, но… только до того момента, пока Fuse биты не переконфигурируют тактовый генератор DD2 на работу с кварцем. После этого временную перемычку нужно удалить, разумеется предварительно отключив питание. Если при установке бит была допущена ошибка, повторно этот способ может и не сработать. Но не стоит отчаиваться. В качестве крайней меры можно порекомендовать временно разорвать соединение между выводами XTAL2(12) DD2 и XTAL1(5) DD3 и подключить к DD3 второй кварц и 2 конденсатора аналогично ZQ1 и C1, C2. Или подать на вывод XTAL1 DD3 сигнал от внешнего источника необходимой частоты и амплитуды.

Теперь наступило время подключить программатор к COM порту и подать на него питание при НАЖАТОЙ кнопке SB1. Ни один из светодиодов не должен светиться. После этого нужно запустить AVR Studio. Желательно использовать версию не ниже 4.09. Все дальнейшие пояснения будут относиться к версии 4.12. После запуска в меню Tools надо выбрать AVR Prog.

Подобные действия следует производить каждый раз после установки новой версии AVR Studio для upgrade –а прошивки ATmega8535. Только никаких проблем с Fuse битами уже не будет, они больше не будут изменяться. Меняется только версия файла STK500.EBN.

Работа с AVRISP интуитивно понятна и подробно описана в Help — AVR Tools User Guide. Пересказывать это описание здесь не имеет смысла. Работа с предлагаемым программатором полностью идентична работе с фирменным AVRISP. Только не следует соглашаться на автоматический upgrade, а делать это всегда в ручном режиме, как описано выше. И еще одно ограничение. Напряжение питания пользовательского устройства должно быть 5в.

Очень часто во время отладки разнообразных проектов возникает потребность в устройстве, для сопряжения микроконтроллера с ПК посредством UART.

MAX232

Устройство состоит из микросхемы MAX232 и обвязки, которая сопрягает уровни напряжения на COM(RS232) с TTL уровнем. Его можно выполнить прямо на макетной плате или в виде отдельно подключаемого модуля:

Конденсаторы С1-С5 электролиты по 1мкФ 16В. Теперь можно общаться с контроллером посредством Terminal 1.9b или аналогичной утилиты. В виде отдельной платы это выглядит так:

собрал данную схемку но

собрал данную схемку но почему то ничего не выходит вывести. получаю в программке 0 при подключении. у атмеги8 ПД0 и ПД1 порты входа и выхода?? есть ли простинькая программка для проверки без использования кварца.

Здравствуйте, друзья!
Решил поделиться с вами схемой COM программатора myPROGGER. У начинающих работать возникают трудности с STK200/300 и я не исключение. Виной всему, похоже, загубленный LPT порт. Хотелось сделать надежный программатор с защитой COM порта. myPROGGER представляет собой переработанную схему Громова с установленной буферной защитой и генератором для восстановления fuse битов (но я обошелся без этого, поэтому мой вариант платы в архиве, также питание к программатору я подаю прямо на него, а не на отладочную плату как в оригинальной статье).
1 этап "Покупка деталей"
Для начала, нужно закупить детали. Приблизительная цена около 100 рублей.

Микросхема MAX232 (MAX232CPE, MAX232N, ST232BN) -1шт.
Микросхема 74LS240 (К555АП3) -1 шт.
Панелька DIP16 -1шт.
Панелька DIP20 -1шт
Транзистор BC547 (КТ315, КТ3102) -1шт
Резисторы: 10кОм-1шт, 14кОм-1шт, 500-1000 Ом- 2шт.
Конденсаторы электролитические: 1мкф.-4шт , 10-50мкф.-1шт. (я использовал 22мкф, вольтаж не менее 16В).
Конденсатор керамический 0.1мкф-2шт.
Гнездо DB-9 -1шт.
Шлейф (6-9 жил) 1-2м
Светодиоды-2шт (красный и зеленый)
И, конечно, все материалы для изготовления печатных плат и инструмент для пайки.

2 этап "Сборка"
После того, как все готово, нужно вытравить плату и собрать программатор по одной из нижеприведенных схем. Первая схема без генератора восстановления фьюзов, а вторая со всеми модификациями и индикатором программирования. Я предпочел первую схему с добавленным индикатором.

3 этап "Проверка прохождения сигналов"
Перед проверкой нужно убедиться в наличии напряжения 5 вольт между ножками 15 и 16 микросхемы IC1, 10 и 20 микросхемы IC2. На конденсаторе С4 должно быть около 10 вольт, а С5 4.5-7 вольт
Для начала, нужно скачать программу tcom.rar

1. Проверка сигнала RTS: При нажатии на клавишу RTS состояние сигналов на контактах RTS и DSR изменится с Low на High.

2.Проверка сигнала TXD: При нажатии кнопки TXD в программе tcom.exe состояние сигнала на выводах TXD и CTS должно поменяться с Low на High, а светодиод "BURN" должен засветиться.

3. Проверка DTR и TXD: Подключим вольтметр к ножкам 7 и 10 микросхемы IC2. Нажимая кнопки TXD и DTR необходимо убедиться, что напряжение на ножке 7 будет около 5 вольт только в том случае, если активны обе кнопки TXD и DTR, но при замыкании выводов MISO и GND состояние сигнала CTS должно измениться на Low.

Читайте также: