Программаторы микроконтроллеров AVR
Неболшой обзор используемых на практике программаторов для микроконтроллеров AVR. AVR ISP Prorgammer и USB программатор AVR / 89S совместимый с AVR910.
AVR ISP Prorgammer
Внутрисхемный программатор для программирования микроконтроллеров фирмы ATMEL®, как в условиях серийного производства, так и в процессе разработки и отладки изделий.Программатор поддерживает следующие семейства кристаллов:
TinyAVR
ATtiny11L, ATtiny11, ATtiny12V, ATtiny12L, ATtiny13, ATtiny15L, ATtiny2313, ATtiny26L, ATtiny26, ATtiny28V, ATtiny28L
AVR
AT90S1200, AT90S2313, AT90LS2323, AT90S2323, AT90LS2343, AT90S2343, AT90LS4433, AT90S4433, AT90LS8515, AT90S8515, AT90LS8535, AT90S8535
MegaAVR
ATmega48, ATmega88, ATmega168, ATmega8, ATmega16, ATmega32, ATmega64, ATmega640, ATmega128, ATmega1280, ATmega1281, AT90CAN128, ATmega103, ATmega161, ATmega162, ATmega163L, ATmega169, ATmega8515, ATmega8535, ATmega2560, ATmega2561, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega329, ATmega3290, ATmega649, ATmega6490
Отличительные особенности:
- внутрисхемное программирование (не требуются дополнительные переходные панели, при этом выводы программирования используются в проекте)
- поддержка программатора популярными компиляторами AVRstudio, IAR AVR, Image Craft AVR.
- автоматическая верификация (100% гарантия соответствия зашитого кода исходному)
- высокая скорость программирования, возможность прошивки серийного номера кристалла
я долгое время удачно пользовался и продолжаю пользоваться этим надежным и простым программатором, работающим через LPT порт.
Схема этого простого, но надежного программатора:
Двусторонняя плата помещается в разъем:
Мне понадобился второй программатор, а описанный ниже USB программатор не мог шить нужный мне микроконтроллер. Поэтому я решил повторить этот LPT программатор.
Компьютерные тенденции таковы, что LPT порт скоро исчезнет. Поэтому пора присмотреть альтернативу.
Программатор микроконтроллеров AVR / 89S совместимый с AVR910 (USB программатор)
Посетив несколько магазинов, понял, что цену на программаторы лупят не скромные, поэтому принял решение заморочиться и сделать программатор сам. Пробороздив просторы Интернета, нашел несколько реализаций совместимые по командам с оригинальным программатором AVR910 ATMEL.Здесь http://prottoss.com/projects/AVR910.usb.prog/avr910_usb_programmer.htm нашел наиболее подходящий вариант.
Убрав лишние детали, немного переделал схему программатора под себя. Получился вот такой винегрет:
Минус такой переделки - отсутствие предохранителя. Хотя, как показала практика, USB порт кротким замыканием спалить вряд ли удастся. По крайней мере, на моём компьютере не вышло, но экспериментировать не стоит. Светодиод VL3 сигнализирует о подачи питания на программатор через порт USB. Светодиоды VL1, VL2 сигнализируют о чтении / записи программатора. Джампер J1 – (MODify) служит для программирования микроконтроллера в новом программаторе. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК программы. После этот джампер необходимо разомкнуть и замкнуть джампер J2 - NORMal. Больше мы его не трогаем. С помощью джампера J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом - пониженная. Примечательная особенность, на вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. ОЧЕНЬ полезная штука!
Прошивка FUSE BITS Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN, CKOPT, SUT0 и BODEN. Обычно микроконтроллеры , идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Остальные биты должны быть незапрограммированные (установлены в "1").
Инсталляция Windows 2000/XP/Vista/Seven 32-bit
Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. Операционная система найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к inf-файлу, в зависимости от установленной на вашем компьютере операционной системы. В архиве с прошивкой имеется папка "AVR910.Driver" в которой расположены три директории для разных вариантов операционных систем: -"2k_xp_32" - для операционных систем Windows 2000/XP 32-bit (используется штатный драйвер usbser.sys) -"vista_xp_32" - Для операционных систем Windows XP/Vista/Seven 32-bit(usbser.sys + lowbulk.sys[32-bit] от Osamu Tamura) -"vista_xp_64" - Для операционных систем Windows XP/Vista/Seven 64-bit(usbser.sys + lowbulk.sys[64-bit] от Osamu Tamura)
Особенности установки:
Windows 2000
В принципе, инсталляция не отличается от подобной для Windows XP, но есть одно НО - задержки в драйвере usbser.sys данной ОС портят цепочку команд от ПО на РС до программатора и, соответственно, цепь ответов обратно от программатора до ПО на РС... Проблему я пока не установил, но есть решение. Конечно не самое красивое, но работает надежно :-) Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки ...\winnt\system32\drivers\ и ...\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP1 можно взять здесь. Естественно, что драйвер придется подменять загрузившись под другой ОС (например с загрузочного диска).
Windows XP/Vista/Seven 64 bit
Рекомендации по установке от Osamu Tamura (Recursion Co., Ltd.)
Чтобы использовать драйвера на 64 битной платформе, Вы должны отключить проверку цифровых подписей драйверов, нажимая функциональную клавишу F8 во время начала загрузки системы. Второй вариант, использование программы "Driver Signature Enforcement Overrider", которая подписывает драйвер как "testdriver" и активизирует "testmode", таким образом, Вы можете загрузить драйвер без реальной цифровой подписи. Вы можете найти более детальное описание на странице программы, пройдя по ссылке выше.
Установка: 1. Загрузить "Driver Signature Enforcement Overrider"; 2. Запустите DSEO (инсталляция не требуется). 3. Выберите "Sign a System File", нажмите кнопку "Next" и выберете файл avr910.usb.vista.xp.64.inf из директории ...AVR910.Driver/vista_xp_64/. 4. Выберите "Sign a System File" еще раз, нажмите кнопку "Next" и выберете файл lowbulk.sys из директории ...AVR910.Driver/vista_xp_64/. 5. Выберите "Enable Testmode" и нажмите кнопку "Next". 6. Перезапустите свой компьютер.
Оригинальные драйвера для AVR CDC от Osamu Tamura можно взять здесь.
Автор разработки: Рыжков Андрей aka PROTTOSS. Новокузнецк.
Вот что получилось у меня:
Программатор использую с программами AVRProg v.1.4 из пакета AVRStudio. На Windows XP Работают безотказно.
Программатор устанавливается как виртуальный Com-порт. Единственно, что нужно учесть, AVRProg проверяет порты от 1 до 4. Придется в диспетчере устройств передвинуть на порт до COM4, либо в настройках AVRStudio указать по какой порт искать программатор.
Схему, плату, прошивку и драйвера можно скачать здесь.
P.S. Когда мне нужно было прошить PWM контроллеры (AT90PWM3) то пришлось это делать с помощью старого доброго AVR ISP Prorgammer (через LPT порт), AVRProg v.1.4 не знает AT90PWM3. Не определенная ситуация складывается и с ATmega64. Поэтому, основным рабочим программатором у меня остается ЛПТешный AVR ISP Prorgammer.
P.S.P.S. Не так давно знакомый купил этот USBasp программатор
Драйвера и ПО для него смотри здесь: http://www.fischl.de/usbasp/ Работает, при этом обрадовало отсутствие багов, замеченных у AVR / 89S совместимого с AVR910 (USB) программатора.В статье AVRDUDE Windows описано ПО для работы с этими и другими программаторами.
Удачи!
Смотри также:
Жду пока плата потравиться. Может будут вопросы:))
Спасибо большое автору за статью и особенно - разводку платы (мне кажется самая лучшая разводка, из всего нета). Собрал, всё замечательно заработало. 1. Есть один небольшой недочет - лампочка чтения работает вполнакала, по сравнению с лампочки записи. Это у всех так или только у меня??? 2. Ещё хотелось бы узнать, где можно почитать про фьюзы, чтобы не убить мегу (с ними первый раз работаю, до этого имел большой опыт с пиками) ???
Собрал программатор в точности со схемой. Врубил и винда определила его как неизвестное устройство. Винда 7-ая, 64 бит. Сделал по инструкции с помощью программы Driver Signature Enforcement Overrider. Все также остался неизвестным устройством. В чем может быть проблема ? Что мне сделать чтобы программатор определился правильно ???
Проверьте правильность установленных фюзов (тактирование от внешнего кварцевого резонатора).
Добрый день. Собрал программатор AVR910 , прошил. Определяется как неизвестное устройство. Win7 64b. Фьюзы проверял и перепрошивал раз 10 - результат не меняется. Подскажите, в какую сторону копать? Спасибо.
Если это важно, прошиваю программатором - http://easyelectronics.ru/programmator-stk200300-dlya-mikrokontrollerov-avr.html, прошивал им другие меги, прекрасно работает. Единственный момент, этим программатором прошивал на другом компе с XP 32b.
Добрый день. Под Windows7 не тестировал. 1. Попробуйте для начала подключить к компьютеру с Windows XP. 2. Проверьте качество пайки. У меня один не хотел определяться, причина - плохая пайка. 3. Нет разницы каким программатором прошивать микроконтроллер.
Заработало! Пока настроил только под XP, но это уже хорошо. У меня был целый набор траблов: 1. Всегда проверяйте, что вам дает продавец в магазине - в заказе перепутали и вместо кварца на 12 положили на 20. 2. Всегда проверйяте пайку - на глаз вроде все пропаяно, протыкал иголкой ножки МК, 3 не пропаяны. 3. Всегда отмывайте плату от флюса перед подключением. Теперь остается вопрос выбора ПО, хочется программировать МК прям из редактора кода. После беглого изучения остановился на AVR studio 6, но как там настроить программатор и возможно ли это вообще?...
а в чем причина некоторых расхождений схемы и платы? например 29 в плате с резистором есть, а на схеме нет...или подключение кварца на схеме ноги 9-10, на плате 8-9.... что такое за деталь на картинке: 47 10L X9. я вот не понимаю немного.я только начал контроллеры изучать, так что если не сложно - поясните.
Микроконтроллеры могут быть в разных корпусах. В нашем случае фигурируют DIP(28 ног) и TQFP (32 ноги для поверхностного монтажа). Номера ног могут не совпадать. На схема ноги пронумерованы для DIP. Плата разведена под TQFP. Из за этого и отличия. 29 нога - это RESET. Его рекомендуется через резистор вешать на "+". Но если он будет в висячем состоянии - ничего страшного. На плате он был добавлен "вдогонку". Деталь промаркированная "47 10L" - это танталовый конденсатор 47 мФ, 10В. Не обязательно ставить танталовый, можно электролитический.
большое спасибо.)
в таком случае как подключать USB? я купил простой 2.0А ... стандартный как на компах в общем. не подскажете как его воткнуть? просто его проводами вывел.
Все сделал. подключил - не опознается.... в чем может быть причина. и если можно более подробно что ли скажите как дрова ставить на это чудо техники)
Доброго времени суток, уважаемый admin. Долго искал в сети нечто подобное и, благодаря Вам, нашел, наконец. Все классно и волшебно, единственное есть маленькое замечание - исправьте, пожалуйста, на схеме номиналы R1 и R2 согласно международным стандартам - 680. А то новичков это в заблуждение вводит. А в остальном - еще раз ОГРОМНОЕ спасибо и успехов Вам в дальнейших технических изысканиях.
Номиналы R1 и R2 - 68 Ом. На схеме они так и обозначены. На самом резисторе может быть написано 680. (см. <a href="http://www.avislab.com/blog/smd-resistors/" rel="nofollow">Маркировка SMD резисторов</a>)
Сделал все как написано в статье. При запуске AVR Prog пишет "no supported board found". В чем может быть ошибка??
Недавні записи
- Text to speech. Українська мова
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
Tags
docker sensors rtc led timer wifi remap sms css websocket mongodb bme280 rfid bluetooth esp8266 nodemcu bkp piezo bmp280 i2c mpu-6050 encoder examples avr brushless ngnix nvic displays bldc java-script pmsm barometer pwm lcd ethernet stm32 raspberry-pi capture usart gpio exti atmega meteo solar smd dma adc eeprom eb-500 flask python ssd1306 uart options flash mpx4115a html gps st-link 3d-printer servo dc-dc foc git books battery hih-4000 watchdog dht11 web tim programmator ssd1331 mpu-9250 usb rs-232 motor max1674 soldering
Архіви