Меню

Usb программатор для pic контроллеров своими руками

Самодельный USB программатор для PIC контроллеров

Самодельный USB программатор для PIC контроллеров

Usb программатор pic своими руками

Usb программатор pic своими руками

Программатор PIC своими руками. Чем «прошивать» микроконтроллеры, короткий обзор с примером.

Программатор PIC своими руками. Чем «прошивать» микроконтроллеры, короткий обзор с примером.

Вот есть микроконтроллер, есть написанная программа. Что ещё нужно? Программатор! Ведь без помощи аппаратуры, которая сможет записать последовательностью сигналов процесс, который хочет реализовать человек, сложно будет что-то сделать. А как здорово сделать программатор своими руками!

Также здесь вы найдете описание программаторов и из другого семейства – АВР, но исключительно в сравнительных целях. Приступим к статье, где рассказывается, как сделать программатор-flash своими руками.

Для чего необходим программатор

программатор своими руками

Так как статья пишется в том числе и для читателей, не слишком осведомленных в этом вопросе, то необходимо взять во внимание и такой пункт. Программатор – это специальное устройство, которое посредством получаемых от компьютера сигналов программирует микроконтроллер, который будет управлять схемой. Качественное устройство является очень важным, ведь в таком случае можно будет быть уверенным в том, что МК не выйдет из строя, или, что важнее, из строя не выйдет компьютер. Есть небольшое уточнение: программатор для PIC своими руками делают только те, у кого есть микроконтроллеры этого семейства. Другие из-за другой архитектуры могут не работать. Но можно попробовать своими силами усовершенствовать представленные схемы и собрать программатор AVR своими руками.

Платные против самодельных

программатор avr своими руками

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

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

Драйвера

программатор pic своими руками

Первоначально следует подобрать программное обеспечение. В зависимости от схемы программатор может быть заточен или под один микроконтроллер, или под большое их количество. Тот, что будет далее рассматриваться, рассчитан примерно на 98 программаторов от 12-го до 18-го семейств. Для тех, кому понравится вариант сборки, следует уточнить, что в качестве драйверного программного обеспечения использовалась программа IC-PROG. Можете попробовать работать и с другой, но уже на свой страх и риск. Это информация для тех, кто хочет создать программатор для AVR своими руками. Далее будет указано, для каких семейств микроконтроллеров РІС он рассчитан. Если есть желание сделать программатор AVR своими руками или какой-то другой тип МК, то вы всегда можете попытаться.

Схема программатора

usb программатор своими руками

Вот тут уже можно попробовать сделать программатор для PIC своими руками. В качестве гнезда необходимо использовать разъем DB9. Можно сделать и USB-программатор своими руками, но для него понадобятся дополнительные элементы схемы, которые усложнят и без того довольно сложную плату. Также внимательно рассмотрите рисунок с различными прямоугольниками (чтобы знать, какие части за что отвечают). Выводы должны подключатся именно туда, куда нужно, иначе микроконтроллер превратится в небольшой кусочек пластика и железа, который можно поставить на стеночку как напоминание о былых ошибках. Процесс сборки и использования программатора таков:

  1. Собрать сам программатор так, как написано на схемах. Просмотреть на наличие некачественной пайки, а также потенциальных мест замыкания. Программатор рассчитан на работу с напряжением 15-18В, больше категорически не рекомендуется.
  2. Подготовьте среду управления прошивкой (выше было упоминание одной программы, с которой программатор точно работает).

Процесс прошивки микроконтроллера

программатор flash своими руками

Процесс прошивки микроконтроллера данными можно считать продолжением предыдущего списка:

  1. Произвести необходимые для работы программы настройки.
  2. Установить микроконтроллер в программатор так, как отмечено на схеме. Лучше лишний раз убедиться, что всё так, как должно быть, чем ехать за новым МК.
  3. Подключить питание.
  4. Запустить выбранное программное обеспечения (для этого программатора ещё раз посоветуем IC-Prog).
  5. В выпадающем меню вверху справа выбрать, какой именно микроконтроллер следует прошить.
  6. Подготовленный файл выбрать для программирования. Для этого перейдите по пути «Файл» – «Открыть файл». Смотрите, не перепутайте с «Открыть файл данных», это совсем другое, прошить микроконтроллер с помощью второй кнопки не получится.
  7. Нажать на кнопку «Начать программировать микросхему». Примерное время, через которое она будет запрограммирована – до 2 минут. Прерывать процесс программирования нельзя, это чревато выведением из строя микроконтроллера.
  8. И в качестве небольшого контроля нажмите на кнопку «Сравнить микросхему с буфером».

Не очень сложно, но эта последовательность действий позволяет получить качественный программатор, своими руками сделанный, для различных типов микроконтроллеров РІС.

Какие микроконтроллеры поддерживаются и могут быть прошиты программным обеспечением

Как уже выше упоминалось, этот программатор может работать как минимум с 98 моделями. Как можно заметить по схематическим рисункам и платам, он рассчитан на те МК, что имеют 8, 14, 18, 28 и 40 выводов. Этого должно хватить для самых различных экспериментов и построения самых разных механизмов, которые только можно сделать в пределах скромного бюджета среднестатистического гражданина. Можно выразить уверенность, что сделанный программатор своими руками сможет удовлетворить самых требовательных радиолюбителей — при условии, что он будет сделан качественно.

Собираем программатор для микроконтроллеров PIC и микросхем EEPROM

USB-программатор

Какие первые шаги должен сделать радиолюбитель, решивший собрать схему на микроконтроллере? Естественно, необходима управляющая программа – «прошивка», а также программатор.

И если с первым пунктом нет проблем – готовую «прошивку» обычно выкладывают авторы схем, то вот с программатором дела обстоят сложнее.

Цена готовых USB-программаторов довольно высока и лучшим решением будет собрать его самостоятельно. Вот схема предлагаемого устройства (картинки кликабельны).

Основная часть.

Основная часть схемы программатора

Панель установки МК.

Панель установки микроконтроллера

Исходная схема взята с сайта LabKit.ru с разрешения автора, за что ему большое спасибо. Это так называемый клон фирменного программатора PICkit2. Так как вариант устройства является «облегчённой» копией фирменного PICkit2, то автор назвал свою разработку PICkit-2 Lite, что подчёркивает простоту сборки такого устройства для начинающих радиолюбителей.

Что может программатор? С помощью программатора можно будет прошить большинство легкодоступных и популярных МК серии PIC (PIC16F84A, PIC16F628A, PIC12F629, PIC12F675, PIC16F877A и др.), а также микросхемы памяти EEPROM серии 24LC. Кроме этого программатор может работать в режиме USB-UART преобразователя, имеет часть функций логического анализатора. Особо важная функция, которой обладает программатор – это расчёт калибровочной константы встроенного RC-генератора некоторых МК (например, таких как PIC12F629 и PIC12F675).

USB-программатор PICkit-2 Lite

Необходимые изменения.

В схеме есть некоторые изменения, которые необходимы для того, чтобы с помощью программатора PICkit-2 Lite была возможность записывать/стирать/считывать данные у микросхем памяти EEPROM серии 24Cxx.

Из изменений, которые были внесены в схему. Добавлено соединение от 6 вывода DD1 (RA4) до 21 вывода ZIF-панели. Вывод AUX используется исключительно для работы с микросхемами EEPROM-памяти 24LС (24C04, 24WC08 и аналоги). По нему передаются данные, поэтому на схеме панели программирования он помечен словом «Data». При программировании микроконтроллеров вывод AUX обычно не используется, хотя он и нужен при программировании МК в режиме LVP.

Также добавлен «подтягивающий» резистор на 2 кОм, который включается между выводом SDA и Vcc микросхем памяти.

Все эти доработки я уже делал на печатной плате, после сборки PICkit-2 Lite по исходной схеме автора.

Микросхемы памяти 24Cxx (24C08 и др.) широко используются в бытовой радиоаппаратуре, и их иногда приходится прошивать, например, при ремонте кинескопных телевизоров. В них память 24Cxx применяется для хранения настроек.

В ЖК-телевизорах применяется уже другой тип памяти (Flash-память). О том, как прошить память ЖК-телевизора я уже рассказывал. Кому интересно, загляните.

В связи с необходимостью работы с микросхемами серии 24Cxx мне и пришлось «допиливать» программатор. Травить новую печатную плату я не стал, просто добавил необходимые элементы на печатной плате. Вот что получилось.

Доработка USB-программатора PIC микроконтроллеров

Ядром устройства является микроконтроллер PIC18F2550-I/SP.

Микроконтроллер PIC18F2550 на плате программатора

Это единственная микросхема в устройстве. МК PIC18F2550 необходимо «прошить». Эта простая операция у многих вызывает ступор, так как возникает так называемая проблема «курицы и яйца». Как её решил я, расскажу чуть позднее.

Список деталей для сборки программатора. В мобильной версии потяните таблицу влево (свайп влево-вправо), чтобы увидеть все её столбцы.

Название Обозначение Номинал/Параметры Марка или тип элемента
Для основной части программатора
Микроконтроллер DD1 8-ми битный микроконтроллер PIC18F2550-I/SP
Биполярные транзисторы VT1, VT2, VT3   КТ3102
VT4   КТ361
Диод VD1   КД522, 1N4148
Диод Шоттки VD2   1N5817
Светодиоды HL1, HL2   любой на 3 вольта, красного и зелёного цвета свечения
Резисторы R1, R2 300 Ом МЛТ, МОН (мощностью от 0,125 Вт и выше), импортные аналоги
R3 22 кОм
R4 1 кОм
R5, R6, R12 10 кОм
R7, R8, R14 100 Ом
R9, R10, R15, R16 4,7 кОм
R11 2,7 кОм
R13 100 кОм
Конденсаторы C2 0,1 мк К10-17 (керамические), импортные аналоги
C3 0,47 мк
Электролитические конденсаторы C1 100 мкф * 6,3 в К50-6, импортные аналоги
C4 47 мкф * 16 в
Катушка индуктивности (дроссель) L1 680 мкГн унифицированный типа EC24, CECL или самодельный
Кварцевый резонатор ZQ1 20 МГц  
USB-розетка XS1   типа USB-BF
Перемычка XT1   любая типа «джампер»
Для панели установки микроконтроллеров (МК)
ZIF-панель XS1   любая 40-ка контактная ZIF-панель
Резисторы R1 2 кОм МЛТ, МОН (мощностью от 0,125 Вт и выше), импортные аналоги
R2, R3, R4, R5, R6 10 кОм

Теперь немного о деталях и их назначении.

Зелёный светодиод HL1 светится, когда на программатор подано питание, а красный светодиод HL2 излучает в момент передачи данных между компьютером и программатором.

Для придания устройству универсальности и надёжности используется USB-розетка XS1 типа «B» (квадратная). В компьютере же используется USB-розетка типа «А». Поэтому перепутать гнёзда соединительного кабеля невозможно. Также такое решение способствует надёжности устройства. Если кабель придёт в негодность, то его легко заменить новым не прибегая к пайке и монтажным работам.

В качестве дросселя L1 на 680 мкГн лучше применить готовый (например, типов EC24 или CECL). Но если готовое изделие найти не удастся, то дроссель можно изготовить самостоятельно. Для этого нужно намотать 250 – 300 витков провода ПЭЛ-0,1 на сердечник из феррита от дросселя типа CW68. Стоит учесть, что благодаря наличию ШИМ с обратной связью, заботиться о точности номинала индуктивности не стоит.

Напряжение для высоковольтного программирования (Vpp) от +8,5 до 14 вольт создаётся ключевым стабилизатором. В него входят элементы VT1, VD1, L1, C4, R4, R10, R11. С 12 вывода PIC18F2550 на базу VT1 поступают импульсы ШИМ. Обратная связь осуществляется делителем R10, R11.

Чтобы защитить элементы схемы от обратного напряжения с линий программирования в случае использования USB-программатора в режиме внутрисхемного программирования ICSP (In-Circuit Serial Programming) применён диод VD2. VD2 – это диод Шоттки. Его стоит подобрать с падением напряжения на P-N переходе не более 0,45 вольт. Также диод VD2 защищает элементы от обратного напряжения, когда программатор применяется в режиме USB-UART преобразования и логического анализатора.

При использовании программатора исключительно для программирования микроконтроллеров в панели (без применения ICSP), то можно исключить диод VD2 полностью (так сделано у меня) и установить вместо него перемычку.

Компактность устройству придаёт универсальная ZIF-панель (Zero Insertion Force – с нулевым усилием установки).

Универсальная ZIF-панель Connfly

Благодаря ей можно «зашить» МК практически в любом корпусе DIP.

На схеме «Панель установки микроконтроллера (МК)» указано, как необходимо устанавливать микроконтроллеры с разными корпусами в панель. При установке МК следует обращать внимание на то, чтобы микроконтроллер в панели позиционируется так, чтобы ключ на микросхеме был со стороны фиксирующего рычага ZIF-панели.

Вот так нужно устанавливать 18-ти выводные микроконтроллеры (PIC16F84A, PIC16F628A и др.).

Установка микроконтроллера в панель

А вот так 8-ми выводные микроконтроллеры (PIC12F675, PIC12F629 и др.).

Установка 8-ми выводного микроконтроллера PIC12F629

Если есть нужда прошить микроконтроллер в корпусе для поверхностного монтажа (SOIC), то можно воспользоваться переходником или просто подпаять к микроконтроллеру 5 выводов, которые обычно требуются для программирования (Vpp, Clock, Data, Vcc, GND).

Программирование микроконтроллера в корпусе SOIC

Готовый рисунок печатной платы со всеми изменениями вы найдёте по ссылке в конце статьи. Открыв файл в программе Sprint Layout 5.0 можно с помощью режима «Печать» не только распечатать слой с рисунком печатных проводников, но и просмотреть позиционирование элементов на печатной плате. Обратите внимание на изолированную перемычку, которая связывает 6 вывод DD1 и 21 вывод ZIF-панели. Печатать рисунок платы необходимо в зеркальном отображении.

Изготовить печатную плату можно методом ЛУТ, а также маркером для печатных плат, с помощью цапонлака (так делал я) или «карандашным» методом.

Рисунок печатных проводников

Вот рисунок позиционирования элементов на печатной плате (кликабельно).

Позиционирование элементов на плате

При монтаже первым делом необходимо запаять перемычки из медного лужёного провода, затем установить низкопрофильные элементы (резисторы, конденсаторы, кварц, штыревой разъём ISCP), затем транзисторы и запрограммированный МК. Последним шагом будет установка ZIF-панели, USB-розетки и запайка провода в изоляции (перемычки).

«Прошивка» микроконтроллера PIC18F2550.

Файл «прошивки» — PK2V023200.hex необходимо записать в память МК PIC18F2550I-SP при помощи любого программатора, который поддерживает PIC микроконтроллеры (например, Extra-PIC). Я воспользовался JDM Programmator’ом JONIC PROG и программой WinPic800.

JDM programmer

Ссылка на файл PK2V023200.hex, запакованный в архив rar, дана в конце статьи.

Залить «прошивку» в МК PIC18F2550 можно и с помощью всё того же фирменного программатора PICkit2 или его новой версии PICkit3. Естественно, сделать это можно и самодельным PICkit-2 Lite, если кто-либо из друзей успел собрать его раньше вас:).

Также стоит знать, что «прошивка» микроконтроллера PIC18F2550-I/SP (файл PK2V023200.hex) записывается при установке программы PICkit 2 Programmer в папку вместе с файлами самой программы. Примерный путь расположения файла PK2V023200.hex  — «C:Program Files (x86)MicrochipPICkit 2 v2PK2V023200.hex». У тех, у кого на ПК установлена 32-битная версия Windows, путь расположения будет другим: «C:Program FilesMicrochipPICkit 2 v2PK2V023200.hex».

Ну, а если разрешить проблему «курицы и яйца» не удалось предложенными способами, то можно купить уже готовый программатор PICkit3 на сайте AliExpress. Там он стоит гораздо дешевле. О том, как покупать детали и электронные наборы на AliExpress я писал тут.

Обновление «прошивки» программатора.

Прогресс не стоит на месте и время от времени компания Microchip выпускает обновления для своего ПО, в том числе и для программатора PICkit2, PICkit3. Естественно, и мы можем обновить управляющую программу своего самодельного PICkit-2 Lite. Для этого понадобится программа PICkit2 Programmer. Что это такое и как пользоваться — чуть позднее. А пока пару слов о том, что нужно сделать, чтобы обновить «прошивку».

Для обновления ПО программатора необходимо замкнуть перемычку XT1 на программаторе, когда он отключен от компьютера. Затем подключить программатор к ПК и запустить PICkit2 Programmer. При замкнутой XT1 активируется режим bootloader для загрузки новой версии прошивки. Затем в PICkit2 Programmer через меню «Tools» — «Download PICkit 2 Operation System» открываем заранее подготовленный hex-файл обновлённой прошивки. Далее произойдёт процесс обновления ПО программатора.

После обновления нужно отключить программатор от ПК и снять перемычку XT1. В обычном режиме перемычка разомкнута. Узнать версию ПО программатора можно через меню «Help» — «About» в программе PICkit2 Programmer.

