Программатор на FT232RL без управляющего МК.
В наши дни становиться всё меньше и меньше ПК с наличием в них COM и LPT портов. В этом случае можно использовать USB программаторы, но большинство из них имеют в своём составе микроконтроллер, который тоже нужно чем-то прошить. Вот тут и начинается проблема “курицы и яйца” т.е чтобы собрать программатор нужен ещё один программатор. Но к счастью в интернете уже давно появилась схема высокоскоростного USB программатора, не требующего прошивки управляющего контроллера. Программатор называется USBBit. В составе этого программатора имеется распространённая микросхема FT232RL. Это аппаратный высокоскоростной переходник USB – RS232, который может не только эмулировать RS232, но и поддерживает прямой доступ к порту (это когда мы можем не только записать в порт число, но и выставить любой вывод порта в 0 или 1). Такой режим называется BitBang. Именно с помощью этого режима можно эмулировать интерфейс SPI, по которому программируются микроконтроллеры AVR. Недостатка у этой микросхемы два: она очень маленькая и запаять её бывает сложно, и она дорогая (у нас она стоит 210 рублей). Но это стоит того! Программатор получается отличный, а главное не требует прошивки управляющего контроллера! Схема (упрощённая):
Это упрощённая схема, но тем не менее рабочая. Также программатор можно использовать в качестве переходника USB – UART. Джампером выбирается уровень сигналов программирования – 5 или 3.3в. Но у этой схемы есть два недостатка: он не возвращает в 1 линию RST после программирования, и чтобы программа запустилась, нужно отключать программатор то целевой платы, что неудобно. И ещё один её недостаток – после завершения программирования линии остаются либо в нулях, либо в единицах, а если к выводам программирования мк подключено ещё что-то, то это доставляет неудобство. Я рекомендую эту схему:
Я собрал именно эту схему. За счёт применения микросхемы буфера удалось избавиться от вышеперечисленных недостатков. У микросхемы буфера есть три состояния выхода: высокий уровень, низкий уровень и hi-z. Hi-z – третье состояние, при котором линии как бы не к чему не подключены, поэтому на них ни 1, ни 0. Вывод 1 и 19 – выводы управления. Если на них подать 1, то выход перейдёт в hi-z состояние, а если ноль – на выводе будет либо 1, либо 0, в зависимости от сигнала на входе. И ещё один плюс такой схемы – если вывод программирования случайно закоротить(соединить) на землю, то сгорит буфер, который стоит 7 рублей, а не микросхема за 210!
Далее я , как обычно развёл плату в Sprint-layout:
Вытравил и запаял:
Вид со стороны пайки:
Софт
Всё, программатор собран. Переходим к тестированию. Для начала подключите его к пк, он должен найти новое оборудование – FT232R USB UART. Далее скачайте архив с драйвером в конце страницы, и установите драйвер. Если всё прошло успешно, в диспетчере устройств появятся два новых устройства – USB Serial Converter (в разделе “контроллеры последовательной шины USB”) и USB Serial Port (в разделе “порты COM и LPT”) :
Если эти устройства отобразились в диспетчере устройств, то можно идти дальше. Следующим шагом идёт настройка микросхемы FT232RL так, чтобы она генерировала тактовый сигнал 6 мГц. Для этого открываем программу FT PROG из архива и нажинаем Devices – Scan and Parse. Через несколько секунд программа найдёт чип и появится такое окно:
Теперь переходим на вкладку USB_Config_Descriptor и выставляем значение Max Bus Power = 500:
Остальное не трогаем. Эта настройка позволит получать из шины USB ток до 500 мА. Теперь переходим на Hardware_Specific – IO_Controls и устанавливаем в поле С4 значение CLK6:
После этой настройки на выводе CUSB4(12) будет генерироваться импульс с частотой 6 мГц. Далее можно поменять идентификатор устройства т.е. имя, под которым его распознаёт система, когда драйверы не установлены. Переходим на USB_String_Descriptors и пишем в поле Product Description своё название. Я написал “Программатор USBBit”:
Настройка завершена и теперь нужно сохранить изменения. Нажимаем на верхней панели Devices – Program. Через пару секунд операция завершится и можно закрывать утилиту. После этого отключите устройство от пк на несколько секунд, а потом включите. Далее попробуем запрограммировать мк.
Этот программатор поддерживает только модифицированная AVR Dude. Поскольку программа консольная, я использую графическую оболочку SinaProg. Оболочка+модифицированная дудка находятся в архиве в конце статьи. Скачивайте их и распаковывайте куда-нибудь поближе. Например, C:\usbbit\. В этом пути не должно быть никаких папок с русскими названиями и пробелами, иначе программа не будет работать!!! Запускайте SinaProg и выбирайте программатор USBBit, порт USB и максимальную скорость. Дальше подключите программатор к мк и к компу. Подайте на мк питание и нажмите кнопку Search:
Из логов дуды следует, что она обнаружила программатор, а потом и мк – ATnega16. Специально для этой статьи я написал программу для мк на языке ассемблер, которая мигает диодом.
Текст этой программы:
.include “m16def.inc”;Подключаем файл с макроопределениями для ATmega16.
.macro OUTI; Макрос, позволяющий вывести значение в одну строчку кода.ldi r16,@1OUT @0, r16.endmacro
ldi r16,@1
out @0,r16
.endmacro
OUTI SPL, low(RAMend);Инициализация стека.
OUTI SPH, high(RAMend)
OUTI DDRD,1<<DDD4
Main:; Бесконечный цикл мигания диодом.
OUTI PORTD,1<<PD4; Зажигаем диод.
rcall delay; Ждёмс!!!
OUTI PORTD,0<<PD4; Гасим диод.
rcall delay; Ждёмс!!!
rjmp main
delay:; Подпрограмма задержки
ldi r16,0
ldi r17,0
ldi r18,5
loop:
DEC r16
BRNE loop
DEC r17
BRNE loop
DEC r18
BRNE loop
ret
Далее компилируем программу и загружаем в мк. Светодиод замигает.
Итог:
Программатор получился очень удобный и быстрый. Надо только суметь запаять FT232RL, но я думаю у вас всё получится! Удачи!
Ссылки:
1) Архив с драйверами, программами, платой.