Программирование AVR: работа с USB AVR-USB-MEGA16: как сделать AVR910-совместимый программатор (STK200) Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

AVR-USB-MEGA16: как сделать AVR910-совместимый программатор (STK200) Печать
Добавил(а) microsin   

Давно точил зубы на программатор AVR910, поскольку он довольно популярный, и поддерживается многими программами. Я знаю как минимум 3 программы, работающие с ним - avrdude, AVR Studio, CodeVision AVR.

Этот программатор давно разработала сама компания Atmel (кажется аж в 2000 году), и полностью опубликовала всю документацию по нему, включая схему, код firmware программатора и протокол работы. Именно по этой причине AVR910 стал стандартом де-факто и до сих пор популярен. Изначально программатор AVR910 был рассчитан на подключение к компьютеру через последовательный COM-порт, и это со временем стало его серьезным недостатком - COM-порты трудно найти в современных компьютерах. Поэтому стали появляться клоны AVR910 (см. Ссылки), которые можно было подключить через USB. Эти AVR910-программаторы использовали для подключения к USB удачную микросхему FT232 (преобразователь USB <-> COM-порт), либо библиотеку V-USB компании Objective Development. На основе библиотеки V-USB делалось firmware, поддерживающее CDC-класс, к которому не нужен драйвер - нужен только информационный inf-файл. Этот класс организует в компьютере виртуальный COM-порт, через который и ведется обмен данными с AVR910.

Мне попались в руки исходники программатора PROTTOSS на чипе ATmega8 (выражаю большую признательность автору). Этот программатор основан на старой версии библиотеки V-USB (см. ссылки). Я портировал его код на чип ATmega16, что позволило без особого труда сделать из макетной платы AVR-USB-MEGA16 программатор, совместимый AVR910 и подключаемый по USB. Схема программатора видна на рисунке (красным цветом показаны дополнительные детали и соединения, которые надо установить на макетное поле платы). В результате получается программатор, полностью аналогичный функционально программатору PROTTOSS-а.

avr-usb-mega16-for-AVR910-sch.jpg
    
На схеме фиолетовым цветом показана доработка макетной платы AVR-USB-MEGA16, чтобы получился программатор AVR910. Кварц необходимо поменять на 12 МГц (на макетной плате AVR-USB-MEGA16 может быть установлен кварц на 16 МГц. У меня в плане доработать исходники, чтобы можно было использовать все кварцы, которые на сегодняшний день поддерживает библиотека V-USB - 12, 15, 16, 16.5 и 20 МГц). На макетное поле установлено 2 ISP-коннектора (6 pin мама и 10 pin папа) для подключения программируемых устройств, а также установлены 2 светодиода - зеленый RD и синий PWR, перемычка LOW SCK и необходимые резисторы. Красный светодиод D1 (он уже был установлен на макетной плате) показывает режим записи программируемого устройства. Зеленый светодиод RD показывает режим чтения. Синий светодиод PWR показывает, что наличие питания на программаторе и показывает активность программатора (его включает и выключает процедура FlashTstLed, вызываемая из главного цикла main). Перемычка LOW SCK переключает скорость чтения и записи программируемого устройства. Когда перемычка снята, то скорость максимальная (используется аппаратный SPI), а когда установлена, то скорость искусственно снижается (при этом протокол SPI реализован программно). Более подробно про алгоритм работы перемычки LOW SCK и всего программатора можно почитать на сайте PROTTOSS (см. ссылки) - он остался без изменений.

avr-usb-mega16-for-AVR910-IMG_0428.JPG

На фото представлен внешний вид получившегося программатора. Цифрами в кружках показано назначение отдельных деталей на плате.   

avr-usb-mega16-for-AVR910-IMG_0387.jpg avr-usb-mega16-for-AVR910-IMG_0392.JPG