Это всё по техническим моментам. А теперь о софте.

Работа с программатором. Программа PICkit2 Programmer.

Для работы с USB-программатором нам потребуется установить на компьютер программу PICkit2 Programmer. Это специальная программа обладает простым интерфейсом, легко устанавливается и не требует особой настройки. Стоит отметить, что работать с программатором можно и с помощью среды разработки MPLAB IDE, но для того, чтобы прошить/стереть/считать МК достаточно простой программы – PICkit2 Programmer. Рекомендую.

После установки программы PICkit2 Programmer подключаем к компьютеру собранный USB-программатор. При этом засветится зелёный светодиод («питание»), а операционная система опознает устройство как «PICkit2 Microcontroller Programmer» и установит драйвера.

Запускаем программу PICkit2 Programmer. В окне программы должна отобразиться надпись.

PICkit2 Lite найден и подключен

Если программатор не подключен, то в окне программы отобразится страшная надпись и краткие инструкции «Что делать?» на английском.

Программатор не подключен!

Если же программатор подключить к компьютеру с установленным МК, то программа при запуске определить его и сообщит нам об этом в окне PICkit2 Programmer.

Определение типа МК в панели программатора

Поздравляю! Первый шаг сделан. А о том, как пользоваться программой PICkit2 Programmer, я рассказал в отдельной статье. Следующий шаг.

Необходимые файлы:

  • Прошивка USB-программатора (PK2V023200.hex);

  • Рисунок печатной платы в формате .lay;

  • Программа PicKit2 Programmer;

  • Руководство пользователя PICkit2 (рус.) берём здесь или здесь.

Главная &raquo Микроконтроллеры &raquo Текущая страница

Также Вам будет интересно узнать:

  • Микросхемы КМОП.

  • RS-триггер.

Многие радиолюбители начинающие по началу своего дела боятся начинать работу с микроконтроллером.Связано это со многим,и основной часто страх как правильно программировать и чем программировать.В данной статье приведена схема простого программатора для микроконтроллера PIC
.Смотрим,собираем,спрашиваем на официальном форуме и оставляем отзывы если у вас получилось

Начинать свою работу я советовал бы сначала с общих сведений о микроконтроллерах.

Программатор ExtraCheap

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

Но нужный программатор многим запросам был найден.

Для передачи данных используется COM порт. Схема питается от 5 вольт которые можно взять от портов USB или PS/2.

Еще одна фотография этого устройства:

Для работы с программатором рекомендуется использовать программу IC-Prog

Настройка IC-Prog

Качаем с офф сайта последнюю версию программы IC-Prog Software, NT/2000 driver, Helpfile in Russian language и распаковываем их в одну и туже директорию.

Теперь необходимо установить драйвер программатора, для чего запускаем icprog.exe (если появятся сообщения об ошибках, то просто игнорируем их) и выбираем пункт «Options» в меню «Settings». Открываем вкладку «Programming» и устанавливаем галочку напротив пункта «Verify during programming». Далее в разделе «Misc» нужно активировать опцию «Enable NT/2000/XP Driver», сохранить настройки нажав на кнопку «ОК» и перезапустить программу.

Сменить язык интерфейса можно в разделе «Language». Для того, чтобы указать программе тип нашего программатора, нажимаем F3, в открывшемся окне выбираем «JDM Programmer» и указываем COM порт, к которому подключено устройство.

На этом предварительную настройку программы можно считать законченной.

Прошивка МК

IC-Prog позволяет работать с большим количеством МК, но нам нужен только PIC12F629 — выбираем его в выпадающем списке, расположенным в правом верхнем углу программы.

Для чтения прошивки из МК выполняем команду «Читать микросхему» (значок с зеленой стрелочкой или F8).

По окончанию процесса чтения, в окне программного кода отобразится прошивка МК в шестнадцатеричном виде. Следует обратить внимание на последнюю ячейку памяти по адресу 03F8 — там хранится значение константы OSCCAL , которое устанавливает производитель при калибровке чипа. У каждого МК оно свое, так что неплохо было бы его куда нибудь переписать (я, к примеру, царапаю его иголкой на обратной стороне PIC»а) для облегчения процесса восстановления (хотя это не обязательно), если во время прошивки эта константа была случайно перезаписана.

Для того, чтобы «залить» прошивку из *.hex файла в МК, ее необходимо открыть в программе («Файл»->«Открыть Файл…» или Ctrl+O) и выполнить команду «Программировать микросхему» (значок с желтой молнией или F5). Отвечаем «Yes» на первый вопрос.

А вот на следующий вопрос необходимо ответить «Нет», иначе перезапишется константа OSCCAL, о которой говорилось ранее.

Развитие электроники идёт стремительными темпами, и всё чаще главным элементом того или иного устройства является микроконтроллер. Он выполняет основную работу и освобождает проектировщика от необходимости создания изощрённых схемных решений, тем самым уменьшая размер печатной платы до минимального. Как всем известно, микроконтроллером управляет программа, записанная в его внутреннюю память. И если опытный программист-электронщик не испытывает проблем с использованием микроконтроллеров в своих устройствах, то для начинающего радиолюбителя попытка записать программу в контроллер (особенно PIC) может обернуться большим разочарованием, а иногда и небольшим пиротехническим шоу в виде дымящей микросхемы.

Как ни странно, но при всём величии сети Интернет в нём очень мало информации о прошивке PIC-контроллеров
, а тот материал что удаётся найти — очень сомнительного качества. Конечно, можно купить заводской программатор за неадекватную цену и шить сколько душе угодно, но что делать, если человек не занимается серийным производством. Для этих целей можно собрать несложную и не дорогую в реализации самоделку , именуемую JDM-программатором
по приведенной ниже схеме (рисунок №1):


Рисунок №1 — схема программатора

Сразу привожу перечень элементов для тех, кому лень всматриваться в схему:

  • R1 — 10 кОм
  • R2 — 10 кОм (подстроченный). Регулировкой сопротивления данного резистора нужно добиться около 13В на выводе №4 (VPP) во время программирования. В моём случае сопротивление составляет 1,2 кОм
  • R3 — 200 Ом
  • R4, R5 — 1,5 кОм
  • VD1, VD2, VD3, VD4, VD6 — 1N4148
  • VD5 — 1N4733A (Напряжение стабилизации 5,1В)
  • VD7 — 1N4743A (Напряжение стабилизации 13В)
  • C1 — 100 нФ (0,1 мкФ)
  • C2 — 470 мкФ х 16 В (электролитический)
  • SUB-D9F — разъём СОМ-порта (МАМА или РОЗЕТКА)
  • Панелька DIP8 — зависит от используемого вами контроллера

В схеме использован пример подключения таких распространённых контроллеров, как PIC12F675
и PIC12F629
, но это совсем не значит, что прошивка других серий PIC
будет невозможна. Чтобы записать программу в контроллер другого типа, достаточно перекинуть провода программатора в соответствии с рисунком №2, который приведён ниже.


Рисунок №2 — варианты корпусов PIC-контроллеров с необходимыми выводами

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

Хоть сама схема довольно проста и не вызовет трудностей в сборке, но она тоже требует уважения. Поэтому неплохо было бы сделать под неё печатную плату. После некоторых манипуляций с программой SprintLayout
, текстолитом, дрелью и утюгом, на свет родилась вот такая заготовка (фото №3).


Фото №3 — печатная плата программатора

Скачать исходник печатной платы для программы SprintLayout
можно по этой ссылке:

(скачиваний: 680)


При желании его можно изменить под свой тип PIC-контроллера. Для тех, кто решил оставить плату без изменений, выкладываю вид со стороны деталей для облегчения монтажа (рисунок №4).


Рисунок №4 — плата с монтажной стороны

Ещё немного колдовства с паяльником и мы имеем готовое устройство, способное прошить PIC-контроллер
через COM-порт
вашего компьютера. Ещё тёпленький и не отмытый от флюса результат моих стараний показан на фото №5.


Фото №5 — программатор в сборе

С этого момента, первый этап на пути к прошивке PIC-контроллера
, подошёл к концу. Второй этап будет включать в себя подключение программатора к компьютеру и работу с программой IC-Prog
.
К сожалению, не все современные компьютеры и ноутбуки способны работать с данным программатором ввиду банального отсутствия на них COM-портов
, а те что установлены на ноутбуках не выдают необходимые для программирования 12В
. Так что я решил обратится к своему первому ПК
, который давным-давно пылился и ждал своего звёздного часа (и таки дождался).
Итак включаем компьютер и первым делом устанавливаем программу IC-Prog
. Скачать её можно с сайта автора или по этой ссылке:

(скачиваний: 778)


Подключаем программатор к COM-порту
и запускаем только что установленное приложение. Для корректной работы необходимо выполнить ряд манипуляций. Изначально необходимо выбрать тот тип контроллера, который собираемся шить. У меня это PIC12F675
. На скриншоте №6 поле для выбора контроллера выделено красным цветом.


Скриншот №6 — выбор типа микроконтроллера


Скриншот №7 — настройка метода записи контроллера

В этом же окне переходим во вкладку «Программирование
» и выбираем пункт «Проверка при программировании
«. Проверка после программирования может вызвать ошибку, так как в некоторых случаях самой прошивкой устанавливаются фьюзы блокировки считывания СР
. Чтобы не морочить себе голову данную проверку лучше отключить. Короче следуем скриншоту №8.


Скриншот №8 — настройка верификации

Продолжаем работу с этим окном и переходим на вкладку «Общие
«. Здесь необходимо задать приоритет работы программы и обязательно задействовать NT/2000/XP
драйвер (скриншот №9). В некоторых случаях программа может предложить установку данного драйвера и потребуется перезапуск IC-Prog
.


Скриншот №9 — общие настройки

Итак, с этим окном работа окончена. Теперь перейдём к настройкам самого программатора. Выбираем в меню «Настройки»->»Настройки программатора
» или просто нажимаем клавишу F3
. Появляется следующее окно, показанное на скриншоте №10.


Скриншот №10 — окно настроек программатора

Первым делом выбираем тип программатора — JDM Programmer
. Далее выставляем радиокнопку использования драйвера Windows
. Следующий шаг подразумевает выбор COM-порта
, к которому подключен ваш программатор. Если он один, вопросов вообще нет, а если более одного — посмотрите в диспетчере устройств, какой на данным момент используется. Ползунок задержки ввода/вывода предназначен для регулирования скорости записи и чтения. Это может понадобится на быстрых компьютерах и при возникновении проблем с прошивкой — этот параметр необходимо увеличить. В моём случае он остался по умолчанию равным 10
и всё нормально отработало.

На этом настройка программы IC-Prog
окончена и можно переходить к процессу самой прошивки, но для начала считаем данные с микроконтроллера и посмотрим что в него записано. Для этого на панели инструментов нажимаем на значок микросхемы с зелёной стрелкой, как показано на скриншоте №11.


Скриншот №11 — процесс чтения информации с микроконтроллера

Если микроконтроллер новый и до этого не прошивался, то все ячейки его памяти будут заполнены значениями 3FFF
, кроме самой последней. В ней будет содержаться значение калибровочной константы. Это очень важное и уникальное для каждого контроллера значение. От него зависит точность тактирования, которая путём подбора и установки этой самой константы закладывается заводом изготовителем. На скриншоте №12 показана та ячейка памяти, в которой будет храниться константа при чтении контроллера.


Скриншот №12 — значение калибровочной константы

Повторюсь, что значение уникальное для каждой микросхемы и не обязательно должно совпадать с тем, что на рисунке. Многие по неопытности затирают эту константу и в последствии PIC-контроллер
начинает некорректно работать, если в проекте используется тактирование от внутреннего генератора. Советую записать эту константу и наклеить надпись с её значением прямо на контроллер. Таким образом вы избежите множество неприятностей в будущем. Итак, значение записано — двигаемся дальше. Открываем файл прошивки, имеющий как правило расширение .hex
. Теперь вместо надписей 3FFF
, буфер программирования содержит код нашей программы (скриншот №13).


Скриншот №13 — прошивка, загруженная в буфер программирования

Выше я писал, что многие затирают калибровочную константу по неосторожности. Когда же это происходит? Это случается в момент открытия файла прошивки. Значение константы автоматически меняется на 3FFF
и если начать процесс программирования, то назад дороги уже нет. На скриншоте №14 выделена та ячейка памяти где ранее была константа 3450
(до открытия hex-файла
).

Когда я начал заниматься PIC-контроллерами, то, естественно, первым делом встал вопрос о выборе программатора. Поскольку фирменные программаторы дело не дешевое, да и вообще покупать программатор мне показалось не спортивным, было принято решение собрать его самостоятельно. Облазив просторы Интернета я скачал схему и собрал JDM-программатор. Он работал очень плохо: то заливал какую-то фигню, то не заливал первые несколько байт, то вообще ничего не заливал.

Существенным недостатком JDM-программатора является то, что он не может контролировать линию Vdd и, как следствие, — не может реализовать правильный алгоритм подачи напряжений при программировании. Если контроллер сконфигурирован таким образом: «Internal Oscillator», «MCLR Off», то при неправильной последовательности подачи напряжений он сначала запускается и начинает выполнять ранее зашитую в нем программу, а потом переходит в режим программирования (при этом указатель может указывать куда угодно, а не на начало памяти программ). В связи с этим: то, куда будет залита ваша программа, да и будет ли залита вообще — большой вопрос!

Намучившись с JDM-программатором, на одном из буржуйских сайтов я нашел схему программатора, в котором были исправлены эти недостатки. Этим программатором я пользуюсь по сей день и предлагаю его схему вашему вниманию:

На диодах D1…D4 и стабилитроне D6 выполнен простейший преобразователь уровней RS232->TTL. Когда на линиях DATA, CLOCK напряжение меньше 0В, то они через диоды D1, D2 подтягиваются к земле, а когда напряжение на этих линиях больше 5В, то они через диоды D3, D4 подтягиваются к питанию +5В, которое задается стабилитроном D6.

Питается этот девайс прямо от COM-порта. Стабилитроны и диоды в этой схеме вполне можно заменить отечественными: Д814Д, КС147А и т.д.

Каким образом реализуется правильный алгоритм подачи напряжений и откуда вообще берутся 13 Вольт напряжения программирования? Всё как всегда очень просто.

При инициализации порта на выходе TxD висит -10В. При этом конденсатор С1 заряжается через стабилитрон D7 (который в данном случае оказывается включён в прямом
направлении и работает в качестве диода). Т.е. напряжение на плюсовой ноге С1 относительно GND равно нулю, но относительно TxD=+10В (или сколько там у вас напряжение на выходе COM-порта).

Теперь представим, что происходит при изменении напряжения на выходе TxD с -10В до +10В. Одновременно с ростом напряжения на выводе TxD, начнёт расти и напряжение на плюсовой ноге конденсатора С1. Заряд не может слиться на землю через D7, т.к. теперь D7 включен обратно, единственный путь — утечка через PIC, но ток там мизерный. Итак, напряжение на плюсовой ноге С1 (а, следовательно и на выводе MCLR) начинает расти. В момент, когда на TxD ноль относительно земли, на конденсаторе С1 (на его плюсовой ноге, а следовательно и на MCLR) относительно земли как раз +10В. Когда на TxD +3В, — на С1 уже 3+10=13В. Вот и всё, напряжение Vpp уже подано, а на линии VDD ещё только +3В.

При дальнейшем росте напряжения на TxD, — напряжение на С1 не растёт, так как начинает работать стабилитрон D7. При росте напряжения на TxD выше +5В начинает работать стабилитрон D6.

Чтобы ограничить ток разряда конденсатора C1 через стабилитрон D7, в схему включен резистор R6, соответственно, напряжение на C1 не точно равно напряжению стабилизации, а несколько выше: U C1 =Uст+I РАЗР *R6. Для подстройки напряжения программирования служит сопротивление R3. Можно поставить переменное 10КОм или подобрать постоянное, так, чтобы напряжение программирования было примерно 13 В (в устройстве, представленном на рисунке ниже, R3=1,2 кОм).

Я успешно программирую этим программатором контроллеры PIC12F629
и PIC16F628A
, однако автор утверждал, что этим программатором (в представленном мной варианте) можно программировать PIC12F508
, PIC12F509
, PIC12F629
, PIC12F635
, PIC12F675
, PIC12F683
, PIC16F627A
, PIC16F628A
, PIC16F648A
. Кроме этих, на сайте автора feng3.cool.ne.jp есть модификации программатора для других PIC-контроллеров.

Готовые девайсы
:

Вариант программатора от Mixer
.

Какие
первые шаги должен сделать радиолюбитель,
решивший собрать схему на микроконтроллере?
Естественно, необходима управляющая
программа – «прошивка», а также
программатор. И если с первым пунктом
нет проблем – готовую «прошивку»
обычно выкладывают авторы схем, то вот
с программатором дела обстоят сложнее.

Цена
готовых USB-программаторов довольно
высока и лучшим решением будет собрать
его самостоятельно. Вот схема предлагаемого
устройства (картинки кликабельны).

Основная
часть.

Панель
установки МК.

