AVR-программатор ULTI-SP
Введение
ULTI-ISP — проект и продолжение основанное на работе Thomas Fischl, Fabio Baltieri. Рамкой стремлений данного продукта является сочетание мощностей программирования AVR и 8051 в небольшом программаторе, который сейчас называется «ULTI-ISP» (ULTImate-In-System-Programmer). Продукт сделан на V-USB платформе. Аппаратная часть является полной работой Fabio Baltieri. Он разработал аппаратную часть таким образом, что Вы даже можете поместить её в брелок.
ULTI-ISP может быть использован для программирования широкого спектра микроконтроллеров AVR, а также 8051 серии. Устройство может быть использовано для чтения, записи и стирания флэш-памяти, EEPROM, Fuse бит. Имеет два режима скорости программирования. Он может быть само запрограммирован любым другим AVR программатором или другим ULTI-ISP с помощью 6 контактного IDC кабеля. Другие контакты могут быть использованы для питания целевого устройства.
ULTI-ISP включает в себя встроенную AVR ATMega8 которая занимается всеми USB операциями и предоставляет необходимые для прошивки данные целевому устройству.
Для программирования целевого устройства может быть использован стандартный 6-контактный IDC ISP кабель. Для отображения конечного ISP статуса используется два индикатора, один для питания и другой для статуса программирования.
Для программирования устройств с помощью программатора ULTI-ISP может быть использовано программное обеспечение «ProgISP». И наконец весь проект с открытым исходным кодом, Вы можете добавить и использовать ваши разработки для дальнейшего улучшения.
Описание аппаратной части
Устройство совместимо с USB v1.1.
Внешний вид программатора показан ниже:
Вид программатора сверху:
Стандартная распиновка 6-ти контактного AVR разъема:
Краткое руководство
Программирование микроконтроллеров AVR
Краткая история
Архитектура AVR была разработана двумя студентами Норвежского технологического института (NTH) Alf-Egil Bogen и Vegard Wollan. Первой линейкой МК AVR был AT90S8515, который в 40 контактном DIP корпусе имел такую же распиновку как и микроконтроллер 8051, в том числе адресную шину и шину данных.
Полярность линии сброса была противоположной (8051 имели активно-высокий RESET, а AVR имеет активно-низкий RESET), но кроме этого, распиновка была идентичной.
Компиляция и генерация Hex файлов
AVR программаторы имеют широкий спектр официальных и неофициальных компиляторов и сред разработки, доступных для программирования.
Среди них ATMEL дает бесплатное программное обеспечение ATMEL Studio 6. Его можно легко загрузить с официального сайта. Его среда разработки основана на Visual Studio, что программисту максимальную гибкость для легкого написани программы.
Подключение аппаратной части
Подключите IDC-“мама” разъем ULTI-ISP, а затем остальные контакты к целевому контроллеру в следующей последовательности:
1-MOSI->Зеленый
2-MISO->Серый
3-SCK->Синий
4-RST->Желтый
5-VCC->Пурпурный(фиолет.)
6-GND->Оранжевый
Убедитесь, что используете кварц на XTAL контактах для предотвращения других проблем при программировании. Например, к ATMega8 аппаратная часть подключается, как на рисунке ниже.
Загрузка HEX файл в микроконтроллер
После генерации HEX файла, вы можете следовать шагам описанным в данном руководстве ниже. Я рассматриваю, что вы сделали программу для AVR микроконтроллера ATmega8 и используете среду Windows.
1 — Скачайте и установите последнюю версию Prog-ISP. Откройте её после установки.
2 — После подключения устройства PRG ISP логотип включается.
3 — Перейдите “File > Load Flash” и выберите HEX файл.
4 — Выберите Atmega 8 из выпадающего списка.
5 — Взгляните на ваш контрольный список, который необходим вам для выполнения в автоматическом режиме, после проверки всех необходимых операций вы можете просто нажать «AUTO» для начала процесса программирования.
(Примечание: Проверьте все соединения, прежде чем продолжить этот шаг, иначе вы получите общие ошибки типа «Chip Enable» и т.д.).
Несколько режимов
1 — Программатор включает в себя два режима работы, т.е. БЫСТРЫЙ и МЕДЛЕННЫЙ.
Вы можете удалить джампер, чтобы запустить программирование в быстром режиме, но вы сначала должны установить микроконтроллер для поддержки высокой скорости обработки процессора.
2 — Питание может подаваться в целевой микроконтроллер путем установки перемычки на выводы питания.
Источник
Универсальный USB программатор
В интернете представлено множество схем программаторов микроконтроллеров. Представляю вариант внутрисхемного универсального USB программатора с возможностью отладки, которым пользуюсь я. Вы сможете собрать данный программатор своими руками.
Основой программатора является микросхема FT2232D. Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.
Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.
Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.
Выводы U2 (канал А):
24 — ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 — ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 — ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 — ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 — ADBUS4 – в режиме JTAG вход\выход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 — AСBUS0 – свободно программируемый вход\выход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 — AСBUS1 – свободно программируемый вход\выход во всех режимах.
В принципе, эти выводы многофункциональные. Их поведение определяется выбранным режимом при открытии порта.
Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().
40 —BDBUS0 – выход- в режиме UART TXD;
39 —BDBUS1 – вход- в режиме UART RXD;
28 — BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 — BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).
Ниже приведена печатная плата программатора
На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.
Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.
Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer’s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа .NET» М.,С-П. Питер, 2007.
Скачать исходники ПО и печатную плату в формате P-CAD вы можете ниже
Борисов Алексей (Albor) г.Сызрань, Самарская обл.
Источник
Многофункциональный универсальный программатор
Этот программатор я начал разрабатывать еще в 90-е годы прошлого века. Он задумывался как простой и дешевый универсальный программатор для использования в любительских условиях с минимальными требованиями к компьютеру и с возможностью расширения номенклатуры программируемых микросхем.
В дальнейшем программа неоднократно дорабатывалась, номенклатура поддерживаемых микросхем расширялась. Последняя версия — август 2005г. Она поддерживает следующие классы микросхем: PROM: 155PE3, 556PTxx; EPROM: 2716. 27512, 27C64. 27C512; EEPROM: W27C512, 28C16A, 28C17A, 28C64A, AT28C64B, AT28C256, AT29C256/257/512; 8051: 8751, 87C51, 87C51FA, 87C51FB, 87C51FC, 87C51RD+, AT89C51, AT89C52, AT89C55, AT89C1051, AT89C2051, AT89C4051, AT89S53, AT89S8252; PIC16: PIC12F629/675, PIC16F84/C84, PIC16F627/A, PIC16F628/A, PIC16F648A, PIC16F73/74, PIC16F76/77, PIC16F873/874, PIC16F876/877, PIC16F876A/877A, PIC16C5xx, PIC16C6x, PIC16CE6xx, PIC16C7x; AVR: AT90S1200, AT90S2313, AT90S2323/2343, AT90S2333, AT90S4414/4434, AT90S4433, AT90S8515/8535, ATtiny10/11, ATtiny12, ATtiny15, ATtiny28; I2C: 24LC01. 24LC512, PCA8581, PCF8582, ST24E16; PIC18: PIC18Fxx2/xx8; PIC12: PIC12C508/509, PIC12F508/509, PIC16F505.
Для ATMEL AVR поддерживаются все режимы программирования: как Low voltage, так и High voltage. Т.е. можно программировать в параллельном режиме все поддерживаемые AVR микроконтроллеры.
Принципиальная схема основного блока программатора показана на рисунке. Его легко собрать своими руками. Программатор представляет собой универсальный микропроцессорный контроллер на базе микроконтроллера КР1830ВЕ31 (80C31). В его состав входят следующие узлы: ПЗУ DD3 для хранения управляющей программы, ОЗУ DD5 для хранения данных, регистр для демультиплексирования адреса и данных DD2, параллельный порт для связи с программируемой микросхемой DD4, а также узлы приемника и передатчика RS-232, осуществляющие преобразование уровней – VT1 и VT2. Все эти элементы включены по стандартной схеме.
Основное отличие данного программатора от других – это возможность работы с любым компьютером, под управлением любой операционной системы. Не обязательно Windows или DOS, даже не обязательно IBM совместимый компьютер. Важно, чтобы имелся COM порт и стандартная коммуникационная программа для работы с ним. Если нет COM порта, программатор можно подключить и к USB через адаптер USB-COM. Поддерживаются кодировки DOS, Windows и KOI-8.
На компьютере должна быть запущена какая-либо коммуникационная программа, например «Telemax», входящая в комплект Norton Commander, «Terminal» из Windows и т.п. Я обычно пользуюсь простой, но очень удобной программой «Tera Term Pro 2.3».
Пользователь управляет процессом программирования, набирая на клавиатуре компьютера команды и наблюдая на экране результаты их выполнения. Все команды состоят из одной или двух латинских букв, которые можно набирать, как в верхнем, так и в нижнем регистре клавиатуры. За командой могут следовать один, два или три цифровых параметра, разделенных пробелом. Не значащие нули слева можно не вводить, а команду редактировать клавишей «Back Space». Ввод завершается нажатием «Enter». В случае какой-либо ошибки при вводе выдается сообщение «ERROR», а на выполнение команд, последствия которых могут быть необратимы для программируемой микросхемы, запрашивается подтверждение. Полный список всех доступных команд постоянно присутствует на экране, поэтому, даже если пользоваться программатором один раз в год, не придется что-либо вспоминать.
При работе с программатором вначале необходимо нажать на клавиатуре компьютера любую буквенно-цифровую клавишу в латинском регистре, т.е. с кодом менее 128. При этом программатор автоматически определит скорость работы порта и будет посылать информацию в компьютер на этой же скорости. Если все сделано правильно, на экране появится предложение выбрать кодовую таблицу, с которой будет работать программатор. Как указывалось выше, поддерживается кодировка DOS, Windows и KOI-8. Все дальнейшие сообщения будут выводиться на экран на русском языке. Если символы не читаемы, значит кодовая таблица выбрана неверно и следует выключить и снова включить программатор, а затем выбрать другую кодировку.
Программа дорабатывалась в течение нескольких лет. В итоге — около 400(!) кбайт чистого текста на ассемблере. Кодировка — DOS, не пытайтесь перекодировать ассемблерный текст в Windows, это полностью нарушит работу программы.
Для расширения номенклатуры программируемых микросхем есть несколько путей. Во-первых, по мере появления у автора возможности, необходимости и желания, программа модернизируется. Во-вторых, архитектура программатора открытая, поэтому любой желающий, конечно, при наличии достаточных знаний и опыта, может написать свою собственную программу. Наконец, в-третьих, можно разработать программный модуль для нужного типа микросхемы и непосредственно перед программированием загружать его в верхнюю половину ОЗУ в виде HEX файла, а затем запускать на выполнение командой G из меню.
Печатную плату я рисовал вручную, в те годы Sprint Layout еще не было. Но был PCAD, в котором и прислал мне свои варианты платы один из радиолюбителей, повторивших эту конструкцию. Я, в свою очередь, делюсь этой информацией с Вами. Это дополнение выложено в архиве в том виде, в каком я его получил — «как есть». Более подробно работа с программатором описана в pdf файле, там же приведены схемы всех сменных блоков. Выкладываю также прошивку и исходный текст программы. Все ссылки ниже.
В 2018 г. у меня возникла необходимость запрограммировать память W29C020 объемом 256 Кбайт. Пришлось доработать схему и программу. Модернизированный вариант программатора позволяет работать с микросхемами серий 29xxxx, 28xxxx объемом 128, 256 и 512 Кбайт. Кроме того, я заменил в нем контроллер на AT89C51RD2, в котором есть внутренняя память программ объемом 64 Кбайта. Это позволило отказаться от внешнего ПЗУ 27C256, что упростило схему. Упростился также и процесс обновления прошивки. Если интересно, ознакомьтесь с описанием модернизированного варианта программатора.
Источник