1 - разъем miniUSB J1, через который программатор подключается к компьютеру.
2 - ISP коннектор U1, который используется для записи firmware в макетную плату AVR-USB-MEGA16. Через него нужно записать в микроконтроллер U2 программу для работы программатора (двоичный файл Debug\Exe\avr910protoss.bin или avr910protoss.hex из архива проекта, см. ссылку 1).
3 - кварц U4, который надо поменять на 12 МГц (на макетной плате AVR-USB-MEGA16 установлен кварц на 16 МГц).
4 - разъем U3 JTAG, который может использоваться для программирования и отладки firmware (если Вы счастливый обладатель JTAGICE mkII).
5 - красный светодиод WR - когда программатор что-то пишет в программируемое устройство, светодиод мигает.
6 - зеленый светодиод RD - когда программатор что-то читает из программируемого устройства, светодиод мигает.
7 - коннектор для подключения внешнего напряжения питания 5 В - этот коннектор устанавливать необязательно. Я его припаял и использовал при отладке. Можно использовать для умощнения питания при программировании устройств, потребляющих более 70 ма. Внимание! Будьте осторожны с полярностью и напряжением (оно должно быть точно 5 В +/- 0.2 вольта) дополнительного источника питания - чтобы не спалить USB-порты и плату программатора.
8 - штырек, на который я отдельно вывел сигнал 1 МГц (нужен для приведения в чувство микроконтроллеров, у которых ошибочно зашиты фьюзы для использования внешнего кварца), который у PROTTOSS почему-то называется LED. Этот сигнал также выведен на 10-pin коннектор, и я его вывел на отдельный штырек для удобства. Устанавливать необязательно.
9 - перемычка LOW SCK.
10 - синий светодиод PWR.
11 - атавизм - перемычка, которую хотел использовать для сигнала RESET. Устанавливать не нужно.
12 - ISP коннектор 6 pin мама, предназначенный для программирования внешних устройств (рабочий коннектор программатора AVR910).
13 - ISP коннектор 10 pin папа, предназначенный для программирования внешних устройств (рабочий коннектор программатора AVR910).
    
[Отличия описываемого здесь программатора от программатора PROTTOSS]

1. Я применил на всякий случай 2 ISP-коннектора - один 6-выводный (мама), другой 10-выводный (папа). Оба коннектора имеют ставшие стандартными цоколевки, которые широко используются.
2. Перемычка J1J2, которая использовалась у PROTTOSS для прошивки firmware в сам программатор, убрана из схемы за ненадобностью, так как макетная плата AVR-USB-MEGA16 имеет для целей программирования firmware AVR910 отдельный ISP-коннектор U1 (помимо JTAG-коннектора U3).
3. Схема программатора питается не от 3.3 вольт, а от 5 вольт, и на коннекторы ISP выведено напряжение питания 5 вольт, которое можно использовать для питания программируемой платы (если, конечно, она не потребляет ток больше 70 мА). Для подключения дополнительного источника питания можно использовать коннектор 7 (например, если программируемая плата потребляет ток больше 70 ма).
4. Предохранитель по питанию F1 на 0.1 А отсутствует. В нем нет особой нужды, поскольку в протоколе USB оговорено ограничение тока, потребляемое устройством по шине USB (100 мА по умолчанию, и 500 мА для устройств повышенной мощности), и все современные материнские платы и ноутбуки аппаратно поддерживают ограничение тока.
5. Светодиод "PWR" подключен не к шине питания, а к порту микроконтроллера, что позволяет его использовать также и для отладки.

Больше принципиальных отличий нет. Если необходимо программировать микроконтроллеры не от 5 вольт, а от 3.3 вольт, то я советую Вам установить на макетную плату интегральный стабилизатор на 3.3 вольт (например, дешевый LM1117), и запитать все схему от него. Можно даже предусмотреть переключение напряжения питания перемычкой - либо 5 вольт (прямое питание от USB), либо 3.3 вольт (питание от выхода стабилизатора LM1117). Никаких изменений в схему программатора при этом вносить не нужно.

При первом подключении программатора Windows XP запросит драйвер - скормите ей inf-файл AVR910.Driver\2k_xp_32\avr910.usb.2000.xp.inf (находится в архиве пакета с документацией и исходниками, см. ссылки).

avr-usb-mega16-for-AVR910-IMG_0397.JPG

[Проблемы прошивки, которые нужно исправить]

1. Программа работает только с кварцем на 12 МГц, хотя библиотека V-USB позволяет также использовать кварцы на 15, 16, 16.5 и 20 МГц.

2. Программа не работает с программатором avrdude. По словам автора, причина в некорректной обработке команд LED_ON и LED_OFF протокола - avrdude посылает команду LED_XX и не посылает состояние светодиодов, а firmware программатора эту ситуацию некорректно обрабатывает.