Исходная
схема взята с сайта LabKit.ru с
разрешения автора, за что ему большое
спасибо. Это так называемый
клон фирменного программатора PICkit2. Так
как вариант устройства является
«облегчённой» копией фирменного
PICkit2, то автор назвал свою разработку PICkit-2
Lite
,
что подчёркивает простоту сборки такого
устройства для начинающих радиолюбителей.

Что
может программатор? С помощью программатора
можно будет прошить большинство
легкодоступных и популярных МК серии
PIC (PIC16F84A, PIC16F628A, PIC12F629, PIC12F675, PIC16F877A и др.),
а также микросхемы памяти EEPROM серии
24LC. Кроме этого программатор может
работать в режиме USB-UART преобразователя,
имеет часть функций логического
анализатора. Особо важная функция,
которой обладает программатор – это
расчёт калибровочной константы
встроенного RC-генератора некоторых МК
(например, таких как PIC12F629 и PIC12F675).

Необходимые изменения.

В
схеме есть некоторые изменения, которые
необходимы для того, чтобы с помощью
программатора PICkit-2 Lite была возможность
записывать/стирать/считывать данные у
микросхем памяти EEPROM серии 24Cxx.

Из
изменений, которые были внесены в схему.
Добавлено соединение от 6 вывода DD1 (RA4)
до 21 вывода ZIF-панели. Вывод AUX используется
исключительно для работы с микросхемами
EEPROM-памяти 24LС (24C04, 24WC08 и аналоги). По
нему передаются данные, поэтому на схеме
панели программирования он помечен
словом «Data». При программировании
микроконтроллеров вывод AUX обычно не
используется, хотя он и нужен при
программировании МК в режиме LVP.

Также
добавлен «подтягивающий» резистор
на 2 кОм, который включается между выводом
SDA и Vcc микросхем памяти.

Все
эти доработки я уже делал на печатной
плате, после сборки PICkit-2 Lite по исходной
схеме автора. Микросхемы памяти 24Cxx
(24C08 и др.) широко используются в бытовой
радиоаппаратуре, и их иногда приходится
прошивать при ремонте, например,
телевизоров. В связи с этим мне и пришлось
«допиливать» программатор. Травить
новую печатную плату я не стал, просто
добавил необходимые элементы на печатной
плате. Вот что получилось.

Ядром
устройства является
микроконтроллер PIC18F2550-I/SP.

Это
единственная микросхема в устройстве.
МК PIC18F2550 необходимо «прошить». Эта
простая операция у многих вызывает
ступор, так как возникает так называемая
проблема «курицы и яйца». Как её
решил я, расскажу чуть позднее.

Список
деталей для сборки программатора.

Название

Обозначение

Номинал/Параметры

Марка
или тип элемента

Для
основной части программатора

Микроконтроллер

DD1

8-ми
битный микроконтроллер

PIC18F2550-I/SP

Биполярные
транзисторы

VT1,
VT2, VT3

КТ3102

VT4

КТ361

Диод

VD1

КД522,
1N4148

Диод
Шоттки

VD2

1N5817

Светодиоды

HL1,
HL2

любой
на 3 вольта, красного изелёного цвета
свечения

Резисторы

R1,
R2

300
Ом

МЛТ,
МОН (мощностью от 0,125 Вт и выше), импортные
аналоги

R3

22
кОм

R4

1
кОм

R5,
R6, R12

10
кОм

R7,
R8, R14

100
Ом

R9,
R10, R15, R16

4,7
кОм

R11

2,7
кОм

R13

100
кОм

Конденсаторы

C2

0,1
мк

К10-17
(керамические), импортные аналоги

C3

0,47
мк

Электролитические
конденсаторы

C1

100
мкф * 6,3 в

К50-6,
импортные аналоги

C4

47
мкф * 16 в

Катушка
индуктивности
(дроссель)

L1

680
мкГн

унифицированный
типа EC24, CECL или самодельный

Кварцевый
резонатор

ZQ1

20
МГц

USB-розетка

XS1

типа
USB-BF

Перемычка

XT1

любая
типа «джампер»

Для
панели установки микроконтроллеров
(МК)

ZIF-панель

XS1

любая
40-ка контактная ZIF-панель

Резисторы

R1

2
кОм

МЛТ,
МОН (мощностью от 0,125 Вт и выше), импортные
аналоги

R2,
R3, R4, R5, R6

10
кОм

Теперь
немного о деталях и их назначении.

Зелёный светодиод
HL1 светится, когда на программатор подано
питание, а красный светодиод
HL2 излучает в момент передачи данных
между компьютером и программатором.

Для
придания устройству универсальности
и надёжности используется USB-розетка
XS1 типа «B» (квадратная). В компьютере
же используется USB-розетка типа «А».
Поэтому перепутать гнёзда соединительного
кабеля невозможно. Также такое решение
способствует надёжности устройства.
Если кабель придёт в негодность, то его
легко заменить новым не прибегая
к пайке и
монтажным работам.

В
качестве дросселя L1 на 680 мкГн лучше
применить готовый (например, типов EC24
или CECL). Но если готовое изделие найти
не удастся, то дроссель можно изготовить
самостоятельно. Для этого нужно намотать
250 – 300 витков провода ПЭЛ-0,1 на сердечник
из феррита от дросселя типа CW68. Стоит
учесть, что благодаря наличию ШИМ с
обратной связью, заботиться о точности
номинала индуктивности не стоит.

Напряжение
для высоковольтного программирования
(Vpp) от +8,5 до 14 вольт создаётся ключевым
стабилизатором. В него входят элементы
VT1, VD1, L1, C4, R4, R10, R11. С 12 вывода PIC18F2550 на
базу VT1 поступают импульсы ШИМ. Обратная
связь осуществляется делителем R10, R11.

Чтобы
защитить элементы схемы от обратного
напряжения с линий программирования в
случае использования USB-программатора
в режиме внутрисхемного программирования
ICSP (In-Circuit Serial Programming) применён диод VD2.
VD2 – это диод
Шоттки.
Его стоит подобрать с падением напряжения
на P-N переходе не более 0,45 вольт. Также
диод VD2 защищает элементы от обратного
напряжения, когда программатор применяется
в режиме USB-UART преобразования и логического
анализатора.

При
использовании программатора исключительно
для программирования микроконтроллеров
в панели (без применения ICSP), то можно
исключить диод VD2 полностью (так сделано
у меня) и установить вместо него перемычку.

Компактность
устройству придаёт универсальная
ZIF-панель (Zero Insertion Force – с нулевым усилием
установки).

Благодаря
ей можно «зашить» МК практически
в любом корпусе DIP.

На
схеме «Панель установки микроконтроллера
(МК)» указано, как необходимо
устанавливать микроконтроллеры с
разными корпусами в панель. При установке
МК следует обращать внимание на то,
чтобы микроконтроллер в панели
позиционируется так, чтобы ключ на
микросхеме был со стороны фиксирующего
рычага ZIF-панели.

Вот
так нужно устанавливать 18-ти выводные
микроконтроллеры (PIC16F84A, PIC16F628A и др.).

А
вот так 8-ми выводные микроконтроллеры
(PIC12F675, PIC12F629 и др.).

Если
есть нужда прошить микроконтроллер в
корпусе для поверхностного монтажа
(SOIC), то можно воспользоваться переходником
или просто подпаять к микроконтроллеру
5 выводов, которые обычно требуются для
программирования (Vpp, Clock, Data, Vcc, GND).

Готовый
рисунок печатной платы со всеми
изменениями вы найдёте по ссылке в конце
статьи. Открыв файл в программе Sprint
Layout 5.0 можно с помощью режима «Печать»
не только распечатать слой с рисунком
печатных проводников, но и просмотреть
позиционирование элементов на печатной
плате. Обратите внимание на изолированную
перемычку, которая связывает 6 вывод
DD1 и 21 вывод ZIF-панели. ПечИзготовить
печатную плату можно методом ЛУТ, а
также маркером
для печатных плат, с
помощью цапонлака (так
делал я) или «карандашным»
методом.атать
рисунок платы необходимо в
зеркальном отображении
.

Вот
рисунок позиционирования элементов на
печатной плате (кликабельно).

При
монтаже первым делом необходимо запаять
перемычки из медного лужёного провода,
затем установить низкопрофильные
элементы (резисторы, конденсаторы,
кварц, штыревой разъём ISCP), затем
транзисторы и запрограммированный МК.
Последним шагом будет установка
ZIF-панели, USB-розетки и запайка провода
в изоляции (перемычки).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Как прошить микроконтроллер PIC?

Работа с программой PicKit2 Programmer

Если вы уже собрали USB программатор PIC своими руками, то пора научиться им пользоваться. Для этого нам необходимо установить программную оболочку «PICkit 2 Programmer», которая разрабатывалась специально для управления программатором PICkit2.

Для работы программы требуется .NET Framework. Если этот пакет не установлен на компьютере, то его нужно установить. Также можно воспользоваться дистрибутивом «PICkit 2 Programmer» с интегрированным пакетом — PicKit 2 V2.61 Install with .NET Framework. Скачать его можно здесь.

Итак, если программа установлена, приступим к изучению её возможностей.

Устанавливаем микроконтроллер в панель программации, подключаем программатор к компьютеру и запускаем «PICkit 2 Programmer».

При запуске программа производит опрос программатора и автоматически определяет тип программируемого микроконтроллера по идентификационным битам (так называемому device ID).
Внимание!
Микросхемы семейства Baseline, а также микросхемы EEPROM и KeeLOG не имеют device ID. Чтобы программа смогла работать с этими микросхемами, нужно выбрать конкретное изделие через меню «Device Family».

Если вместо такой дружелюбной картинки покажется вот такая…

…, то нужно проверить корректно ли подключен usb-кабель, и через меню «Tools» — «Check Communication» произвести переподключение устройства.

Открытие файла с прошивкой.

Чтобы записать программу МК в его память, необходимо выбрать в меню пункт «File» — «Import Hex».

Затем выбрать в открывшемся окне нужный файл прошивки.

После этого в окне памяти программ (Program Memory) и данных (EEPROM Data) отобразится содержимое .hex файла.

Запись программы в МК.

Теперь можно программировать МК. Для этого жмём кнопку «Write». Процесс записи занимает 3 — 5 секунд.

Об успешном выполнении процедуры записи уведомит надпись «Programming Successful».

Для большей уверенности можно провести процедуру проверки. При нажатии на кнопку «Verify» программа сравнивает данные hex-файла и данные, записанные в МК. Если верификация прошла успешно, то в окне сообщений появится надпись «Verification Successful».

Внимание! Если вы прошиваете микроконтроллеры PIC12F675, PIC12F629 и аналогичные с внутренним тактовым генератором, то при верификации может выскакивать ошибка. Дело в том, что PICkit2 Programmer (версии 6.21) сохраняет калибровочную константу, а затем записывает её в последнюю ячейку памяти МК. Понятно, что исходный файл прошивки и записанные данные в памяти будут отличаться. О калибровочной константе будет рассказано далее.

Быстрые кнопки.

Кнопка «Auto Import Hex + Write Device» понравиться тем, кто хочет «загонять прошивку» в МК нажатием одной кнопки. Один щелчок и программа предложит выбрать файл прошивки, а затем незамедлительно запишет её в МК.

Кнопка «Read Device + Export Hex File» выполняет обратную функцию — производит считывание данных с МК и предлагает сохранить файл прошивки в .hex файл.

Изменение битов конфигурации.

Биты конфигурации задают основные параметры работы МК. Это и тип генератора (кварц, RC-цепь), включение/отключение так называемого «сторожевого таймера», установка защиты от считывания памяти программ и некоторые другие. Как правило, при написании алгоритма работы МК (программы) прописываются значения, которые нужно записать в биты конфигурации. При «прошивке» программная оболочка берёт данные о конфигурации из самого файла прошивки и принудительно указывать эти данные не требуется.

Но, нам, как начинающим не будет лишним знать, как можно просмотреть или изменить конкретные биты конфигурации. Для этого щёлкаем по надписи «Configuration». Откроется окно редактирования битов конфигурации.

Если нужно поменять 0 на 1, то меняем — жмём «Save». Естественно, менять надо осознанно. Повторяю, при использовании готового файла прошивки менять ничего не надо, программа сделает всё автоматически.

Выбор модели микроконтроллера.

Микроконтроллеры бывают разные. Поэтому при программировании МК бывает необходимость указать конкретную модель микроконтроллера. При выборе пункта меню «Device Family» выпадает список семейств микроконтроллеров. Есть среди этого списка и микросхемы памяти EEPROM.

В отличие от микроконтроллеров, микросхемы памяти EEPROM не определяются автоматически по команде «Tools» — «Check Communication». Поэтому при считывании/записи микросхем EEPROM в программе необходимо указать маркировку микросхемы.

В меню выбираем пункт «Device Family» — «EEPROMS» — «24LC».

Далее выбираем конкретную марку микросхемы в выпадающем списке «-Select Part-«. Как видим, у нас микросхема 24LC08B (аналоги 24C08, 24WC08L и др.).

Чтобы считать данные с микросхемы EEPROM жмём «Read». Если в памяти записаны данные, то в окне «Program Memory» значения обновятся.

Кнопки «Write» (считать), «Erase» (стереть) выполняют соответствующие функции.

Калибровочная константа.

Как известно, для работы микроконтроллера требуется тактовый генератор. Элементом, который задаёт частоту работы этого генератора, может быть внешний кварцевый резонатор, RC — цепь. Но среди микроконтроллеров PIC есть такие, которые содержат необходимые задающие цепи внутри самой микросхемы. К таким МК относятся, например PIC12F629, PIC12F675.

На заводе в память таких микроконтроллеров записывается специальная константа, которая задаёт параметры встроенного генератора на 4 МГц. Эта калибровочная константа вида 34хх записывается в последнюю ячейку памяти программ по адресу 0x3FF.

При программировании микроконтроллера эту константу легко стереть. И хоть PICkit2 Programmer версии 2.61 автоматически сохраняет эту константу и затем записывает её при программации, не лишним будет записать значение константы OSCCAL.

При необходимости константу легко указать вручную. Для этого в меню выбираем пункт «Tools» — «OSCCAL» — «Set Manually».

В поле «OSCCAL value» указываем ранее записанное значение константы. Жмём кнопку «Set» (установить).

Теперь, когда вы знакомы с основными возможностями PICkit2 Programmer, можно смело начать сборку какого-нибудь устройства на микроконтроллере, например, RGB-светильника на PIC12F629/675.

Главная &raquo Микроконтроллеры &raquo Текущая страница

Также Вам будет интересно узнать:

Самодельный программатор для PIC-контроллеров

Развитие электроники идёт стремительными темпами, и всё чаще главным элементом того или иного устройства является микроконтроллер. Он выполняет основную работу и освобождает проектировщика от необходимости создания изощрённых схемных решений, тем самым уменьшая размер печатной платы до минимального. Как всем известно, микроконтроллером управляет программа, записанная в его внутреннюю память. И если опытный программист-электронщик не испытывает проблем с использованием микроконтроллеров в своих устройствах, то для начинающего радиолюбителя попытка записать программу в контроллер (особенно PIC) может обернуться большим разочарованием, а иногда и небольшим пиротехническим шоу в виде дымящей микросхемы.

Как ни странно, но при всём величии сети Интернет в нём очень мало информации о прошивке PIC-контроллеров, а тот материал что удаётся найти — очень сомнительного качества. Конечно, можно купить заводской программатор за неадекватную цену и шить сколько душе угодно, но что делать, если человек не занимается серийным производством. Для этих целей можно собрать несложную и не дорогую в реализации самоделку, именуемую JDM-программатором по приведенной ниже схеме (рисунок №1):

Рисунок №1 — схема программатора

Сразу привожу перечень элементов для тех, кому лень всматриваться в схему:

  • R1 — 10 кОм
  • R2 — 10 кОм (подстроченный). Регулировкой сопротивления данного резистора нужно добиться около 13В на выводе №4 (VPP) во время программирования. В моём случае сопротивление составляет 1,2 кОм
  • R3 — 200 Ом
  • R4, R5 — 1,5 кОм
  • VD1, VD2, VD3, VD4, VD6 — 1N4148
  • VD5 — 1N4733A (Напряжение стабилизации 5,1В)
  • VD7 — 1N4743A (Напряжение стабилизации 13В)
  • C1 — 100 нФ (0,1 мкФ)
  • C2 — 470 мкФ х 16 В (электролитический)
  • SUB-D9F — разъём СОМ-порта (МАМА или РОЗЕТКА)
  • Панелька DIP8 — зависит от используемого вами контроллера

В схеме использован пример подключения таких распространённых контроллеров, как PIC12F675 и PIC12F629, но это совсем не значит, что прошивка других серий PIC будет невозможна. Чтобы записать программу в контроллер другого типа, достаточно перекинуть провода программатора в соответствии с рисунком №2, который приведён ниже.

Рисунок №2 — варианты корпусов PIC-контроллеров с необходимыми выводами

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

