Чтобы прошить PIC16F628A, понадобится программатор с поддержкой протокола ICSP, например PICkit 2, PICkit 3 или бюджетный K150, а также программа-оболочка вроде MPLAB IPE или MicroPro. Микроконтроллер программируется по пяти линиям: питание VDD и VSS, данные PGD, тактирование PGC и линия программирования VPP/MCLR. Процедура несложная даже для новичка, но требует аккуратности при подключении и правильного выставления битов конфигурации.

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

Что понадобится для прошивки PIC16F628A

Минимальный набор для работы с микроконтроллером включает программатор, сам чип и компьютер с установленным ПО. PIC16F628A выпускается в корпусах DIP-18 и SOIC, поэтому для удобства стоит запастись панелькой или переходником.

  • 🔌 Программатор — PICkit 2/3, K150, ICD или совместимый клон с поддержкой ICSP.
  • 💻 Компьютер с программой MPLAB IPE, MicroPro (для K150) или PICkit Programmer.
  • 🧩 Панелька DIP-18 или адаптер под корпус вашей микросхемы.
  • 📄 HEX-файл прошивки, скомпилированный именно под PIC16F628A.
  • 🔋 Источник питания 5 В, если программатор не питает целевую схему сам.
💡

Перед прошивкой сверьте маркировку на корпусе: PIC16F628A отличается от старого PIC16F628 и от PIC16F84A по расположению выводов питания — путать их нельзя.

Распиновка и схема подключения

Для программирования используются пять линий интерфейса ICSP. У PIC16F628A в корпусе DIP-18 задействованы следующие выводы:

Сигнал ICSPВывод PIC16F628A (DIP-18)Назначение
VDD14Питание +5 В
VSS (GND)5Общий провод
PGD13 (RB7)Данные программирования
PGC12 (RB6)Тактовый сигнал
VPP/MCLR4Напряжение программирования / сброс

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

⚠️ Внимание: на линию VPP программатор подаёт напряжение выше питающего (порядка 12–13 В для высоковольтного режима). Если микросхема стоит в готовом устройстве, убедитесь, что эта линия отвязана от остальной схемы, иначе возможно повреждение компонентов.
Что делать, если VPP нагружена в схеме

Обычно между MCLR и питанием ставят диод или резистор с джампером, который на время прошивки размыкают. Точную схему развязки смотрите в документации на конкретное устройство или в аппнотах Microchip по ICSP.

Выбор программатора

Наиболее безболезненный вариант — оригинальный или совместимый PICkit 2/PICkit 3: они питают целевой чип сами, автоматически определяют микроконтроллер и работают с фирменной утилитой. K150 дешевле, но требует ручной установки перемычек на плате под конкретный тип корпуса и иногда капризничает с современными версиями Windows из-за драйверов порта.

Самодельные программаторы для COM-порта (например, классический JDM) сейчас используют редко: на компьютерах без аппаратного COM-порта и с USB-переходниками они работают нестабильно. Если программатор у вас уже есть, проверьте в его документации, что PIC16F628A входит в список поддерживаемых.

📊 Каким программатором вы прошиваете PIC-контроллеры?
PICkit 2 / PICkit 3
K150
Самодельный (JDM и др.)
Только собираюсь покупать

Пошаговая инструкция прошивки

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

☑️ Готовность к прошивке

Выполнено: 0 / 5

Сначала подключите программатор к компьютеру и запустите программу. В MPLAB IPE выберите в поле устройства PIC16F628A, укажите подключённый инструмент и нажмите Connect. Если используется питание от программатора, включите опцию Power target circuit from tool в настройках.

Затем загрузите HEX-файл через пункт меню File → Import → Hex (в других утилитах — кнопка «Открыть»). После загрузки нажмите Program и дождитесь окончания записи. Завершающий шаг — верификация: программа считывает память чипа и сравнивает её с файлом. Сообщение об успешной проверке означает, что прошивка записана корректно.

⚠️ Внимание: не извлекайте микросхему из панельки и не отключайте программатор во время записи и верификации — прерванный цикл может оставить чип в неконсистентном состоянии, и его придётся стирать и прошивать заново.
💡

Успешная прошивка = три этапа без ошибок: подключение (Connect), запись (Program), верификация (Verify). Сбой на любом этапе указывает на конкретную проблему.

Биты конфигурации: что важно не пропустить

Configuration bits определяют ключевые режимы работы PIC16F628A: источник тактирования, сторожевой таймер, защиту кода. Обычно они уже записаны внутри HEX-файла, и программа применит их автоматически. Но если файл собран без конфигурации или вы прошиваете чужой дамп, параметры придётся выставить вручную.

Особое внимание — на выбор генератора: если прошивка рассчитана на внутренний RC-генератор, а в конфигурации указан внешний кварц (или наоборот), микроконтроллер после установки в устройство просто не запустится. Также проверьте бит MCLRE — он определяет, работает ли вывод 4 как сброс или как обычный порт ввода.

💡

Если устройство после прошивки «мёртвое», первым делом сравните биты конфигурации с описанием проекта, под который собрана прошивка — это самая частая причина незапуска при корректно записанном HEX.

Типичные ошибки и их устранение

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

  • 🔍 Неверная ориентация микросхемы в панельке — проверьте положение ключа (выемки на корпусе).
  • 🔌 Плохой контакт — окисленные или погнутые ножки, непропай в самодельном адаптере.
  • Нет питания целевого чипа — не включена подача VDD от программатора или не подан внешний источник.
  • 🧷 Неправильные перемычки на K150 — для каждого типа корпуса они выставляются по таблице из инструкции к программатору.
  • 💾 HEX не под этот контроллер — файл для PIC16F84A или PIC16F628 не подойдёт, несмотря на похожие названия.

Если программа выдаёт ошибку верификации по конкретному адресу, попробуйте выполнить полное стирание (Erase) и записать прошивку заново. Устойчивые ошибки на разных чипах обычно указывают на неисправность самого программатора или проблему с USB-подключением.

Часто задаваемые вопросы

Можно ли прошить PIC16F628A без программатора, через Arduino?

Существуют любительские проекты, где Arduino выполняет роль ICSP-программатора для PIC, но они требуют точной реализации временных диаграмм и формирования напряжения VPP. Это экспериментальный путь: для разовой прошивки надёжнее и дешевле приобрести готовый программатор.

Чем отличается PIC16F628 от PIC16F628A при прошивке?

Это разные микросхемы, и в программе нужно выбирать именно тот тип, который стоит у вас. Версия с буквой «A» — более поздняя ревизия; прошивки и алгоритмы программирования у них могут различаться, поэтому ориентируйтесь на маркировку на корпусе.

Что делать, если установлен бит защиты кода (Code Protect)?

Прошивку с защищённого чипа считать нельзя — при чтении вернутся нули или мусор. Однако записать новую программу можно: выполните полное стирание, которое снимает защиту вместе со старым кодом, и прошейте микроконтроллер заново.

Нужен ли внешний кварц при программировании?

Нет. Во время прошивки тактирование обеспечивает программатор по линии PGC, поэтому ни кварц, ни другая внешняя обвязка не требуются. Генератор понадобится уже при работе прошитого чипа в устройстве — если это предусмотрено его схемой и битами конфигурации.

Сколько раз можно перепрошивать PIC16F628A?

Память Flash у микроконтроллеров этого семейства рассчитана на большое количество циклов перезаписи, поэтому для любительской практики ресурс практически неисчерпаем. Точное гарантированное число циклов указано в даташите Microchip на конкретную модель.