Если кто-нибудь из читателей поправит код и решит эти проблемы, буду очень рад.

[Работа программатором через консольную программу avrdude]

Программатор avrdude доступен в исходниках и скомпилированном виде для систем Windows и *nix, его легко скачать в Интернет. Эта программа несомненно порадует Линуксоидов, поскольку с помощью неё можно работать с программатором AVR910 из *nix-систем. Но, к сожалению, у меня программатор AVR910 работал с avrdude некорректно - то, что записывалось в чип ATmega16, не проходило верификацию. Кроме того, работает avrdude на запись чипов с описываемым в статье программатором очень медленно - например, микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт 727 секунд (12 минут). Чтение происходит быстро - за 18 секунд. Наверное, это связано с некорректной работой avrdude с AVR910 от PROTTOSS.

Пример комплексной операции - стирание чипа ATmega16, записи в него файла avr910protoss.hex (формат Intel Hex) и сверки содержимого flash с файлом avr910protoss.hex:

avrdude.exe -p m16 -c avr910 -P com4 -U flash:w:"C:\asm\AVR910-protoss\Debug\Exe\avr910protoss.hex":i -U flash:v:"C:\asm\AVR910-protoss\Debug\Exe\avr910protoss.hex":i -e -F

Пример записи перемычек 0xBF (low) и 0x09 (high):

avrdude.exe -p m16 -c avr910 -P com4 -U lfuse:w:0xBF:m -U hfuse:w:0x09:m -F

Пример чтения flash в файл progmemory.hex:

avrdude.exe -p m16 -c avr910 -P com4 -U flash:r:"C:\asm\AVR910-protoss\Debug\Exe\progmemory.hex":i -F 

[Работа с программатором из CodeVision]

В среде CodeVisionAVR работать с программатором AVR910 довольно просто (я экспериментировал с версией CodeVisionAVR 2.04.4a Advanced). Сначала настраиваете тип программатора - выбираете в меню Settings -> Programmer, выбираете тип программатора Atmel AVRProg (AVR910) и порт Communication Port. Тут надо указать тот COM-порт, который появляется в системе при подсоединении программатора к компьютеру (можно посмотреть через Диспетчер Устройств). Скорость выбираете 115200. Микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт примерно за 42 секунды, проверка записи занимала 23 секунды.

avr910-codevision01.jpg avr910-codevision02.jpg avr910-codevision03.jpg

[Работа с программатором из AVR Studio]

Тут тоже все просто. Выбираете в меню Tools -> AVR Prog..., и программа автоматически находит программатор AVR910 (порт указывать не нужно). Выбираете файл для программирования (в формате Intel HEX), выбираете тип программируемого чипа и жмете кнопку Program. Есть также кнопка Advanced..., которая позволяет стереть чип и настроить его перемычки. Микроконтроллер ATmega16 записывается бинарным файлом из 5862 байт примерно за 15 секунд (вместе с проверкой!). Отдельно проверка занимает примерно 3 секунды. Это наилучший результат! Такая высокая скорость, по словам PROTTOSS, получается за счет того, что программа от Atmel использует команды блочного обмена данными.

avr910-avrstudio.jpg

[Проблемы, которые у меня были с программатором AVR910 (PROTTOSS)]

1. Известная проблема несовместимости с avrdude.

2. "AVRProg error entering programming mode". Симптомы такие - светодиоды при попытке программировать/прочитать чип моргают (т. е. программатор система видит, и обмен данными с программатором есть). Проблема была в том, что не контачил сигнал SCK в коннекторе ISP (он не доходил до программируемого чипа).

3. При перетыкании программатора из одного порта USB в другой меняется номер COM-порта, привязанного к программатору. Например, в одном порте он может быть COM3, а в другом COM4. В программаторе CodeVision AVR приходится менять настройку порта программатора, а в программаторе AVR Studio приходится перезапускать программу (AVRprog от AVR Studio находит порт автоматически, если он в пределах COM1..COM4). К сожалению AVR Studio, в отличие от CodeVision, не видит порты COM5..COM8 (при перетыкании они вполне могут привязаться к программатору).

В принципе, это не проблема, а так - фича. Такое поведение легко поправить, если в файле usbconfig.h ввести макроопределение USB_CFG_SERIAL_NUMBER_LENGTH не равное нулю, и usbCfgSerialNumberStringDescriptor со строкой серийного номера. Я попробовал - работает, COM-порт получается всегда один и тот же при включении в разные порты USB. Внимание - если Вы задали серийный номер устройства в usbconfig.h, то в компьютере нельзя одновременно использовать несколько программаторов с одинаковыми серийными номерами (хотя, собственно, зачем это надо?).

avr910-COM-port-num01.JPG

Вот так выглядят в реестре настройки программатора с назначенным серийным номером AVR910-AVR-USB-MEGA16. Теперь номер COM-порта при перетыкании по портам USB остается неизменным (COM3).

Старые ненужные настройки виртуальных USB COM-портов можно удалить. После удаления их настроек при подключении устройства Windows снова запросит драйвер. Удалять надо подпапки внутри папки HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_16c0&Pid_05e1. Обычно эти подпапки именуются загадочно типа 5&160f4e1&0&2 - это и есть серийный номер, который назначается Windows автоматически, если в устройстве серийный номер не задан. Если же серийный номер задан, то подпапка будет иметь имя, совпадающее с серийным номером (например, подпапка AVR910-AVR-USB-MEGA16). Чтобы удалить подпапку, нужно поставить разрешения (Permissions) на её удаление. Это делается просто. В редакторе реестра (в Windows XP это regedit.exe, в W2K это regedt32) кликните правой кнопкой на подпапке с именем, совпадающим с серийным номером, и выберите в контекстном меню "Permissions...". В открывшемся окне для пользователя Everyone (Все по-русски) поставьте галочку на Full Control (полный доступ), нажмите OK. Теперь подпапка даст себя удалить.

Номер назначенного виртуального USB COM-порта программатора можно поменять вручную через Диспетчер Устройств. Это делается просто. Запускаете диспетчер устройств, идете в раздел "Ports (COM & LPT)". Находите там порт, соответствующий Вашему программатору. Например, это "Communications Port (COM15)". Мы хотим поменять COM15 на что-то более удобное, например COM3 (этот номер порта физически должен быть свободен, то есть сейчас в Диспетчере Устройств он должен отсутствовать или быть запрещен). Для этого кликните правой кнопкой на "Communications Port (COM15)", выберите Свойства (Properties). На закладке Port Settings нажмите кнопку "Advanced...", в выпадающем списке "COM Port Number:" выберите COM3. В этом списке может быть написано, что этот порт используется "COM3 (in use)", но не обращайте на это внимания - Windows просто читает данные из реестра, где может быть указано, что такой порт когда-то использовался. После смены номера COM-порта в выпадающем списке жмем OK, еще раз OK. Если теперь обновить список оборудования в Диспетчере Устройств (меню Action -> Scan for hardware changes), то порт программатора теперь поменяется с COM15 на COM3.

4. При подключенном по USB программаторе не получается перетыкать программируемые платки в коннекторе ISP, если эти платки питаются через этот коннектор. Из-за броска напряжения по питанию программатор перестает функционировать, и приходится перетыкать интерфейс USB. Побороть эту беду можно несколькими способами - отключить у чипа ATmega16 Brown-Out детектор напряжения питания (соответствующими фьюзами), поставить фильтр по питанию коннектора ISP, запитать программируемую плату отдельно, либо подать дополнительное мощное питание +5 вольт на программатор (или применить все эти меры в комплексе).

[Настроечные биты микроконтроллера]

Для обеспечения работы микроконтроллера важно правильно выбрать значение его внутренних настроек (фьюзы, fuses). Самое главное, что необходимо обеспечить - правильную работу тактового генератора, за его работу отвечают фьюзы SUT1, SUT0 (start-up time, время запуска) и CKSEL3..0 (выбор источника для тактирования). По умолчанию выбран внутренний тактовый генератор 1 МГц, что не подойдет, так как для библиотеки V-USB надо обеспечить работу кварцевого резонатора. Вполне работоспособны следующие настройки для этих бит:

SUT1SUT0 = 11, CKSEL3..0 = 1111 (высокочастотный резонатор, время запуска 16 тыс. тактов CK + 64 мс)

SUT1SUT0 = 01, CKSEL3..0 = 1111 (высокочастотный резонатор, время запуска 16 тыс. тактов CK)

Остальные фьюзы не так важны, их можно оставить в значениях по умолчанию. Они выбирают включение/выключение различного функционала микроконтроллера (например, разрешение отладки, разрешение работы JTAG, разрешение программирования через SPI, разрешение работы узла детектора пропадания напряжения питания и т. д.). Советую обратить особое внимание только на фьюзы JTAGEN и SPIEN, так как от них зависит работоспособность программирования кристалла.

Для проверки правильности установки фьюзов используйте даташит на микроконтроллер, а также замечательный сайт, посвященный выбору фьюзов для микроконтроллеров AVR - Engbedded Atmel AVR® Fuse Calculator site:engbedded.com (строка для поиска Google).

В заключение приведу несколько примеров рабочих настроек фьюзов для различных микроконтроллеров.

0xBF LOW BYTE, 0x09 HIGH BYTE
0x9F LOW BYTE, 0XC9 HIGH BYTE

Основное отличие этих двух вариантов в том, что у первого разрешена отладка и JTAG, а у второго запрещены.

0xBF LOW BYTE, 0x09 HIGH BYTE
0x9F LOW BYTE, 0XC9 HIGH BYTE

Основное отличие этих двух вариантов в том, что у первого разрешена отладка и JTAG, а у второго запрещены.

Обратите внимание, что здесь рекомендуемые значения фьзов совпадают с предыдущей врезкой для микроконтроллера ATmega16. Ничего удивительного, набор фьюзов у микроконтроллеров ATmega16, ATmega32, ATmega32A одинаковый.

Если Вы используете загрузчик (к примеру USBasp для ATmega32 или BootloadHID для ATmega16) обратите внимание на фьюзы, которые управляют размером секции загрузки: BOOTSZ1 и BOOTSZ0.

[Ссылки]

1. Проект, описанный в статье, с исходниками - 091106AVR910-protoss.rar (для IAR EWB AVR 5.20), с документацией и драйвером для компьютера. Готовая скомпилированная прошивка для ATmega16 лежит в папке Debug\Exe архива (в форматах bin и hex). Только прошивку и драйвер (без исходников) можно скачать здесь - 091106AVR910-protoss-binaries.zip.
2. AVR910: In-System Programming site:atmel.com.
3Программатор микроконтроллеров AVR / 89S совместимый с AVR910 site:prottoss.com.
4. Программаторы для AVR.
5. V-USB site:obdev.at - библиотека V-USB компании Objective Development, avr-usb-russian.rar - версия V-USB с русскими комментариями. Пошаговое руководство, как начать использовать библиотеку V-USB.
6. Макетная плата AVR-USB-MEGA16.
7. Программы для AVR. Там есть ссылка на закачку CodeVisioAVR, с которым работает программатор AVR910. 
8. AVR-USB-MEGA16: как сделать STK500-совместимый ISP и HVSP программатор (AVR-Doper).

 

Комментарии  

 
0 #12 Дмитрий 29.01.2016 06:49
У Вас дважды дается информация по фьюзам, прием разная. Какая из них верна?

Внимание! Fuses для ATmega16 (ATmega32) должны быть 0xBF (low) и 0x09 (high). ... Перемычки (фьюзы, fuses) у микроконтроллер а ATmega16 и ATmega32 должны быть в состоянии 0x9F LOW BYTE, 0XC9 HIGH BYTE.

microsin: благодарю за указанную неточность. Оба варианта фьюзов верны, т. е. работоспособны в контексте данного приложения. Переписал статью, добавив специальную секцию, посвященную настройкам фьюзов.
Цитировать
 
 
0 #11 Алексей 04.03.2011 22:32
Вы не подскажете про фьюзы, где они находятся? Я просто не знаю, где искать.

microsin: фьюзы (перемычки, fuses) находятся внутри микроконтроллер а AVR, они задают его основную конфигурацию. Меняют фьюзы с помощью ISP, JTAG и PARALLEL программаторов. Подробно о назначении фьзов и их программировани и читайте в даташите на микроконтроллер .
Цитировать
 
 
0 #10 Алексей 18.01.2011 15:32
Компания Atmel официально подтвердила выход замен для ряда микросхем AVR :D. Так что можно менять смело ATMEGA16-16AU на ATMEGA16A-AU.
Цитировать
 
 
0 #9 Игорь 21.12.2010 01:14
А Вы не пробовали сделать на AVR-USB-MEGA16 STK-500 совместимый программатор? Я просто никак не могу решить проблему с драйверами на своей x64 W7. Не получается подписать драйвер, не запустить тестовый режим. А каждый раз перезагружаться и жать F8 - не очень комфортно.