Хоть сама схема довольно проста и не вызовет трудностей в сборке, но она тоже требует уважения. Поэтому неплохо было бы сделать под неё печатную плату. После некоторых манипуляций с программой SprintLayout, текстолитом, дрелью и утюгом, на свет родилась вот такая заготовка (фото №3).

Фото №3 — печатная плата программатора
Скачать исходник печатной платы для программы SprintLayout можно по этой ссылке:
pp_programmator.zip
[17.67 Kb] (скачиваний: 1449)

При желании его можно изменить под свой тип PIC-контроллера. Для тех, кто решил оставить плату без изменений, выкладываю вид со стороны деталей для облегчения монтажа (рисунок №4).

Рисунок №4 — плата с монтажной стороны

Ещё немного колдовства с паяльником и мы имеем готовое устройство, способное прошить PIC-контроллер через COM-порт вашего компьютера. Ещё тёпленький и не отмытый от флюса результат моих стараний показан на фото №5.

Фото №5 — программатор в сборе
С этого момента, первый этап на пути к прошивке PIC-контроллера, подошёл к концу. Второй этап будет включать в себя подключение программатора к компьютеру и работу с программой IC-Prog.
К сожалению, не все современные компьютеры и ноутбуки способны работать с данным программатором ввиду банального отсутствия на них COM-портов, а те что установлены на ноутбуках не выдают необходимые для программирования 12В. Так что я решил обратится к своему первому ПК, который давным-давно пылился и ждал своего звёздного часа (и таки дождался).
Итак включаем компьютер и первым делом устанавливаем программу

IC-Prog. Скачать её можно с сайта автора или по этой ссылке:
icprog105d.zip
[432.25 Kb] (скачиваний: 1742)

Подключаем программатор к COM-порту и запускаем только что установленное приложение. Для корректной работы необходимо выполнить ряд манипуляций. Изначально необходимо выбрать тот тип контроллера, который собираемся шить. У меня это PIC12F675. На скриншоте №6 поле для выбора контроллера выделено красным цветом.

Скриншот №6 — выбор типа микроконтроллера

Далее переходим в меню «Настройки»->»Опции«, в появившемся окне выбираем вкладку I2C и ставим галочки, как показано на скриншоте №7.

Скриншот №7 — настройка метода записи контроллера

В этом же окне переходим во вкладку «Программирование» и выбираем пункт «Проверка при программировании«. Проверка после программирования может вызвать ошибку, так как в некоторых случаях самой прошивкой устанавливаются фьюзы блокировки считывания СР. Чтобы не морочить себе голову данную проверку лучше отключить. Короче следуем скриншоту №8.

Скриншот №8 — настройка верификации

Продолжаем работу с этим окном и переходим на вкладку «Общие«. Здесь необходимо задать приоритет работы программы и обязательно задействовать NT/2000/XP драйвер (скриншот №9). В некоторых случаях программа может предложить установку данного драйвера и потребуется перезапуск IC-Prog.

Скриншот №9 — общие настройки

Итак, с этим окном работа окончена. Теперь перейдём к настройкам самого программатора. Выбираем в меню «Настройки»->»Настройки программатора» или просто нажимаем клавишу F3. Появляется следующее окно, показанное на скриншоте №10.

Скриншот №10 — окно настроек программатора
Первым делом выбираем тип программатора — JDM Programmer. Далее выставляем радиокнопку использования драйвера Windows. Следующий шаг подразумевает выбор COM-порта, к которому подключен ваш программатор. Если он один, вопросов вообще нет, а если более одного — посмотрите в диспетчере устройств, какой на данным момент используется. Ползунок задержки ввода/вывода предназначен для регулирования скорости записи и чтения. Это может понадобится на быстрых компьютерах и при возникновении проблем с прошивкой — этот параметр необходимо увеличить. В моём случае он остался по умолчанию равным 10 и всё нормально отработало.

На этом настройка программы IC-Prog окончена и можно переходить к процессу самой прошивки, но для начала считаем данные с микроконтроллера и посмотрим что в него записано. Для этого на панели инструментов нажимаем на значок микросхемы с зелёной стрелкой, как показано на скриншоте №11.

Скриншот №11 — процесс чтения информации с микроконтроллера

Если микроконтроллер новый и до этого не прошивался, то все ячейки его памяти будут заполнены значениями 3FFF, кроме самой последней. В ней будет содержаться значение калибровочной константы. Это очень важное и уникальное для каждого контроллера значение. От него зависит точность тактирования, которая путём подбора и установки этой самой константы закладывается заводом изготовителем. На скриншоте №12 показана та ячейка памяти, в которой будет храниться константа при чтении контроллера.

Скриншот №12 — значение калибровочной константы

Повторюсь, что значение уникальное для каждой микросхемы и не обязательно должно совпадать с тем, что на рисунке. Многие по неопытности затирают эту константу и в последствии PIC-контроллер начинает некорректно работать, если в проекте используется тактирование от внутреннего генератора. Советую записать эту константу и наклеить надпись с её значением прямо на контроллер. Таким образом вы избежите множество неприятностей в будущем. Итак, значение записано — двигаемся дальше. Открываем файл прошивки, имеющий как правило расширение .hex. Теперь вместо надписей 3FFF, буфер программирования содержит код нашей программы (скриншот №13).

Скриншот №13 — прошивка, загруженная в буфер программирования

Выше я писал, что многие затирают калибровочную константу по неосторожности. Когда же это происходит? Это случается в момент открытия файла прошивки. Значение константы автоматически меняется на 3FFF и если начать процесс программирования, то назад дороги уже нет. На скриншоте №14 выделена та ячейка памяти где ранее была константа 3450 (до открытия hex-файла).

Скриншот №14 — автоматическое изменение калибровочной константы

Теперь нужно очень внимательно выполнить последующие действия. Нажимаем иконку микросхемы с молнией на панели инструментов, тем самым сообщая программе, что мы хотим инициировать процесс прошивки. Программа спросит уверены ли мы, что хотим прошить данное устройство. Соглашаемся и нажимаем «ДА«. После этого получаем предупреждение, показанное на скриншоте №15.

Скриншот №15 — предупреждение о расхождении значений константы тактирования

IC-Prog сообщает нам, что ранее было установлено одно значение калибровочной константы (в моём случае 3450), а теперь другое (3FFF), автоматически подставленное из hex-файла. Также по умолчанию предлагается оставить значение 3FFF. Здесь важно нажать «НЕТ«, чтобы IC-Prog во время программирования вернул нам значение 3450 или то, что будет у вас. В общем жмём «НЕТ» и наблюдаем следующее окно (скриншот №16).

Скриншот №16 — процесс программирования

В этот период советую ничего не нажимать и не грузить компьютер другими задачами. Когда я делал снимок экрана для этой статьи, то при нажатии на кнопку Print Screen вылетела ошибка записи и пришлось проделывать всё заново. По истечении некоторого времени IC-Prog выдаст вам сообщение об успешной проверке вновь записанного кода в ваш PIC-контроллер, так что всем кому понравилась эта статья, желаю увидеть вот это после аналогичных стараний (скриншот №17):

Скриншот №17 — прошивка прошла успешно, можно расслабиться

Если в процессе у вас возникнут какие-либо вопросы, внимательно перечитайте статью заново и всё обязательно получится — проверено лично. Всем удачи и творческих успехов!!!

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

USB программатор своими руками на микроконтроллере Atmega8. Схема

С развитием компьютерной техники, с каждым разом становится все меньше и меньше компьютеров оснащенных COM и LPT портами. Это в свою очередь вызывает затруднения, в частности у радиолюбителей, связанные с сопряжением средств программирования микроконтроллеров с персональным компьютером.

В данной статье приведено описание USB программатора для микроконтроллеров AVR, который можно собрать своими руками. Построен он на микроконтроллере Atmega8 и способен работать от USB разъема компьютера. Данный программатор совместим с STK500 v2.

Описание USB программатора

USB программатор построен на плате, сделанной из одностороннего фольгированного стеклотекстолита по технологии ЛУТ. На плате есть 2 перемычки: одна расположена под разъё­мом SPI, вторая перемычка расположена неподалеку от того же разъема.

После того как все детали будут запаяны нужно прошить микроконтроллер Atmega8 прошивкой приведенной в конце статьи. Фьюзы, которые необходимо выставить при программировании микроконтроллера Atmega8, должны выглядеть следующим образом:

  • SUT1 = 0
  • BOOTSZ1 = 0
  • BOOTSZ0 = 0
  • CKOPT = 0
  • SPIEN = 0

Необходимо напомнить, что в некоторых программах фьюзы выставляются противоположно этому. Например, в программе CodeVisionAVR необходимо проставить галочки напротив вышеперечисленных фьюзов, а в программе PonyProg наоборот.

Программирование Atmega8 через LPT-порт компьютера

Самый быстрый и дешевый способ запрограммировать Atmega8 –  применить LPT-программатор для AVR. Подобная схема приведена ниже.

Питание микроконтроллера осуществляется от простого стабилизатора напряжения 78L05. В качестве оболочки для программирования можно использовать программу UniProf.

При первом включении программы и при не подключенном контроллере, нажав кнопку «LPTpins», необходимо настроит выводы LPT-порта следующим образом:

В момент запуска UniProf, она автоматом определяет вид микроконтроллера. Загружаем в память UniProf прошивку Atmega8_USB_prog.hex, отклоняем подключение файла EEPROM.

Выставляем следующим образом фьюзы (для программы UniProF), нажав кнопку «FUSE»:

Для запоминания установок нажимаем все три кнопки «Write». Затем нажав на «Erase» предварительно очищаем память прошиваемого микроконтроллера. После этого уже жмем на «Prog» и дожидаемся завершения прошивки.

Настройка USB программатора

После того как наш микроконтроллер прошит, его необходимо установить в плату USB программатора. Далее подключаем программатор к USB порту компьютера, но пока питание не подаем.

Далее необходимо настроить программу терминал (HyperTerminal) которая находится по следующему пути: Пуск > Программы > Стандартные > Связь > HyperTerminal. Настраиваем порт, параметры терминала и ASCII

Настройка порта:

Настройка терминала:

Настройка ASCII:

Теперь после всех проделанных процедур, подаем питание на USB программатор. Светодиод HL1 должен промигать 6 раз и затем светится постоянно.

 Для проверки связи USB программатора с компьютером 2 раза нажимаем клавишу «Enter» в программе HyperTerminal. Если все в порядке мы должны увидеть следующую картину:

Если это не так проверяем еще раз монтаж, особенно линию TxD.

Далее вводим версию программатора 2.10, так как без этого програм­матор не будет работать с программами «верхнего уровня». Для этого вводим «2» и нажимаем «Enter», вводим «а» (английская) и нажимаем «Enter». 

USB программатор способен распознавать подключение программируемого микроконтроллера. Выполнено это в виде контроля «подтяжки» сигнала Reset к источнику питания. Этот режим включается и выключается следующим образом:

  • «0», «Enter» — режим выключен.
  • «1», «Enter» — режим включён.

 Изменение скорости программирования ( 1МГц):

  • «0», «Enter» – максимальная скорость.
  • «1», «Enter» – сниженная скорость.

На этом подготовительная работа завершена, теперь можно попробовать прошить какой-нибудь микроконтроллер.

Скачать прошивку, печатную плату USB программатора и программу UniProf (829,4 KiB, скачано: 1 457)

Источник:  http://r-lab.narod.ru

Составители официальной документации узнав про программирование PIC-ов с помощью какой то ардуины, поперхнулись бы от такого факта и стали бы отрицать возможность этого.

Вот тут Вы сильно ошибаетесь

Жаль не грузится файлик, размер большой.
In-Circuit Serial Programming Guide DS30277
DS41227
DS41226
DS30228 и т.д.

В этих документах досконально описаны режимы программирования, алгоритмы и даже схемки есть простенькие.

В начале темы приведен проверенно работающий на не документированных возможностях, программатор из ардуины

К сожалению все режимы программирования задокументированы.
А кто на чём собирать будет, его право.
MicroCHIP не заставляет пользоваться их программатором.

Хотя в свободном доступе есть схемы PicKIT2 и PicKIT3. И прошивки на них в свободном доступе.
А они позволяют осуществлять внутрисхемную отладку.
Так что ардуину можно использовать один раз для программирования PicKIT.

Они его придумали?
По этимологии что оно значит? Как-то задавался таким вопросом, но инфы не нашёл.

Кто его знает они или нет. Но это слово встречается только в их документации.
В документации на другие микроконтроллеры используется , основном, понятие — конфигурационные биты.

И поскольку программатор из ардуины отсутствует в официально возможных к применению программаторов PIC-ов, я буду называть конфигурационные биты PIC-ов фьюзами.

Да называйте как хотите. Просто знайте, когда будете разговаривать с человеком, который проработал всю жизнь с PIC микроконтроллерами и ничего не знает об Atmel, Вас никогда не поймёт, если вы будете дуть ему в уши про «фьюзы»и «Скетчи» (Скетч) — короткая одноактная пьеса комедийного содержания с небольшим числом действующих лиц (как правило двумя, реже — тремя). Это выше понимания как прошивка может называться «Одноактной пьесой»

USB ПРОГРАММАТОР

   Данный программатор не нуждается в первичном программировании — протравил печатную плату, спаял и пользуйся. Автор данного устройства указан в конце статьи, а здесь приведу небольшую выдержку из руководства, чтоб было понятнее, о чём речь: правильный USB-программатор – вещь, фактически, универсальная. Его можно воткнуть в любой современный компьютер и без проблем перешить нужный микроконтроллер с любым объемом FLASH-памяти на довольно высокой скорости. Но ключевое слово здесь – «правильный», который нормально работает без настройки и танцев с бубном над ним сразу же после установки и монтажа деталей. Который не глючит при переходе от одного ПК к другому или смене ОС. Правильный – это такой, драйвера на который есть для любой современной широко используемой версии ОС, и эти дрова неглючные. Каждый определит еще с десяток критериев правильности для себя лично, но вышеперечисленные – основные, без соблюдения которых нормально работать с микроконтроллером невозможно будет в принципе.

   В настоящее время в Интернете полно различных схем USB-программаторов для AVR. Условно их можно разделить на две большие группы.

   Первая группа включает в себя программаторы, построенные на основе микроконтроллеров (в частности, AVR). Собирал несколько штук программаторов от Prottoss’а (AVR910), себе и своим знакомым, а также несколько штук USBasp. Двое из знакомых, одаренных сиими дывайсами, в восторге. Удачно шьют камни в течение уже нескольких лет. У остальных (в частности – у меня лично) собранные программаторы особой радости не вызвали. Не говорю, что они плохие, просто вот так складывались обстоятельства: на одном компьютере работает, на другом нет. Или, проработав пару часов, оказывались невидимыми для софта, через который шьется камень. И много еще чего. Сразу оговорю – я не разбирался с прошивкой контроллеров, на которых данные программаторы собраны. Правда, перепробовал кучу программ-прошивальщиков, через которые данные программаторы, вроде как без проблем должны шить камни. Однако, результат в виде частых глюков меня не особо удовлетворил. Исключение составила только программа AVRDUDE в комплексе с графической оболочкой SinaProg, но о ней я узнал слишком поздно. Кстати, заметил такую тенденцию: чем древнее железо ПК, тем лучше работают данные программаторы. Ну и самый неприятный момент для тех, кто выбрал второй вариант знакомства с микроконтроллерами AVR – чтобы программатор заработал, нужно чем-то прошить входящий в его состав камень. То есть получается так: чтобы пользоваться программатором нужно сделать/найти программатор, чтобы прошить мозги этого программатора. Вот такой вот замкнутый круг.

   И вторая группа USB-программаторов включает в себя решение на базе специализированной микросхемы FT232Rx. В свое время данная микросхема стала своего рода революцией. Мало того, что она без особых заморочек для разработчика преобразует USB в UART (и, наверное, 95% разработчиков используют ее именно в этих целях). Она еще умеет эмулировать полноценный COM-порт, причем состояние «второстепенных» линий (таких, как RTS, CTS, DTR и т.д.) можно задать/считать не из виртуального COM-порта, а напрямую через драйвер FTDI (разработчика FT232Rx). Таким образом, появилось новое, без необходимости первичной прошивки мозгов программатора, решение, для прошивки микроконтроллеров, причем, довольно быстрое.

Принципиальная схема программатора USB

   Данная схема просто направляет сигналы MOSI, MISO, SCK и RESET, которые формируются на выводах DCD, DTR, RTS и DSR микросхемы DD1 (FT232RL) соответственно, на нужные выводы прошиваемого микроконтроллера (т.е., фактически является аналогом «древних» программаторов). Причем, делает это только в момент программирования камня, в остальные моменты времени программатор отключен от прошиваемой платы за счет 4-х буферных элементов микросхемы DD2 (74HC125D). Состояние линий MOSI, MISO, SCK и RESET устанавливается/считывается прошивающим софтом на компьютере. Передача данных между ПК и микросхемой FT232RL идет по шине USB (от которой еще и получает питание программатор).

   Светодиод HL2 («PWR») сигнализирует о подаче на программатор напряжения питания с шины USB. Светодиод HL1 («PROG») индицирует процесс прошивки микроконтроллера (горит только во время прошивки). Вот, в принципе, и все описание собственно схемы электрической принципиальной. Единственное что хотелось бы отметить: во-первых, для подключения программатора к прошиваемой плате используется разъем IDC-10MR (XP2 «ISP»), распиновка которого совпадает с широко распространенной распиновкой разъема программатора
STK200/STK300:

XP2 «ISP» разъем для подключения устройства к программируемому микроконтроллеру

XP3 «MISC» разъем для использования дополнительных функций программатора

   В общем микросхема FT232RL имеет довольно серьёзный потенциал для разработчика (например, линии шины CBUS можно использовать как обычные линии ввода-вывода микроконтроллера), поэтому неплохо бы иметь доступ ко всем ее выводам. Ну и доступ к напряжениям +5,0 В и +3,3 В тоже лишним никогда не будет. В приклеплении печатная плата и полное подробное описание. Разработка и мануал — [email protected], испытание — SssaHeKkk.

   Форум по программаторам

USB программатор PIC контроллеров

Фотогорафии программатора предоставленны Ансаганом Хасеновым

    В данной статье рассматриваются практические аспекты сборки несложного USB программатора PIC микроконтроллеров, который имеет оригинальное название GTP-USB (Grabador TodoPic-USB). Существует старшая модель этого программатора GTP-USB plus который поддерживает и AVR микроконтроллеры, но предлагается за деньги. Однозначных сведений по схемам и прошивкам к GTP-USB plus обнаружить не удалось. Если у вас есть информация по GTP-USB plus, прошу связаться со мной. 

Итак, GTP-USB. Данный программатор собран на микроконтроллере PIC18F2550. GTP-USB нельзя рекомендовать начинающим, т.к. для сборки требуется прошить PIC18F2550 и для этого требуется программатор. Замкнутый круг, но не настолько замкнутый, чтобы это стало препятствием для сборки. 

Из оригинальной схемы GTP-USB исключены элементы индикации для упрощения рисунка печатной платы. Основной индикатор — это монитор вашего компьютера, на котором из программы WinPic800 версий 3.55G или 3.55B вы можете наблюдать за процессом программирования. 

Облегченная схема GTP-USB.

Сигнальные линии Vpp1 и Vpp2 определены под микроконтроллеры в корпусах с различным количеством выводов. Линия Vpp/ICSP определена для внутрисхемного программирования. Остальные линии типовые. 

Программатор собран на односторонней печатной плате.

Адаптер можно безболезненно подключать к любому другому программатору PIC-микроконтроллеров, что, безусловно, удобно. 

После сборки производим первое включение. По факту первого подключения GTP-USB к ПК появляется сообщение

Затем следует традиционный запрос на установку драйвера. Драйвер расположен в управляющей программе WinPic800 по примерному пути WinPic800 3.55GGTP-USBDriver GTP-USB.

Соглашаемся с предупреждениями и продолжаем установку. 

Обращаю внимание. Данная схема программатора и прошивка к нему проверены на практике и работают с управляющей программой WinPic800 версий 3.55G и 3.55B. Более старшие версии, например, 3.63C не работают с этим программатором. Производим настройку управляющей программы: в меню Settings — Hardware (Установки — Оборудование) выбираем GTP-USB-#0 или GTP-USB-#F1 и нажимаем Apply (Применить).

Нажимаем на панели кнопку  и производим тест оборудования. В результате успешного тестирования появляется сообщение (см. ниже), которое не может нас не радовать.

Данный программатор отлично работал со следующими контроллерами (из того что было в наличии): PIC12F675, PIC16F84A, PIC16F628A, PIC16F874A, PIC16F876A, PIC18F252. Тест контроллеров, запись и чтение данных — выполнены успешно. Скорость работы впечатляет. Чтение 1-2 сек. Запись 3-5 сек. Глюков не замечено. Часть зашитых МК протестировано в железе — работает.

Источник

Обсудить на форуме.

Программатор

USB PIC — Electronics-Lab.com

Эта страница предназначена для всех, кто хочет запрограммировать устройство PIC (Microchip) через порт USB. В поисках готовых проектов в Интернете я нашел хороший проект под названием Open Programmer, поставляемый с несколькими схемами, печатными платами и открытым исходным кодом. Исходная ссылка: http://openprog.altervista.org/OP_ita.html

.

Что меня беспокоило, так это необходимость установить на материнскую плату определенную плату сокетов в зависимости от модели программируемого PIC.Более того, предложенный макет не соответствовал моим личным представлениям о «компактности». Итак, я предлагаю здесь небольшую версию этой схемы, использующую один интеллектуальный встроенный разъем ZIF. Эта версия жертвует многими моделями микроконтроллеров без PIC. Я буду благодарен всем, кто предлагает реализацию более широкого диапазона, подходящую для программирования Atmel и других устройств. В любом случае, если ваша цель — программировать устройства PIC, вы попали на хороший сайт.

Коробочка, разъем USB, розетка ZIF, два светодиода. Это все в моем компактном предложении.

Описание

Подробности доступны по оригинальному проекту, упомянутому выше. Далее я показал свою компактную версию со схемой, компоновкой печатной платы и инструкциями по сборке и вставке ее в очень обычную небольшую пластиковую коробку. Внизу страницы я предлагаю копию программы для загрузки в PIC18F2550, который используется для управления функциями программирования, а также копию программы на ПК. Программу до Win-8 протестировал без проблем. Учтите, что на исходном сайте доступна более новая версия как прошивки, так и программного обеспечения.

Схема

Сборка

Сначала соберите основной модуль, используя низкопрофильные компоненты, находящиеся на высоте менее 10 мм от поверхности печатной платы, так как вторая плата будет установлена ​​поверх этой платы. Установите 4 колонны высотой десять миллиметров, чтобы обеспечить окончательную сборку второй платы. Для крепления колонн используйте детали с низким профилем, в противном случае может потребоваться снятие металла вручную, чтобы уменьшить занятость со стороны меди.

ZIF — довольно тонкий компонент перед окончательной пайкой.Обращайте внимание на то, чтобы не использовать силу, которая может привести к повреждению или деформации. Лучше сделать отверстия 1,2 мм, чтобы облегчить вставку гнезда ZIF в печатную плату. Во время пайки каждый раз перескакивайте на несколько выводов, следуя спиральной линии, принимая последовательность, которая позволяет нагреть вывод, пока вы паяете следующий.

Когда две схемы будут готовы, соедините их с помощью полосовых линий и блокируйте сборку с помощью столбцов. Используйте винты с потайной головкой для отверстий с потайной головкой, чтобы винты не выходили слишком высоко по отношению к верхней поверхности второй печатной платы.Должны появиться только розетка и два светодиода.

Пластиковая коробка очень распространена. Вы должны сделать отверстия, чтобы позволить выступающим частям выходить из его поверхности: гнездо, два светодиода (или один двухцветный светодиод), разъем USB на короткой стороне. Это женщина типа А

Коробка

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

Здесь и далее окончательный результат:

Программное обеспечение

Как было сказано ранее, исходный сайт предлагает как прошивку, так и программное обеспечение со стороны ПК. В любом случае, чтобы начать использовать этот программатор, я предлагаю вам использовать версии, которые я использовал во время редактирования проекта, которые будут доступны для скачивания в дальнейшем. После некоторых тестов вы можете попробовать новые обновленные версии, доступные на исходном сайте. Конечно, если у вас еще нет программиста, ваш друг должен сначала запрограммировать программиста для вас.После этого первого шага вы станете автоматом!

Скачать программное обеспечение для ПК можно по ссылке ниже — OpenProg.rar

Скачать файл PIC .hex можно по ссылке ниже — OProg.hex

Использование

Подключите программатор к ПК с помощью кабеля USB типа «папа-папа». Устройство рассматривается как универсальное. Зеленый светодиод сначала быстро мигает, показывая, что соединение установлено. Затем медленно, показывая, что этап подключения завершен. Программное обеспечение для ПК позволяет боту записывать и читать EEPROM любой PIC, установленной на разъеме ZIF.Функции тестирования позволяют измерять высокое напряжение Vpp, генерируемое повышающим преобразователем, присутствующим в главной цепи. Это напряжение в любом случае уже проверено самой прошивкой.

Программируемый PIC должен быть размещен в гнезде ZIF, как показано на следующем рисунке. Версия этого изображения в высоком разрешении доступна ЗДЕСЬ для печати и прикрепления к задней части самого программатора.

usbpicprog

Дом

Добро пожаловать в usbpicprog, программатор Microchip PIC с открытым исходным кодом для порта USB.Термин «открытый исходный код» подразумевает, что конструкция оборудования, программное обеспечение и прошивка доступны для бесплатной загрузки.

Usbpicprog — это USB-программатор для процессоров Microchip PIC. Аппаратное обеспечение максимально простое, текущая версия содержит только один PIC18F2550, 4 МОП-транзистора и, помимо разъемов, множество пассивных компонентов.

7 февраля 2009 года Франс Шреудер сделал презентацию о usbpicprog на Fosdem, Европейской конференции разработчиков свободного и открытого исходного кода.Видео доступно здесь:

Компоненты
Usbpicprog состоит из трех основных компонентов, которые можно найти на странице загрузки:

  • Оборудование — конструкция печатной платы, которая содержит необходимые компоненты для взаимодействия порта USB с заголовком Microchip ICSP (в последовательном программировании схемы).
  • Прошивка

  • – программное обеспечение, которое работает на процессоре на печатной плате.Он содержит структуру USB, а также функции высокого и низкого уровня для PIC в схемотехническом программировании. Микропрограммное обеспечение также можно разделить на две части:
    • Загрузчик (загрузчик Microchip Picdem) должен быть загружен только один раз, после чего эту часть прошивки можно обновить через интерфейс usbpicprog.
    • Часть прошивки usbpicprog содержит актуальные алгоритмы программирования для всех реализованных устройств PIC.
  • Программное обеспечение

  • для ПК — приложение на основе wxWidgets (кроссплатформенное) для связи с оборудованием / прошивкой usbpicprog.Известно, что это приложение хорошо работает в Linux, Windows (XP или новее) и Macosx.

Дизайн оборудования открытый и бесплатный для лиц, имеющих собственное производство печатных плат. Оборудование больше не может быть заказано через этот сайт.

Статус
В настоящее время выпущена версия платы (v0.3.2).

Встроенное программное обеспечение выпущено как версия 0.6.0, но предстоит еще много работы. Реализованные PIC можно найти в разделе поддерживаемых устройств.

Выпущена версия 0.6.0 приложения для ПК, проверьте страницу загрузки! Это приложение для ПК хорошо работает в Linux (сборки Ubuntu для amd64 и i386 доступны в личном архиве пакетов. Инструкции см. На странице загрузки), Windows и Mac OS X.

eXtreme Burner PIC — USB-программатор для микроконтроллеров PIC.

Хорошие новости для любителей ПОС!

Представляя экстрим
Устройство записи PIC, USB-программатор для PIC18FXXXX / PIC18LFXXXX / PIC16FXXXA / PIC16LFXXXA
серии MCU.Этот простой в использовании программатор с USB-подключением и графическим интерфейсом
может программировать более 52 микросхем семейства PIC18F / PIC16F . Этот
Программист поддерживает программирование на основе сокетов ZIF и ICSP.

Горелка eXtreme Burner — PIC

Программное обеспечение

eXtreme Burner PIC — главный экран.

eXtreme Burner PIC — экран устройства записи.

eXtreme Burner PIC — Успешное программирование PIC!

О микроконтроллерах Microchip серии PIC18F

Это высокопроизводительные микроконтроллеры популярной линейки микроконтроллеров PIC от Microchip.
Основные характеристики: высокопроизводительное ядро ​​процессора (до 12 MIPS), аппаратный множитель,
Архитектура, оптимизированная для языка C, с современными периферийными устройствами, такими как USB.

См.

  • Microchip’s
    Официальная веб-страница PIC18F.
  • Получение
    Начал с микроконтроллеров PIC.

См. Также

  • экстремальный
    Burner 51 — USB-программатор для микроконтроллеров 89S51 / 89S52.

По всем вопросам пишите на [email protected]
или по телефону 09939369624 (Авинаш).

Подробнее
Информация | Купить сейчас

JLCPCB Prototype: 2 доллара США за 10 печатных плат, 48 часов Quick Turn

Крупнейшее в Китае предприятие по производству прототипов печатных плат, более 300 000 клиентов и более 10 000 онлайн-заказов в день

Легко получить цитату онлайн: https: // jlcpcb.com / quote

Возникли проблемы с вашим проектом встраиваемых систем, электроники или робототехники? Мы здесь, чтобы помочь!
Отправьте запрос о помощи.

Avinash

Avinash Gupta ориентирован исключительно на бесплатные и высококачественные учебные материалы, чтобы сделать изучение встроенных систем увлекательным!

Другие сообщения — Веб-сайт

Следуй за мной:

usbpicprog: Simple USB PIC programmer скачать

Полное имя

Телефонный номер

Название работы

Промышленность

Компания

Размер компании
Размер компании: 1 — 2526 — 99100 — 499500 — 9991,000 — 4,9995,000 — 9,99910,000 — 19,99920,000 или более

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


Да, также присылайте мне специальные предложения о продуктах и ​​услугах, касающихся:

Программное обеспечение для бизнеса
Программное обеспечение с открытым исходным кодом
Информационные технологии
Программирование
Оборудование


Вы можете связаться со мной через:

Электронная почта (обязательно)
Телефон
SMS

Я согласен получать эти сообщения от SourceForge.сеть. Я понимаю, что могу отозвать свое согласие в любое время. Пожалуйста, обратитесь к нашим Условиям использования и Политике конфиденциальности или свяжитесь с нами для получения более подробной информации.
Я согласен получать эти сообщения от SourceForge.net указанными выше способами. Я понимаю, что могу отозвать свое согласие в любое время. Пожалуйста, обратитесь к нашим Условиям использования и Политике конфиденциальности или свяжитесь с нами для получения более подробной информации.

Для этой формы требуется JavaScript.

Подписывайся

Кажется, у вас отключен CSS.Пожалуйста, не заполняйте это поле.

Кажется, у вас отключен CSS.
Пожалуйста, не заполняйте это поле.