microsin: я не пробовал портировать STK500 на макетную плату AVR-USB-MEGA16, но думаю с этим не должно возникнуть никаких проблем. Есть уже готовая разработка AVR-Doper http://www.obdev.at/products/vusb/avrdoper.html, как раз основанная на библиотеке V-USB, просто перекомпилируйт е проект на микроконтроллер ATmega16 (или ATmega32), на нужную частоту кварца, и проверьте установки перед этим настройки файла usbconfig.h (чтобы ножки D+ и D- были настроены на нужные порты). Мне пока некогда этим заниматься.
Цитировать
 
 
0 #8 Алексей 15.11.2010 16:12
Я посмотрел вроде всё как в ATmega16, только напряжение питания разное и частота у 16А 16 МГц. Я новенький в контроллерах, поэтому может что-то и не понял (разницу). Буду очень благодарен если вы сами посмотрите даташит на 16А.
Цитировать
 
 
0 #7 Алексей 14.11.2010 13:33
Добрый день. Я хотел узнать подойдёт ли вместо ATmega16 - ATmega16A? Смотрел - по сути это тот же ATmega16, только модернизированн ый.

microsin: я не пробовал, но думаю что подойдет. В последнее время чаще использую ATmega32 (он тоже подойдет, но нужно перекомпилирова ть проект). Обычно Atmel в новых ревизиях чипов исправляют баги чипов (баги и соответствующие им ревизии Atmel публикует в даташите на чип).
Цитировать
 
 
0 #6 кулер 25.06.2010 04:23
Не хватает ещё такой информации в описании. Во-первых: скорость порта надо выставить (в CodeVision в частности) 115200, а во-вторых, без подключения программируемог о устройства CodeVision упорно пишет "error entering programming mode" даже на команду чтения версии программатора.
Цитировать
 
 
0 #5 dt 21.04.2010 04:38
Был бы у меня осциллограф, я бы посмотрел какие сигналы выходят из ISP коннектора и их уровень, а его у меня нет. Замкнул все резисторы 330 ом - заработало нормально. Может мне их совсем убрать или поменьше поставить?

microsin: Вы по сути не разобрались с проблемой, а просто загнали её вглубь (на время!). У Вас что-то с той схемой, которую программируете, или с программатором - либо схема слишком нагружает сигналы, либо у Вас нет соответствия между напряжением питания программируемой схемы и уровнями сигналов программировани я. Что конкретно происходит, можно выяснить только с помощью осциллографа. Можете резисторы замкнуть и вообще делать все что угодно, только потом не удивляйтесь, если снова появятся глюки или, что еще хуже - попалите программатор или программируемую схему.
Цитировать
 
 
0 #4 dt 20.04.2010 22:41
Всё очень внимательно проверил, прозвонил все соединения ISP - всё правильно. Может уменьшить сопротивления резисторов 330 ом?

microsin: то, что Вы прозвонили все соединения - недостаточно. Нужно осциллографом убедиться в наличии сигналов MOSI, MISO, SCK и в их качестве - нормальный ли у них уровень (как на плате программатора, так и на программируемой плате). А резисторы уменьшать не стоит - у них и так номинал такой, что в нормальном режиме протекающие через них токи не создают каких-нибудь ощутимых падений напряжения. Если сигналов где-то нет (или испорченные), то нужно искать причину их отсутствия (или порчи).
Цитировать
 
 
0 #3 dt 20.04.2010 21:19
собрал данный программатор, при подключении к компьютеру виндовс видит его и определяет . драйвер тоже установил но при подключении устройства которое нужно запрограммирова ть , программировани е не происходит и вообще ни каких функций не выполняет. порт выбрал правильно, программа CodeVisionAVR подскажите пожалуйста в чём может быть неисправность?

mocrosin: скорее всего ISP-сигналы не доходят до программируемой платы.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page