Простой программатор USB PIC Activity

  • 6 месяцев назад

    Будет — разрабатывать ли usbpicprog. Интерисует версию для UBUNTU Fossa.

  • 6 месяцев назад

    Я не вижу никаких признаков того, что usbpicprog может получить доступ к этим местам, необходимым для внутрисхемной отладки на 877 (и, насколько мне известно, Microchip не опубликовала информацию об эквиваленте для других устройств).Может ли он получить к ним доступ?

  • 2 года назад

    Большое спасибо, Франс !!! Я нашел способ запрограммировать загрузчик для моего программатора USBPICprog … Не понял, что я должен использовать для этого P2 ? Теперь у меня РАБОЧИЙ загрузчик и новейшие прошивки и программное обеспечение ? !!! Продолжайте хорошую работу!!! Есть ли какие-то дальнейшие разработки (например, поддержка AVR или что-то еще)?

  • 2 года назад

    Нет, купила прямо у вас, если не ошибаюсь…И я забыл упомянуть, что когда я пытаюсь использовать любой из этих методов, Windows издает предупреждающий звук, и программа говорит «Загрузчик или программатор не найден», а красный светодиод горит постоянно

  • 2 года назад

    Хорошо, может быть, у него нет загрузчика, так как я могу запрограммировать это для этого программиста? У меня есть другой программатор TL866A, который я могу использовать для программирования USBPICprog через ICSP? Я действительно не помню, где я это купил, но я купил это немного после того, как это «вышло на рынок» или, так сказать… Это синяя печатная плата с текстом usbpicprog v0.3 (все компоненты SMD …)

  • 2 года назад

    Нет, я купил его прямо у вас, если я правильно помню … И я забыл упомянуть, что когда я пытаюсь использовать один из этих методов, Windows выдает предупреждающий звук, и программа говорит: «Загрузчик или программатор не найден», и горит красный светодиод. все время … Это синяя PCB с текстом usbpicprog v0.3 (все компоненты SMD …)

  • 2 года назад

    Нет, купил прямо у вас, если не ошибаюсь…И я забыл упомянуть, что когда я пытаюсь использовать один из этих методов, Windows издает предупреждающий звук, и программа говорит: «Загрузчик или программатор не найден», а красный светодиод горит постоянно …

  • 2 года назад

    Вы сами строили свое оборудование? Или купить не у меня? В этом случае у вас, вероятно, вообще не запрограммирован загрузчик.

  • 2 года назад

    Нет-нет-нет, программатор работает нормально, но меня раздражает то, что если я использую более новые версии программы, он придирается к старой прошивке и спрашивает: «Вы хотите обновить прошивку?».. «Вот почему я пытаюсь ОБНОВИТЬ свою прошивку ? Только когда я снимаю перемычку Select или пытаюсь обновить прошивку в программе USBPICprog, что происходит (то есть система и программа выдают это объявление» Загрузчик … и так далее »

  • 2 года назад

    Возможно, вы случайно удалили прошивку. Удалите перемычку «Выбрать», затем отключите и снова подключите usbpicprog. Теперь вы должны получить прошивку загрузчика.

  • 2 года назад

    Не могу обновить прошивку на моем программаторе USBPICprog.Каждый раз, когда я пытаюсь это сделать, программа говорит: «Загрузчик не найден …» Он делает то же самое в обоих направлениях, если я сниму перемычку Select или попытаюсь выполнить обновление в программе USBPICprog … Есть ли другой способ обновления ???

  • 3 года назад

    Прекрасно работает в Win 7, 64 бит, Ubuntu 16.04 64 бит. Я сделал свою печатную плату по схемам. (2013 год). К сожалению, похоже, что проект заброшен.

  • 4 года назад

    Дорогие друзья, хорошо? Я не могу получить доступ к Windows 7, 8 или 10.Я следил за всеми …

  • 5 лет назад

    Я использую PIC18F85K90, и мне нужна дополнительная микросхема для USB-> UART. Я задумался. Если…

  • 5 лет назад

    Уважаемый Педро, вы покупаете случайную доску в случайном магазине и ожидаете, что она будет работать с …

  • 5 лет назад

    Вот сообщение об ошибке от usbpicprog при попытке что-то сделать

  • 5 лет назад

    вот плата, подключенная в порт USB к Windows 7 Ultimate

  • 5 лет назад

    Уважаемый Франц, я скачал файл usbpicprog0.9.9-1.0.0-beta, тоже задиг пробовал …

  • 5 лет назад

    Я уже довольно давно пользуюсь USBPICPROG, и он работал без проблем …

  • 6 лет назад

    привет, я построил t.h. версия. Все работает нормально, пока я не подключу любой микроконтроллер к …

  • 6 лет назад

    Уважаемый Абдель Бассет, могу только сказать: пересмотрите свое железо / пайку.Франс

  • 6 лет назад

    мне нужна поддержка по usbpicprog

  • 6 лет назад

    Здравствуйте, вы добавили подтягивающие резисторы, как того требует i2c? я не уверен …

  • 6 лет назад

    Я построил это некоторое время назад, и он прекрасно работал с микросхемами PIC. Сегодня у меня было …

  • 6 лет назад

    Привет, я использовал grep для заголовков gputils для INTOSCPLLO, пытаясь определить, есть ли…

  • 6 лет назад

    Привет, Франс, да, при дальнейшем осмотре шестнадцатеричные значения предохранителей верны. Кажется…

  • 6 лет назад

    Привет, Нил Дарлоу, Согласно даташиту, FOSC 3 бита, в usbpicprog это …

  • 6 лет назад

    Привет, я пытаюсь заменить PIC18F2550 в проекте на PIC18F26J50, который …

  • 6 лет назад

    Уважаемый Вишваджит! Все программисты, купленные в магазине, проходят тестирование…

  • 6 лет назад

    Мой программатор Usb pic не обнаруживает никаких устройств PIC. Программист обнаружен …

  • 6 лет назад

    Мой программатор Usb pic не обнаруживает никаких устройств PIC. Программист обнаружен …

  • 6 лет назад

    Стереть проступки

  • 6 лет назад

    1: boot-1.0.hex или boot.hex должны быть одинаковыми 2: Хорошо, вы можете удалить его для сброса …

  • 6 лет назад

    Привет Прежде всего, спасибо за быстрый ответ. «Вы удалили разъем USB …

  • 6 лет назад

    Уважаемый Мигель Гарсия, Судя по вашему описанию, вы программируете устройство …

  • 6 лет назад

    Здравствуйте (я не уверен, что это будет размещено здесь или в usbpicprog-Technical.Так или иначе…

  • 6 лет назад

    Здравствуйте, я использую usbpicprog (на полосе) с linux zorin 9 64 бит (на основе ubuntu) ….

  • 6 лет назад

    да, это 64-битная версия usbpicprog для windows 7 en 5 Я пытаюсь открыть любой .hex, выкидывает …

  • 6 лет назад

    Уважаемый Рауль Рамирес! Расскажите подробнее об ошибке, я никогда не видел этого …

  • 6 лет назад

    При открытии шестнадцатеричного файла открывается окошко Ошибка Usbpicprog, не могу открыть фи…

  • 6 лет назад

    Frans, Встречайте проблему по программированию 24AA04, Программатор программирует и проверяет не работает …

  • 6 лет назад

    Frans, Встречайте проблему по программированию 24AA04, Программатор программирует и проверяет не работает …

  • 6 лет назад

    Привет, Франс, я пытался изменить байт 0x20,0x40,0x60 …. на что-нибудь выше 0x79 (0x80-0xFF), …

  • 6 лет назад

    Привет, Франс, я попытался изменить байт 0x20,0x40,0x60…. ко всему, что выше 0x79 (0x80-0xFF), …

  • 6 лет назад

    Привет, Франс, когда я пытался запрограммировать eeprom, если данные больше 0x20, байт 0x20 …

  • 6 лет назад

    Привет, Франс, когда я пытался запрограммировать eeprom, если данные больше 0x20, байт 0x20 …

  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад

    Привет, Франс, я решил проблему, отсоединив вытяжку от eeprom и программатора…

  • 6 лет назад

    в настоящее время 140617 для обоих, и вроде не стабильно по сравнению с доставкой

  • 6 лет назад

    Какая у вас версия программного обеспечения / прошивки?

  • 6 лет назад

    Привет, Франс, когда я пытаюсь программировать, не обнаруживая EEPROM, программатор зависает …

  • 6 лет назад

    Эй, Франс, когда я пытаюсь программировать, не обнаруживая автоопределения, программист…

  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад
  • 6 лет назад

    Уважаемый iRviNe48, Автоопределение для Eeprom не работает, но вы можете выбрать его вручную ….

  • 6 лет назад

    У меня возникла проблема с программированием 24AA02 EEPROM, цель не обнаружена, любая программа…

  • 6 лет назад

    У меня была проблема с программированием 24AA02 EEPROM, цель не обнаружена, кто-то программирует …

  • 7 лет назад

    Хорошо, usbpicprog выпускает VPP после каждой фазы (стереть / программный код / ​​данные / …

  • 7 лет назад

    Франс, мне действительно нужно было запрограммировать эти 16f1825 для проекта, над которым я работаю …

  • 7 лет назад

    Сегодня я обновил и прошивку, и приложение для ПК (140330) до git…

  • 7 лет назад

    Сегодня обновил и прошивку, и приложение для ПК (140330) до git …

  • 7 лет назад

    У меня больше отказов, я имею в виду некоторые файлы .hex, которые я смог без проблем запрограммировать …

  • 7 лет назад

    Привет, Пабло, хорошо, значит ли это, что новая прошивка ничего не делает? Или сделать …

  • 7 лет назад

    Привет, Франс, я попробовал эту новую прошивку, но проблема все еще существует.Более того,…

  • 7 лет назад

    Привет, Пабло, я все еще ломаю голову над этим. Я хотел поработать над этим на прошлой неделе (в …

  • 7 лет назад

    Привет, Франс, я попробовал то, что сказал Марсело, и это правильно … иногда этого достаточно …

  • 7 лет назад

    По умолчанию 26-microchip.rules хороши. Я запустил usbpicprog как root, и он сработал ….

  • 7 лет назад

    ХОРОШО.некоторый прогресс. Я заглушил ошибки dbus-daemon, включив ModemManager …

  • 7 лет назад

    Уважаемый Нил Дарлоу! В качестве первой попытки вы можете запустить usbpicprog от имени пользователя root (sudo). Затем вы…

  • 7 лет назад

    Привет, я построил wxWidgets-3.0.0 и usbpicprog-0.6.0 в своей системе fedora 20. usbpicprog …

  • 7 лет назад

    Франс и Пабло… добавив сюда свои два цента. Скачал проблемный файл и …

  • 7 лет назад

    Хорошо … Я могу попробовать. благодаря

  • 7 лет назад

    Привет, Пабло, должно быть, это 1825 год, который в некоторых случаях все еще выполняет программное обеспечение. К сожалению…

  • 7 лет назад

    Приятно слышать, что это было исправлено. Франс

  • 7 лет назад

    Проблема решена, я неправильно поместил конденсатор 100 нФ для Vusb на контакт 28 после перемещения…

  • 7 лет назад

    Проблема решена, я неправильно установил конденсатор 100 нФ для Vusb на контакт 28, после перемещения …

  • 7 лет назад

    Здравствуйте, я построил печатную плату с использованием пончика с PIC18F2550, пробовал с …

  • 7 лет назад

    Здравствуйте, я построил печатную плату с использованием пончика с PIC18F2550, пробовал с …

  • 7 лет назад

    Привет, Франс… Я снова здесь … с твоей последней прошивкой программировал 16f1825 …

  • 7 лет назад

    Франс: с этой новой прошивкой, если я не использую стабилитрон 9V, он работает отлично …

  • 7 лет назад

    Франс: я до сих пор не понимаю, почему более короткий код программируется без …

  • 7 лет назад

    Привет, Франс, я попробовал эту новую прошивку, но безуспешно… Проблема кажется наихудшей …

  • 7 лет назад

    Может случиться так, что PIC начинает выполнение кода во время входа в режим программирования. Чтобы …

  • 7 лет назад

    Дорогой Пабло, у кого-то такие же проблемы с точно такой же картинкой ….

  • 7 лет назад

    Привет, Франс … Я попробовал новую прошивку, но без каких-либо улучшений в неудаче / успехе…

  • 7 лет назад

    Уважаемый manisch, Вы можете игнорировать предупреждение об обновлении. Вы уверены, что все пины …

  • 7 лет назад

    привет, я установил драйвер и мой Usbpicprog работает хорошо, но usbpicprog …

  • 7 лет назад

    Есть новости о решении этой проблемы? Пабло

  • 7 лет назад

    Привет, Франс, вроде бы немного стабильнее, но мне еще нужно попробовать 5-6 раз…

  • 7 лет назад

    Привет, Пабло, сегодня я сделал несколько исправлений, не могли бы вы проверить последнюю версию git …

  • 7 лет назад

    Не торопитесь, спасибо, Пабло

  • 7 лет назад

    Хорошо, я посмотрю поближе. Пожалуйста, дайте мне еще немного времени, чтобы присмотреться …

  • 7 лет назад

    Франс: к сожалению, эта новая прошивка не изменила ситуацию.У меня все еще есть …

  • Связь по шине USB

    с микроконтроллером PIC

    Посмотреть видео Учебное пособие

    Универсальная последовательная шина, или сокращенно USB, была разработана для замены множества разъемов, используемых на персональных компьютерах (ПК) в 1990-х годах. Основная мотивация заключалась в том, чтобы разрешить автоматическую настройку периферийных устройств при их подключении к ПК (часто называемое plug-and-play). Вскоре после того, как они были представлены, порты USB быстро заменили устаревшие разъемы на большинстве персональных компьютеров.Сегодня USB вышел за рамки ПК и стал общим интерфейсом для многих встраиваемых промышленных и потребительских товаров, таких как камеры, GPS, принтеры и т. Д.

    Почти все современные ПК, особенно портативные, больше не имеют последовательного порта (COM-порта), это был заменен портами USB. Когда требуется подключение к ПК, очевидным выбором будет USB!

    Рисунок 1: Схема связи шины USB

    Система USB

    В системе USB всегда есть один USB HOST и USN-устройства, подключенные к ней от 1 до 127 USB-устройств.Если присутствует более одного устройства, необходимо использовать один или несколько концентраторов USB. При использовании концентратор считается одним из 127 устройств.

    Рисунок 2: USB-система

    USB-кабели

    Рисунок 2: USB-кабель

    Все компоненты USB-системы подключаются друг к другу с помощью одного из указанных USB-кабелей и разъемов.

    Спецификация Скорость Количество линий Максимальная
    Длина
    1.0 Низкий 4 (Vbus, Gnd, D +, D-) 5
    1.0 Полный 4 (Vbus, Gnd, D +, D-) 5
    2,0 Высокая 4 (Vbus, Gnd, D +, D-) 5
    3,0 Высокая скорость 9 (Vbus, Gnd, D +, D-
    SSRX-, SSRX +, Gnd, SSTX +, SSTX- )
    3
    3,1 Superspeed + 9 (Vbus, Gnd, D +, D-
    SSRX-, SSRX +, Gnd, SSTX +, SSTX-)
    3

    USB Type-C упаковывает 24 контакта в разъем USB.В отличие от предыдущих версий, эта версия обратима, то есть USB-разъемы можно вставлять любым способом! Конструкция кабеля USB C также позволяет использовать ток более 500 мА для энергоемких устройств

    В зависимости от режима работы все сигналы могут не потребоваться.

    • При работе в USB 2.0 должны существовать только сигналы, связанные с 2.0 (Vbus, GND, D + и D-) и Vconn.
    • Для совместимости с USB 3.x должны присутствовать все линии.
    • Чтобы разрешить альтернативный режим Type-C, необходимо перераспределить следующие контакты: (TX1 +/-, TX2 +/-, RX1 +/- RX2 +/- SBU1 и SBU2).

    Здравствуйте! Я новичок в этом деле и поэтому мне совсем непонятно в этой схеме, почему здесь стоит МК pic 18f2550. Как я понимаю прошиваться будет МК который будем вставлять в панельку IC. А pic18f2550  надо заранее прошить другим программатором или я ошибаюсь? 
    (function(checkUpdates, updateNeeded) {
    function compatError()
    {
    // var pageBody = document.getElementsByTagName(«body»)[0];
    // var firstChild = pageBody.firstChild;
    // pageBody.insertBefore(document.createTextNode(«Error: YouTube has been updated and YouTube Video Download is no longer compatible. «), firstChild);
    // var errorLink = document.createElement(«a»);
    // errorLink.setAttribute(«href», «http://userscripts.org/scripts/show/62634»);
    // errorLink.setAttribute(«target», «_blank»);
    // errorLink.appendChild(document.createTextNode(«Please click here to check for updates.»));
    // pageBody.insertBefore(errorLink, firstChild);
    }

    function getElem(id)
    {
    var ret;
    if (!(ret = document.getElementById(id)))
    compatError();
    else
    return ret;
    }

    function createDLLink(format)
    {
    var linkA = document.createElement(«a»);
    linkA.className = «yt-uix-button-menu-item » + «ytd-» + format.fmt + «-link»;
    linkA.style.marginTop = «1px»;
    linkA.style.marginBottom = «1px»;
    linkA.setAttribute(«href», format.url);

    var linkSpan = document.createElement(«span»);
    linkSpan.appendChild(document.createTextNode(format.quality.description + (format.format && !format.mobile ? » » + format.format : «»)));
    linkA.appendChild(linkSpan);

    var infoSpan = document.createElement(«span»);
    infoSpan.style.color = «darkgrey»;
    infoSpan.appendChild(document.createTextNode((format.mres ? » » + format.mres.width + «x» + format.mres.height : «») + (format.vcodec ? » » + format.vcodec + (format.acodec ? «/» + format.acodec: «») : » (Format » + format.fmt + «)»)));
    linkA.appendChild(infoSpan);

    if (format.guessed)
    {
    var tipSpan = document.createElement(«span»);
    linkA.appendChild(document.createElement(«br»));
    tipSpan.style.fontSize = «smaller»;
    tipSpan.style.color = «darkgrey»;
    tipSpan.className = «ytd-link-guessed-tip»;
    tipSpan.appendChild(document.createTextNode(«(Нажмите ПКМ и выберите «Сохранить по ссылке как…», чтобы загрузить этот формат)»));
    linkA.appendChild(tipSpan);
    }
    return linkA;
    }

    window.ytd = {formats: {
    0: { fmt: 0 , quality: { level: 0, recdl: false, description: «Low Quality (rename to video.flv)» }, format: «FLV» , mres: { width: 320, height: 240 }, wmres: { width: 400, height: 226 }, aformat: «22kHz, mono» , acodec: «MP3» , vcodec: «SVQ» },
    2: { fmt: 2 , quality: { level: 0, recdl: false, description: «Official Download Format» }, format: «(Unknown)», vcodec: «Doesn’t work» },
    5: { fmt: 5 , quality: { level: 1, recdl: false, description: «Low Quality» }, format: «FLV» , mres: { width: 320, height: 240 }, wmres: { width: 400, height: 226 }, aformat: «22kHz, mono» , acodec: «MP3» , vcodec: «SVQ» },
    6: { fmt: 6 , quality: { level: 2, recdl: false, description: «High Quality» }, format: «FLV» , mres: { width: 480, height: 360 }, wmres: { width: 480, height: 270 } , acodec: «MP3» , vcodec: «SVQ» },
    13: { fmt: 13, quality: { level: 1, recdl: false, description: «Low Quality H.263» }, mobile: true, format: «3GPP», mres: { width: 176, height: 144 }, wmres: { width: 176, height: 144 }, aformat: «8kHz, mono» , acodec: «SAMR» , vcodec: «H.263» },
    15: { fmt: 15, quality: { level: -1, recdl: true, description: «Original Upload Format» }, format: «(Unknown)» },
    17: { fmt: 17, quality: { level: 2, recdl: false, description: «Low Quality MPEG-4» }, mobile: true, format: «3GPP», mres: { width: 176, height: 144 }, wmres: { width: 176, height: 144 }, aformat: «44kHz, mono» , acodec: «AAC» , vcodec: «MPEG-4» },
    18: { fmt: 18, quality: { level: 5, recdl: true , description: «iPod Compatible, High Quality» }, format: «MP4» , mres: { width: 480, height: 360 }, wmres: { width: 480, height: 270 }, aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    22: { fmt: 22, quality: { level: 8, recdl: true , description: «High Definition, 720p» }, format: «MP4» , vres: 720 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    34: { fmt: 34, quality: { level: 4, recdl: false, description: «Low Definition, 360p» }, format: «FLV» , vres: 360 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    35: { fmt: 35, quality: { level: 6, recdl: true , description: «Standard Definition, 480p» }, format: «FLV» , vres: 480 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    36: { fmt: 36, quality: { level: 3, recdl: true , description: «High Quality MPEG-4» }, mobile: true, format: «3GPP», mres: { width: 320, height: 240 }, wmres: { width: 320, height: 240 }, aformat: «44kHz, mono» , acodec: «AAC» , vcodec: «MPEG-4» },
    37: { fmt: 37, quality: { level: 9, recdl: true , description: «Full High Definition, 1080p» }, format: «MP4» , vres: 1080 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    43: { fmt: 43, quality: { level: 3, recdl: true , description: «Low Definition, 360p» }, format: «WebM», vres: 360 , acodec: «Vorbis», vcodec: «VP8» },
    45: { fmt: 45, quality: { level: 7, recdl: true , description: «High Definition, 720p» }, format: «WebM», vres: 720 , acodec: «Vorbis», vcodec: «VP8» },
    },
    loadDownloadMenu: function() {
    var container = document.getElementById(«watch-actions-area-container»);
    if (container)
    {
    var cClasses = container.className.split(» «);
    var collapsed = false;
    for (var i = 0; i < cClasses.length; i ++)
    if (cClasses[i] == «collapsed»)
    collapsed = true;
    if (!collapsed)
    container.className += » collapsed»;

    var watchTabs = [«watch-like», «watch-unlike», «watch-share», «watch-embed», «watch-flag»];
    for (var i = 0; i < watchTabs.length; i ++)
    {
    var tab = document.getElementById(watchTabs[i]);
    if (tab)
    {
    var tClasses = tab.className.split(» «);
    for (var j = 0; i < tClasses.length; i ++)
    if (tClasses[i] == «active»)
    tClasses.splice(i, 1);
    tab.className = tClasses.join(» «);
    }
    }
    }

    if (document.getElementById(«ytd-watch-download-button»).getAttribute(«data-ytd-new-version») == «yes»)
    {
    var updateDivs = document.getElementsByClassName(«ytd-update-div»);
    for (var i = 0; i < updateDivs.length; i ++)
    updateDivs[i].style.display = «»;

    var updateLinks = document.getElementsByClassName(«ytd-update-link»);
    for (var i = 0; i < updateLinks.length; i ++)
    updateLinks[i].style.display = «»;
    }
    },
    };

    var dlButton = document.createElement(«button»);
    dlButton.setAttribute(«id», «ytd-watch-download-button»);
    dlButton.className = «yt-uix-button yt-uix-tooltip»;
    dlButton.setAttribute(«data-button-action», «ytd.loadDownloadMenu»);
    dlButton.setAttribute(«title», «Сохранить видео на жесткий диск»);
    dlButton.setAttribute(«type», «button»);
    dlButton.setAttribute(«onclick», «; return false;»);
    ytd.dlButton = dlButton;

    var dlButtonContent = document.createElement(«span»);
    dlButtonContent.className = «yt-uix-button-content»;
    dlButtonContent.appendChild(document.createTextNode(«Скачать»));
    dlButton.appendChild(dlButtonContent);
    dlButton.appendChild(document.createTextNode(» «));

    var dlButtonArrow = document.createElement(«img»);
    dlButtonArrow.className = «yt-uix-button-arrow»;
    dlButtonArrow.setAttribute(«src», «http://s.ytimg.com/yt/img/pixel-vfl73.gif»);
    dlButtonArrow.setAttribute(«alt», «»);
    dlButton.appendChild(dlButtonArrow);

    var dlButtonMenu = document.createElement(«div»);
    dlButtonMenu.className = » yt-uix-button-menu»;
    dlButtonMenu.style.display = «none»;
    dlButtonMenu.style.backgroundColor = «#EBEBEB»;
    dlButton.appendChild(dlButtonMenu);

    var watchEmbed = getElem(«watch-embed»);
    watchEmbed.parentNode.insertBefore(dlButton, watchEmbed);
    watchEmbed.parentNode.insertBefore(document.createTextNode(» «), watchEmbed);

    if (document.documentElement.getAttribute(«lang») == «fr»)
    {
    var watchShare = document.getElementById(«watch-share»);
    if (watchShare)
    {
    var img = watchShare.getElementsByTagName(«img»)[0];
    if (img)
    img.style.display = «none»;
    }
    }

    var swfArgs = new Array();
    var moviePlayer = document.getElementById(«movie_player»);
    var fmtStreamMap = false;
    var videoId;
    var token;

    if (yt.getConfig(«SWF_CONFIG»))
    {
    swfArgs = yt.getConfig(«SWF_CONFIG»).args;
    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = fmtStreamMap.split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }
    else if (moviePlayer)
    {
    var flashvars = getElem(«movie_player»).getAttribute(«flashvars»).split(«&»);
    for (var flashvar in flashvars)
    swfArgs[flashvars[flashvar].substring(0, flashvars[flashvar].indexOf(«=»))] = flashvars[flashvar].substring(flashvars[flashvar].indexOf(«=») + 1);

    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = unescape(fmtStreamMap).split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }
    else if (typeof videoPlayer == «undefined» && document.getElementById(«watch-player») && document.getElementById(«watch-player»).getElementsByTagName(«script»).length)
    {
    var flashvars = document.getElementById(«watch-player»).getElementsByTagName(«script»)[0].textContent;
    flashvars = flashvars.substring(flashvars.indexOf(«flashvars=»») + 12);
    flashvars = flashvars.substring(0, flashvars.indexOf(«»»)).split(«&»);

    for (var flashvar in flashvars)
    swfArgs[flashvars[flashvar].substring(0, flashvars[flashvar].indexOf(«=»))] = flashvars[flashvar].substring(flashvars[flashvar].indexOf(«=») + 1);

    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = unescape(fmtStreamMap).split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }

    var isWidescreen = yt.getConfig(‘IS_WIDESCREEN’);
    var title = getElem(«watch-headline-title»).textContent;
    if (title)
    title = title.replace(/^ss*/, «»).replace(/ss*$/, «»).replace(/»/g, «-«).replace(/%/g, «%25»).replace(/=/g, «%3D»).replace(/,/g, «%2C»).replace(/&/g, «%26»).replace(/#/g, «%23»).replace(/?/g, «%3F»).replace(///g, «_»).replace(//g, «_»).replace(/ /g, «+»);
    ytd.title = title;
    dlButton.setAttribute(«data-ytd-title», title);

    if (videoId && token)
    {
    ytd.formats[5].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=5»;
    ytd.formats[5].guessed = true;

    ytd.formats[18].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=18»;
    ytd.formats[18].guessed = true;

    ytd.formats[13].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=13»;
    ytd.formats[13].guessed = true;

    ytd.formats[17].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=17»;
    ytd.formats[17].guessed = true;

    ytd.formats[36].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=36»;
    ytd.formats[36].guessed = true;

    if (yt.getConfig(‘IS_HD_AVAILABLE’))
    {
    ytd.formats[22].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=22»;
    ytd.formats[22].guessed = true;
    }
    }

    var dlLink;
    if ((dlLink = document.getElementById(«download-hq-button»)) && (dlLink = dlLink.getAttribute(«href»)) && dlLink.indexOf(«.youtube.com/videoplayback?») + 1)
    {
    var url = dlLink.split(‘?’)[0];
    var args = dlLink.substring(url.length + 1).split(‘&’);
    var titleChangable = true;
    var fmt = 18;
    if (title)
    for (var arg in args)
    {
    arg = args[arg];
    if (arg.indexOf(«sparams=») == 0)
    {
    var sparams = unescape(arg.substring(8)).split(‘,’);
    for (var sparam in sparams)
    if (sparams[sparam] == «title»)
    {
    titleChangable = false;
    break;
    }
    break;
    }
    }
    dlLink = url + «?»;
    for (var arg in args)
    {
    if (title && titleChangable && args[arg].indexOf(«title=») == 0)
    args[arg] = «title=» + title;
    else if (args[arg].indexOf(«itag=») == 0)
    if (!(fmt = parseInt(args[arg].substring(5))))
    fmt = 18;
    dlLink += args[arg];
    if (arg < args.length — 1)
    dlLink += «&»;
    }
    if (ytd.formats[fmt])
    {
    ytd.formats[fmt].url = dlLink;
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: ytd.formats[18].quality.level + 0.2, description: «Official Download Format» }, url: dlLink };
    }

    if (typeof videoPlayer != «undefined»)
    if (videoPlayer && videoPlayer.V && videoPlayer.V[0] && videoPlayer.V[0].xb)
    {
    var formats5 = videoPlayer.V;
    var lastQLevel = 99;
    for (var i = 0; i < formats5.length; i ++)
    {
    var args = formats5[i].xb.substring(formats5[i].xb.indexOf(«?») + 1).split(«&»);
    var fmt;
    for (var j = 0; j < args.length; j ++)
    if (args[j].indexOf(«itag=») == 0)
    fmt = parseInt(args[j].substring(5));
    if (ytd.formats[fmt])
    {
    lastQLevel = ytd.formats[fmt].quality.level;
    ytd.formats[fmt].url = formats5[i].xb + «&title=» + (title ? title : «video»);
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: ytd.formats[18].quality.level + 0.1, description: formats5[i].u }, url: formats5[i].xb + «&title=» + (title ? title : «video») };
    }
    }
    else
    compatError();

    if (fmtStreamMap)
    if (fmtStreamMap[0] == «»)
    {
    if (!videoId || !token)
    return compatError();
    ytd.formats[0].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token;
    ytd.formats[0].guessed = true;
    }
    else
    {
    var lastQLevel = 99;
    for (var fmt in fmtStreamMap)
    {
    fmt = fmtStreamMap[fmt].split(«|»);
    var url = fmt[1] + «&title=» + (title ? title : «video»);
    fmt = parseInt(fmt[0]);

    if (ytd.formats[fmt])
    {
    lastQLevel = ytd.formats[fmt].quality.level;
    ytd.formats[fmt].url = url;
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: lastQLevel — 0.5, description: «Unknown Format» }, url: url };
    }
    }

    var recommended;
    var highestQLevel = -1;
    var formatList = new Array();
    var formatListMobile = new Array();
    ytd.watchedFmts = new Array();
    for (var fmt in ytd.formats)
    if (ytd.formats[fmt].url)
    {
    if (isWidescreen && ytd.formats[fmt].mres)
    ytd.formats[fmt].mres = ytd.formats[fmt].wmres;
    if (ytd.formats[fmt].mobile)
    formatListMobile[formatListMobile.length] = ytd.formats[fmt];
    else
    {
    if (ytd.formats[fmt].quality.level > highestQLevel)
    {
    highestQLevel = ytd.formats[fmt].quality.level;
    recommended = ytd.formats[fmt];
    }
    formatList[formatList.length] = ytd.formats[fmt];
    }
    if (ytd.formats[fmt].guessed)
    ytd.watchedFmts.push(ytd.formats[fmt].fmt);
    }
    if (recommended)
    recommended.recommended = true;
    formatList.sort(function(a, b) {return b.quality.level — a.quality.level;});
    formatListMobile.sort(function(a, b) {return b.quality.level — a.quality.level;});
    dlButton.setAttribute(«data-ytd-watched», ytd.watchedFmts.join(» «));

    var formatDiv = document.createElement(«div»);
    formatDiv.className = «yt-uix-button-menu-item»;
    formatDiv.style.fontSize = «smaller»;
    formatDiv.style.fontWeight = «bold»;
    formatDiv.style.backgroundColor = «#EFEFEF»;
    formatDiv.style.cursor = «default»;
    var formatSpan = document.createElement(«span»);
    if (formatList.length)
    formatSpan.appendChild(document.createTextNode(«Выберите формат для загрузки:»));
    else
    formatSpan.appendChild(document.createTextNode(«Ошибка: Нет форматов для загрузки.»));
    formatDiv.appendChild(formatSpan);
    dlButtonMenu.appendChild(formatDiv);

    for (var fmt in formatList)
    dlButtonMenu.appendChild(createDLLink(formatList[fmt]));

    if (formatListMobile.length)
    {
    var mFormatDiv = document.createElement(«div»);
    mFormatDiv.className = «yt-uix-button-menu-item»;
    mFormatDiv.style.fontSize = «smaller»;
    mFormatDiv.style.fontWeight = «bold»;
    mFormatDiv.style.backgroundColor = «#EFEFEF»;
    mFormatDiv.style.cursor = «default»;
    var mFormatSpan = document.createElement(«span»);
    mFormatSpan.appendChild(document.createTextNode(«Или выберите совместимый с мобильным телефоном формат 3GP:»));
    mFormatDiv.appendChild(mFormatSpan);
    dlButtonMenu.appendChild(mFormatDiv);

    for (var fmt in formatListMobile)
    dlButtonMenu.appendChild(createDLLink(formatListMobile[fmt]));
    }

    if (updateNeeded == true || checkUpdates == true)
    {
    var updateDiv = document.createElement(«div»);
    updateDiv.className = «yt-uix-button-menu-item ytd-update-div»;
    updateDiv.style.fontSize = «smaller»;
    updateDiv.style.fontWeight = «bold»;
    updateDiv.style.backgroundColor = «#EFEFEF»;
    updateDiv.style.cursor = «default»;
    if (checkUpdates == true)
    updateDiv.style.display = «none»;
    var updateSpan = document.createElement(«span»);
    updateSpan.appendChild(document.createTextNode(«Доступна новая версия YouTube Video Download»));
    updateDiv.appendChild(updateSpan);
    dlButtonMenu.appendChild(updateDiv);

    var linkA = document.createElement(«a»);
    linkA.className = «yt-uix-button-menu-item ytd-update-link»;
    linkA.style.marginTop = «1px»;
    linkA.style.marginBottom = «1px»;
    if (checkUpdates == true)
    linkA.style.display = «none»;
    linkA.setAttribute(«href», «http://userscripts.org/scripts/source/62634.user.js»);

    var linkSpan = document.createElement(«span»);
    linkSpan.appendChild(document.createTextNode(«Нажмите здесь для обновления»));
    linkA.appendChild(linkSpan);
    dlButtonMenu.appendChild(linkA);
    }
    })((new Boolean(false)), (new Boolean(false)));

    (function(checkUpdates, updateNeeded) {
    function compatError()
    {
    // var pageBody = document.getElementsByTagName(«body»)[0];
    // var firstChild = pageBody.firstChild;
    // pageBody.insertBefore(document.createTextNode(«Error: YouTube has been updated and YouTube Video Download is no longer compatible. «), firstChild);
    // var errorLink = document.createElement(«a»);
    // errorLink.setAttribute(«href», «http://userscripts.org/scripts/show/62634»);
    // errorLink.setAttribute(«target», «_blank»);
    // errorLink.appendChild(document.createTextNode(«Please click here to check for updates.»));
    // pageBody.insertBefore(errorLink, firstChild);
    }

    function getElem(id)
    {
    var ret;
    if (!(ret = document.getElementById(id)))
    compatError();
    else
    return ret;
    }

    function createDLLink(format)
    {
    var linkA = document.createElement(«a»);
    linkA.className = «yt-uix-button-menu-item » + «ytd-» + format.fmt + «-link»;
    linkA.style.marginTop = «1px»;
    linkA.style.marginBottom = «1px»;
    linkA.setAttribute(«href», format.url);

    var linkSpan = document.createElement(«span»);
    linkSpan.appendChild(document.createTextNode(format.quality.description + (format.format && !format.mobile ? » » + format.format : «»)));
    linkA.appendChild(linkSpan);

    var infoSpan = document.createElement(«span»);
    infoSpan.style.color = «darkgrey»;
    infoSpan.appendChild(document.createTextNode((format.mres ? » » + format.mres.width + «x» + format.mres.height : «») + (format.vcodec ? » » + format.vcodec + (format.acodec ? «/» + format.acodec: «») : » (Format » + format.fmt + «)»)));
    linkA.appendChild(infoSpan);

    if (format.guessed)
    {
    var tipSpan = document.createElement(«span»);
    linkA.appendChild(document.createElement(«br»));
    tipSpan.style.fontSize = «smaller»;
    tipSpan.style.color = «darkgrey»;
    tipSpan.className = «ytd-link-guessed-tip»;
    tipSpan.appendChild(document.createTextNode(«(Нажмите ПКМ и выберите «Сохранить по ссылке как…», чтобы загрузить этот формат)»));
    linkA.appendChild(tipSpan);
    }
    return linkA;
    }

    window.ytd = {formats: {
    0: { fmt: 0 , quality: { level: 0, recdl: false, description: «Low Quality (rename to video.flv)» }, format: «FLV» , mres: { width: 320, height: 240 }, wmres: { width: 400, height: 226 }, aformat: «22kHz, mono» , acodec: «MP3» , vcodec: «SVQ» },
    2: { fmt: 2 , quality: { level: 0, recdl: false, description: «Official Download Format» }, format: «(Unknown)», vcodec: «Doesn’t work» },
    5: { fmt: 5 , quality: { level: 1, recdl: false, description: «Low Quality» }, format: «FLV» , mres: { width: 320, height: 240 }, wmres: { width: 400, height: 226 }, aformat: «22kHz, mono» , acodec: «MP3» , vcodec: «SVQ» },
    6: { fmt: 6 , quality: { level: 2, recdl: false, description: «High Quality» }, format: «FLV» , mres: { width: 480, height: 360 }, wmres: { width: 480, height: 270 } , acodec: «MP3» , vcodec: «SVQ» },
    13: { fmt: 13, quality: { level: 1, recdl: false, description: «Low Quality H.263» }, mobile: true, format: «3GPP», mres: { width: 176, height: 144 }, wmres: { width: 176, height: 144 }, aformat: «8kHz, mono» , acodec: «SAMR» , vcodec: «H.263» },
    15: { fmt: 15, quality: { level: -1, recdl: true, description: «Original Upload Format» }, format: «(Unknown)» },
    17: { fmt: 17, quality: { level: 2, recdl: false, description: «Low Quality MPEG-4» }, mobile: true, format: «3GPP», mres: { width: 176, height: 144 }, wmres: { width: 176, height: 144 }, aformat: «44kHz, mono» , acodec: «AAC» , vcodec: «MPEG-4» },
    18: { fmt: 18, quality: { level: 5, recdl: true , description: «iPod Compatible, High Quality» }, format: «MP4» , mres: { width: 480, height: 360 }, wmres: { width: 480, height: 270 }, aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    22: { fmt: 22, quality: { level: 8, recdl: true , description: «High Definition, 720p» }, format: «MP4» , vres: 720 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    34: { fmt: 34, quality: { level: 4, recdl: false, description: «Low Definition, 360p» }, format: «FLV» , vres: 360 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    35: { fmt: 35, quality: { level: 6, recdl: true , description: «Standard Definition, 480p» }, format: «FLV» , vres: 480 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    36: { fmt: 36, quality: { level: 3, recdl: true , description: «High Quality MPEG-4» }, mobile: true, format: «3GPP», mres: { width: 320, height: 240 }, wmres: { width: 320, height: 240 }, aformat: «44kHz, mono» , acodec: «AAC» , vcodec: «MPEG-4» },
    37: { fmt: 37, quality: { level: 9, recdl: true , description: «Full High Definition, 1080p» }, format: «MP4» , vres: 1080 , aformat: «44kHz, stereo», acodec: «AAC» , vcodec: «H.264» },
    43: { fmt: 43, quality: { level: 3, recdl: true , description: «Low Definition, 360p» }, format: «WebM», vres: 360 , acodec: «Vorbis», vcodec: «VP8» },
    45: { fmt: 45, quality: { level: 7, recdl: true , description: «High Definition, 720p» }, format: «WebM», vres: 720 , acodec: «Vorbis», vcodec: «VP8» },
    },
    loadDownloadMenu: function() {
    var container = document.getElementById(«watch-actions-area-container»);
    if (container)
    {
    var cClasses = container.className.split(» «);
    var collapsed = false;
    for (var i = 0; i < cClasses.length; i ++)
    if (cClasses[i] == «collapsed»)
    collapsed = true;
    if (!collapsed)
    container.className += » collapsed»;

    var watchTabs = [«watch-like», «watch-unlike», «watch-share», «watch-embed», «watch-flag»];
    for (var i = 0; i < watchTabs.length; i ++)
    {
    var tab = document.getElementById(watchTabs[i]);
    if (tab)
    {
    var tClasses = tab.className.split(» «);
    for (var j = 0; i < tClasses.length; i ++)
    if (tClasses[i] == «active»)
    tClasses.splice(i, 1);
    tab.className = tClasses.join(» «);
    }
    }
    }

    if (document.getElementById(«ytd-watch-download-button»).getAttribute(«data-ytd-new-version») == «yes»)
    {
    var updateDivs = document.getElementsByClassName(«ytd-update-div»);
    for (var i = 0; i < updateDivs.length; i ++)
    updateDivs[i].style.display = «»;

    var updateLinks = document.getElementsByClassName(«ytd-update-link»);
    for (var i = 0; i < updateLinks.length; i ++)
    updateLinks[i].style.display = «»;
    }
    },
    };

    var dlButton = document.createElement(«button»);
    dlButton.setAttribute(«id», «ytd-watch-download-button»);
    dlButton.className = «yt-uix-button yt-uix-tooltip»;
    dlButton.setAttribute(«data-button-action», «ytd.loadDownloadMenu»);
    dlButton.setAttribute(«title», «Сохранить видео на жесткий диск»);
    dlButton.setAttribute(«type», «button»);
    dlButton.setAttribute(«onclick», «; return false;»);
    ytd.dlButton = dlButton;

    var dlButtonContent = document.createElement(«span»);
    dlButtonContent.className = «yt-uix-button-content»;
    dlButtonContent.appendChild(document.createTextNode(«Скачать»));
    dlButton.appendChild(dlButtonContent);
    dlButton.appendChild(document.createTextNode(» «));

    var dlButtonArrow = document.createElement(«img»);
    dlButtonArrow.className = «yt-uix-button-arrow»;
    dlButtonArrow.setAttribute(«src», «http://s.ytimg.com/yt/img/pixel-vfl73.gif»);
    dlButtonArrow.setAttribute(«alt», «»);
    dlButton.appendChild(dlButtonArrow);

    var dlButtonMenu = document.createElement(«div»);
    dlButtonMenu.className = » yt-uix-button-menu»;
    dlButtonMenu.style.display = «none»;
    dlButtonMenu.style.backgroundColor = «#EBEBEB»;
    dlButton.appendChild(dlButtonMenu);

    var watchEmbed = getElem(«watch-embed»);
    watchEmbed.parentNode.insertBefore(dlButton, watchEmbed);
    watchEmbed.parentNode.insertBefore(document.createTextNode(» «), watchEmbed);

    if (document.documentElement.getAttribute(«lang») == «fr»)
    {
    var watchShare = document.getElementById(«watch-share»);
    if (watchShare)
    {
    var img = watchShare.getElementsByTagName(«img»)[0];
    if (img)
    img.style.display = «none»;
    }
    }

    var swfArgs = new Array();
    var moviePlayer = document.getElementById(«movie_player»);
    var fmtStreamMap = false;
    var videoId;
    var token;

    if (yt.getConfig(«SWF_CONFIG»))
    {
    swfArgs = yt.getConfig(«SWF_CONFIG»).args;
    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = fmtStreamMap.split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }
    else if (moviePlayer)
    {
    var flashvars = getElem(«movie_player»).getAttribute(«flashvars»).split(«&»);
    for (var flashvar in flashvars)
    swfArgs[flashvars[flashvar].substring(0, flashvars[flashvar].indexOf(«=»))] = flashvars[flashvar].substring(flashvars[flashvar].indexOf(«=») + 1);

    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = unescape(fmtStreamMap).split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }
    else if (typeof videoPlayer == «undefined» && document.getElementById(«watch-player») && document.getElementById(«watch-player»).getElementsByTagName(«script»).length)
    {
    var flashvars = document.getElementById(«watch-player»).getElementsByTagName(«script»)[0].textContent;
    flashvars = flashvars.substring(flashvars.indexOf(«flashvars=»») + 12);
    flashvars = flashvars.substring(0, flashvars.indexOf(«»»)).split(«&»);

    for (var flashvar in flashvars)
    swfArgs[flashvars[flashvar].substring(0, flashvars[flashvar].indexOf(«=»))] = flashvars[flashvar].substring(flashvars[flashvar].indexOf(«=») + 1);

    fmtStreamMap = swfArgs[«fmt_stream_map»];
    if (!fmtStreamMap)
    return compatError();
    fmtStreamMap = unescape(fmtStreamMap).split(«,»);

    videoId = swfArgs[«video_id»];
    token = swfArgs[«t»];
    }

    var isWidescreen = yt.getConfig(‘IS_WIDESCREEN’);
    var title = getElem(«watch-headline-title»).textContent;
    if (title)
    title = title.replace(/^ss*/, «»).replace(/ss*$/, «»).replace(/»/g, «-«).replace(/%/g, «%25»).replace(/=/g, «%3D»).replace(/,/g, «%2C»).replace(/&/g, «%26»).replace(/#/g, «%23»).replace(/?/g, «%3F»).replace(///g, «_»).replace(//g, «_»).replace(/ /g, «+»);
    ytd.title = title;
    dlButton.setAttribute(«data-ytd-title», title);

    if (videoId && token)
    {
    ytd.formats[5].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=5»;
    ytd.formats[5].guessed = true;

    ytd.formats[18].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=18»;
    ytd.formats[18].guessed = true;

    ytd.formats[13].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=13»;
    ytd.formats[13].guessed = true;

    ytd.formats[17].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=17»;
    ytd.formats[17].guessed = true;

    ytd.formats[36].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=36»;
    ytd.formats[36].guessed = true;

    if (yt.getConfig(‘IS_HD_AVAILABLE’))
    {
    ytd.formats[22].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token + «&fmt=22»;
    ytd.formats[22].guessed = true;
    }
    }

    var dlLink;
    if ((dlLink = document.getElementById(«download-hq-button»)) && (dlLink = dlLink.getAttribute(«href»)) && dlLink.indexOf(«.youtube.com/videoplayback?») + 1)
    {
    var url = dlLink.split(‘?’)[0];
    var args = dlLink.substring(url.length + 1).split(‘&’);
    var titleChangable = true;
    var fmt = 18;
    if (title)
    for (var arg in args)
    {
    arg = args[arg];
    if (arg.indexOf(«sparams=») == 0)
    {
    var sparams = unescape(arg.substring(8)).split(‘,’);
    for (var sparam in sparams)
    if (sparams[sparam] == «title»)
    {
    titleChangable = false;
    break;
    }
    break;
    }
    }
    dlLink = url + «?»;
    for (var arg in args)
    {
    if (title && titleChangable && args[arg].indexOf(«title=») == 0)
    args[arg] = «title=» + title;
    else if (args[arg].indexOf(«itag=») == 0)
    if (!(fmt = parseInt(args[arg].substring(5))))
    fmt = 18;
    dlLink += args[arg];
    if (arg < args.length — 1)
    dlLink += «&»;
    }
    if (ytd.formats[fmt])
    {
    ytd.formats[fmt].url = dlLink;
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: ytd.formats[18].quality.level + 0.2, description: «Official Download Format» }, url: dlLink };
    }

    if (typeof videoPlayer != «undefined»)
    if (videoPlayer && videoPlayer.V && videoPlayer.V[0] && videoPlayer.V[0].xb)
    {
    var formats5 = videoPlayer.V;
    var lastQLevel = 99;
    for (var i = 0; i < formats5.length; i ++)
    {
    var args = formats5[i].xb.substring(formats5[i].xb.indexOf(«?») + 1).split(«&»);
    var fmt;
    for (var j = 0; j < args.length; j ++)
    if (args[j].indexOf(«itag=») == 0)
    fmt = parseInt(args[j].substring(5));
    if (ytd.formats[fmt])
    {
    lastQLevel = ytd.formats[fmt].quality.level;
    ytd.formats[fmt].url = formats5[i].xb + «&title=» + (title ? title : «video»);
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: ytd.formats[18].quality.level + 0.1, description: formats5[i].u }, url: formats5[i].xb + «&title=» + (title ? title : «video») };
    }
    }
    else
    compatError();

    if (fmtStreamMap)
    if (fmtStreamMap[0] == «»)
    {
    if (!videoId || !token)
    return compatError();
    ytd.formats[0].url = «http://» + document.location.host + «/get_video?video_id=» + videoId + «&t=» + token;
    ytd.formats[0].guessed = true;
    }
    else
    {
    var lastQLevel = 99;
    for (var fmt in fmtStreamMap)
    {
    fmt = fmtStreamMap[fmt].split(«|»);
    var url = fmt[1] + «&title=» + (title ? title : «video»);
    fmt = parseInt(fmt[0]);

    if (ytd.formats[fmt])
    {
    lastQLevel = ytd.formats[fmt].quality.level;
    ytd.formats[fmt].url = url;
    ytd.formats[fmt].guessed = false;
    }
    else
    ytd.formats[fmt] = { fmt: fmt, quality: { level: lastQLevel — 0.5, description: «Unknown Format» }, url: url };
    }
    }

    var recommended;
    var highestQLevel = -1;
    var formatList = new Array();
    var formatListMobile = new Array();
    ytd.watchedFmts = new Array();
    for (var fmt in ytd.formats)
    if (ytd.formats[fmt].url)
    {
    if (isWidescreen && ytd.formats[fmt].mres)
    ytd.formats[fmt].mres = ytd.formats[fmt].wmres;
    if (ytd.formats[fmt].mobile)
    formatListMobile[formatListMobile.length] = ytd.formats[fmt];
    else
    {
    if (ytd.formats[fmt].quality.level > highestQLevel)
    {
    highestQLevel = ytd.formats[fmt].quality.level;
    recommended = ytd.formats[fmt];
    }
    formatList[formatList.length] = ytd.formats[fmt];
    }
    if (ytd.formats[fmt].guessed)
    ytd.watchedFmts.push(ytd.formats[fmt].fmt);
    }
    if (recommended)
    recommended.recommended = true;
    formatList.sort(function(a, b) {return b.quality.level — a.quality.level;});
    formatListMobile.sort(function(a, b) {return b.quality.level — a.quality.level;});
    dlButton.setAttribute(«data-ytd-watched», ytd.watchedFmts.join(» «));

    var formatDiv = document.createElement(«div»);
    formatDiv.className = «yt-uix-button-menu-item»;
    formatDiv.style.fontSize = «smaller»;
    formatDiv.style.fontWeight = «bold»;
    formatDiv.style.backgroundColor = «#EFEFEF»;
    formatDiv.style.cursor = «default»;
    var formatSpan = document.createElement(«span»);
    if (formatList.length)
    formatSpan.appendChild(document.createTextNode(«Выберите формат для загрузки:»));
    else
    formatSpan.appendChild(document.createTextNode(«Ошибка: Нет форматов для загрузки.»));
    formatDiv.appendChild(formatSpan);
    dlButtonMenu.appendChild(formatDiv);

    for (var fmt in formatList)
    dlButtonMenu.appendChild(createDLLink(formatList[fmt]));

    if (formatListMobile.length)
    {
    var mFormatDiv = document.createElement(«div»);
    mFormatDiv.className = «yt-uix-button-menu-item»;
    mFormatDiv.style.fontSize = «smaller»;
    mFormatDiv.style.fontWeight = «bold»;
    mFormatDiv.style.backgroundColor = «#EFEFEF»;
    mFormatDiv.style.cursor = «default»;
    var mFormatSpan = document.createElement(«span»);
    mFormatSpan.appendChild(document.createTextNode(«Или выберите совместимый с мобильным телефоном формат 3GP:»));
    mFormatDiv.appendChild(mFormatSpan);
    dlButtonMenu.appendChild(mFormatDiv);

    for (var fmt in formatListMobile)
    dlButtonMenu.appendChild(createDLLink(formatListMobile[fmt]));
    }

    if (updateNeeded == true || checkUpdates == true)
    {
    var updateDiv = document.createElement(«div»);
    updateDiv.className = «yt-uix-button-menu-item ytd-update-div»;
    updateDiv.style.fontSize = «smaller»;
    updateDiv.style.fontWeight = «bold»;
    updateDiv.style.backgroundColor = «#EFEFEF»;
    updateDiv.style.cursor = «default»;
    if (checkUpdates == true)
    updateDiv.style.display = «none»;
    var updateSpan = document.createElement(«span»);
    updateSpan.appendChild(document.createTextNode(«Доступна новая версия YouTube Video Download»));
    updateDiv.appendChild(updateSpan);
    dlButtonMenu.appendChild(updateDiv);

    var linkA = document.createElement(«a»);
    linkA.className = «yt-uix-button-menu-item ytd-update-link»;
    linkA.style.marginTop = «1px»;
    linkA.style.marginBottom = «1px»;
    if (checkUpdates == true)
    linkA.style.display = «none»;
    linkA.setAttribute(«href», «http://userscripts.org/scripts/source/62634.user.js»);

    var linkSpan = document.createElement(«span»);
    linkSpan.appendChild(document.createTextNode(«Нажмите здесь для обновления»));
    linkA.appendChild(linkSpan);
    dlButtonMenu.appendChild(linkA);
    }
    })((new Boolean(false)), (new Boolean(false)));

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *