Программа для прошивки pic контроллеров
В связи с нововведениями на сайте, решил наконец-то вылезти из подполья и написать что-нибудь полезное. Ну а поскольку я программирую разные микроконтроллеры (МК) и являюсь фанатом Eclipse, то решил про это и написать. Начну со своей истории знакомства с программированием PIC, а закончу советами тем, кто по долгу службы или в силу увлечения программирует на МК семейства PIC, хотя, впрочем, эти же советы сгодятся и для других архитектур МК.
В среду железячников я попал в 2006 году на 4-м курсе учёбы в университете, когда пошёл на производственную практику в научно-технический центр, где, собственно, и работаю по сей день. В то время в нашей компании мейнстримом было использование Keil uVision2 для МК на базе C51 и ARM. Однако мне подсовывали простые задачи под PIC, вроде контроля и управления одним сигналом (кнопка вкл-выкл), и моей первой средой разработки были блокноты — бумажный и компьютерный, плюс книжки бумажные по PIC. Выглядела моя среда разработки примерно так:
Для компиляции файлов мне выдали экзешник компилятора и bat-файл, который использовался мной совершенно бездумно — даже не знаю, что за компилятор там был. В общем, суровые были времена…
Потом был MPASM, но он убогий и мне про него почти нечего вспоминать. По-моему, под него я также писал в блокноте программки.
MPLAB IDE
По мере совершенствования своих навыков я узнал, что вместо блокнота можно использовать наикрутейшую, как мне тогда казалось, MPLAB IDE:
В её состав входят:
- CC18 и ещё какой-то компилятор, которые можно выбирать в настройках проекта;
- хороший набор библиотечных функций;
- подключаемые inc-файлы описания МК семейства PIC, заточенные под использование в ассемблере;
- встроенный отладчик и программатор;
- Но главное — поддержка языка Си — это был для меня глоток свежего воздуха!
MikroC
Задачи для PIC мне подкидывали всё реже и реже, начали набирать обороты разработки с МК серии C51, ARM7 (не путать с ARMv7!), Cortex-M. Но иногда ко мне снова обращались за помощью в написании программ под PIC, а я в силу любопытства пробовал новые средства разработки.
К тому времени уже давно и активно программировал в Keil uVision3 — возвращаться к допотопному MBLAB IDE совершенно не хотелось. Так я познакомился с MikroC, который поставляется вместе с программаторами PICKit:
Набор плюшек почти такой же как в MBLAB IDE, но всё же побогаче:
- свой собственный компилятор
- встроенные библиотеки функций с удобным поиском и доступным описанием;
- подключаемые h-файлы описания МК семейства PIC;
- набор дополнительных внешних утилит
- широкий спектр примеров с исходниками
- встроенный отладчик и программатор;
- встроенные вкладки открытых файлов;
- навигация по функциям в файле
Так или иначе, сделав очередной проект в MikroC, я благополучно забыл про PIC'и и думал, что уже никогда к ним не вернусь.
Однако история любит повторяться!
Через 3 года, в 2013 году, появилась задача разработать ПО по готовой КД, в которой был заложен PIC18F4680. Честно, я даже не знал, что среди PIC'ов бывают такие монстры, всегда имел дело только с мелочью!
Задачи были нетривиальные — реализация загрузчика для внутрисхемного обновления ПО, работа в режиме жёсткого реального времени, работа с АЦП, внешними ЦАП, линиями управления, несколькими таймерами-компараторами.
Кстати, немного отвлекаясь от темы: только на этом проекте я в полной мере понял, что такое банки памяти в PIC, как они работают и какие ограничения накладывают на разработку ПО. К примеру, все банки у МК по 256 байт. И хоть убейся, но для PIC нельзя создать структуру, превыщающую по объёму эти 256 байт — ограничение всплыло наружу при реализации протокола обмена, ну да ладно, проехали…
К этому времени Keil uVision3 мне уже изрядно поднадоел, поскольку сложность проектов росла и мне не хватало имевшегося в Keil функционала. Где-то с 2011 года я освоил Eclipse, GCC, синтаксис makefile — и все свои проекты начал вести с использованием этих инструментов. К тому же, у меня уже был опыт применения связки Eclipse + SDCC для реализации проекта под C51 МК. После появления Keil uVision4 я его установил, протестировал пол-часика и снёс, ибо по удобству программирования он всё равно сильно отстаёт от Eclipse.
Eclipse + SDCC
В настоящее время Eclipse де-факто является стандартом в области разработки ПО для встраиваемых систем. Вот список IDE, основанных на Eclipse, от популярных брендов:
- NXP LPCXpresso IDE
- Freescale CodeWarrior
- Xilinx Platform Studio
- Texas Instruments CCS
- Android Development Tools
Главной проблемой чистого Eclipse для разработки на C/C++ под МК является сложность вхождения в него железячных программистов, замена привычных инструментов, работающих после установки в 1-2 клика, на какие-то плагины, требующие настройки, или, что ещё хуже, на вручную написанные makefile — всё это требует значительных первоначальных усилий по чтению и изучению документации, поиску помощи и пособий для начинающих в интернете. Говорю как человек, имеющий опыт по переводу команды программистов-железячников на Eclipse.
Коли прочитали эту статью — дайте знать, я хоть узнаю, как у нас читают профильные хабы на Хабрахабре
Однако, за месяц полностью освоив синтаксис и один раз написав качественный makefile, все остальные проекты создаются по накатанному шаблону и требуют лишь минимальной индивидуальной настройки.
Также пришлось сделать ряд дополнительных телодвижений по настройке проектов под PIC — по умолчанию Eclipse понимает синтаксис GCC. Различные макросы и директивы, встроенные в другие компиляторы (будь то СС18 или SDCC), приходится разделять на этапе компиляции и на этапе индексации проекта. Чтобы при навигации в коде редактор не выдавал ложных ошибок на неизвестные директивы, к исходникам проекта подключается файл eclipse-syntax.h:
Эпилог
Как видно, в итоге я пришёл к использованию связки Eclipse с внешними компиляторами. Изучение опций компиляции — дело нужное и не столь сложное, чтобы просто так от него отказываться — любой программист сможет их изучить и применить при необходимости. Думаю, в итоге у меня получилась идеальная связка, доступная на сегодняшний день для создания проектов под PIC.
- CC18 для PIC
- SDCC для C51
- gnu-arm-embedded для ARM7 и Cortex-M
- MinGW для x86
Надеюсь, прочитав мою историю, кто-то решится наконец для себя сойти со старых IDE и освоить новые.
Консольная программа для считывания, изменения и записи содержимого памяти микроконтроллеров архитектуры AVR, применяющая технологию внутрисхемного программирования. Есть русифицированные графические оболочки. Freeware
Мощная среда разработки с открытым исходным кодом, созданная с целью написания программ для микроконтроллеров серии AVR от компании Atmel. Freeware
Среда разработки программного кода для микроконтроллеров серии AVR компании Atmel на языке, подобном стандартному Бейсику. Freeware (бесплатная с ограничением на код 4 кБ) и Shareware
IDE для AVR микроконтроллеров. Из основных достоинств CodeVisionAVR можно отметить то, что он не слишком сложен для самостоятельного освоения, поддерживает все многочисленное семейство микроконтроллеров AVR, формирует емкий и результативный программный код. Платная, есть бесплатная Evaluation-версия с ограничением на код 4 кБ.
Инструмент для разработки и отладки программного кода, а также моделирования работы радиотехнических устройств на базе AVR микроконтроллеров. Freeware
Среда разработки, выполненная на базе открытой системы Arduino IDE и предназначенная специально для контроллеров PIC32 от компании Microchip Technology.
Небольшой, но весьма эффективный бесплатный программный пакет для прошивки PIC-микроконтроллеров различных серий. Есть русский язык.
Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования. Freeware
Бесплатная высокоинтегрированная программная среда, предназначенная для разработки кода микроконтроллеров архитектуры ARM и др.
Среда разработки, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров различных семейств. Платная, но есть демоверсия с рядом ограничений, в т.ч. на размер кода - не более 32 КБ.
Многофункциональная среда разработки приложений на языках C, C++ и ассемблере для целого ряда микроконтроллеров от различных производителей. Среда разработки платная, но бесплатная версия с ограничениями на размер кода в зависимости от микроконтроллера.
Один из передовых графических языков программирования для микроконтроллеров. Поддержка русского языка. Платная, но есть бесплатная версия с ограничениями и только для микроконтроллеров PIC.
Бесплатная графическая среда программирования для разработки приложений под микроконтроллеры с архитектурой AVR от отечественных разработчиков.
Мощнейшая среда разработки программ для микроконтроллерных устройств, включающая редактор кода, компилятор, отладчик, программные и аппаратные библиотеки, использующие готовые функции. Программа платная. Есть бесплатная версия с ограничениями.
Мощная среда разработки приложений на языке Паскаль для различных архитектур микроконтроллеров. Программа платная. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).
Среда разработки программ на языке Бейсик для микроконтроллеров различных производителей. Программа платная от 199$. Есть бесплатная версия с ограничениями на размер кода (до 4096 байт).
Программа для создания и отладки кода, написанного на языке программирования BASIC, под PIC-микроконтроллеры. Программа платная 50$. MicroCode Studio – облегченный, бесплатный вариант с ограничением на кол-во строк кода.
Одна из самых популярных бесплатных оболочек для программирования, поддерживающая огромное число микроконтроллеров, ППЗУ и адаптеров различной конструкции. На русском языке.
Нетребовательная и многофункциональная программа - программатор, предназначенная для работы с микроконтроллерами и постоянными запоминающими устройствами с последовательным доступом различных производителей. На русском языке.Freeware.
Графическая оболочка для программы AVRdude, включающая в себя простой и функциональный AVR fuse-калькулятор. Freeware.
Графическая оболочка для популярной программы AVRDUDE, использующейся при прошивке микроконтроллеров компании Atmel. Freeware.
Простое программное обеспечение для прошивки PIC-микроконтроллеров, отличающееся стабильностью, качеством и скоростью программирования.
Приложение PICPgm Development Programmer (или просто PICPgm) имеет простой, дружелюбный графический интерфейс и предназначено для работы с микроконтроллерами семейства PIC. Основное окно пакета состоит из меню, панели инструментов, рабочей части со вкладками и строки состояния. В настоящее время программа поддерживает 660 микросхем, принадлежащих разным сериям: PIC10F, PIC12F, PIC16F, PIC18F, PIC24H, PIC24F, dsPIC30F, dsPIC33F. Пакет способен взаимодействовать с множеством различных программаторов, которые могут быть подключены к компьютеру через USB, принтерный порт или последовательный COM-порт. Выбрать используемый программатор можно в настройках приложения. Среди прочих в списке есть такие популярные программаторы, как PICPgm USB и PICPgm LVISP, JDM, Microchip AN589, Trivial LVP, EPIC Parallel Port, P16PRO40, целая группа Olimex программаторов, а также многие другие.
Программное обеспечение работает с flash-памятью, внутренним EEPROM и конфигурационными битами согласно данным из hex-файла. В PICPgm имеются стандартные для подобного рода программ функции: чтение содержимого микроконтроллера и запись его в hex-файл, очистка памяти чипа, верификация, автоопределение модели программатора и микроконтроллера, проверка объема свободной памяти контроллера. Поддерживаются методики низковольтного и внутрисхемного (ISP) программирования. Кроме того могут быть сконфигурированы выводы программатора.
Каждый hex-файл представлен на рабочем окне вкладками: «Code Mem», «Data Mem», «Config Mem» и «Config Bits», в которых можно найти всю необходимую информацию. В отдельной вкладке ведется запись всех происходящих событий. Для начала работы необходимо подключить программатор и прошиваемое устройство. При запуске софта большинство аппаратных средств (и программаторы, и PIC-микроконтроллеры) распознаются автоматически. Все это можно установить и самостоятельно в окне настроек, выбрав нужные модели из предлагаемых списков. После этого остается указать путь к файлу прошивки формата *.hex и нажать на кнопку «Programm PIC».
Программа PICPgm идеально подходит для начинающих пользователей, желающих заняться программированием с минимальными затратами и усилиями. Среди основных недостатков программного обеспечения стоит отметить тот факт, что все программы, которые будут загружаться в микроконтроллер с помощью PICPgm, должны быть представлены в виде файлов с расширением *.hex. Если исполняемая программа написана на каком-либо другом языке (например, C), то понадобится стороннее программное обеспечение, которое преобразует код. Существуют различные компиляторы, предназначенные специально для программирования различных типов микроконтроллеров PIC: MicroC, MPLAB. Каждый из них создаст нужный hex-файл.
PICPgm был разработан усилиями небольшой группы программистов. Руководителем проекта является Christian Stadler. Первая версия пакета вышла в 2004 году, с тех пор авторы регулярно обновляют программу.
PICPgm Development Programmer полностью бесплатен и свободно распространяется в интернете. Данное программное обеспечение небольшое по размеру, но требует инсталляции. Последняя версия доступна на официальном сайте. Также на сайте представлены электрические схемы программаторов.
Данное приложение написано на английском языке, русификатора к нему нет.
Доступны версии PICPgm для операционных систем Linux, Microsoft Windows (98, ME, 2000, XP, Vista, 7 – 32- и 64-разрядных) и MacOS X (экспериментальная версия). Проблем с совместимостью в ОС Windows Vista и Windows 7 не обнаружено. Версия программы для Windows включают в себя драйвер для доступа к параллельному порту. Кроме того для ОС Windows и Linux существует вариант программы с командной строкой (то есть без графического интерфейса), который имеет те же возможности, но управляется с помощью аргументов командной строки.
Небольшой, но весьма эффективный бесплатный программный пакет для прошивки PIC-микроконтроллеров различных серий.
В настройках программы предлагаются различные варианты рабочих программаторов. Помимо прочих поддерживаются JDM-программаторы, LPT-программаторы с внешним питанием, а также современные GTP-USB программаторы, разработанные для прошивки PIC-контроллеров и микросхем памяти через USB интерфейс.
В среде WinPic800 предусмотрена возможность запуска процесса прошивки из любой внешней программы аналогичного рода (например, компилятора mikroPascal), кроме того существует функция проверки кода после окончания программирования. На рабочем экране утилиты каждый hex-файл отображается в виде трех вкладок: «Code», «Config» и «EEprom», в которых содержится вся необходимая информация. В отличие от PonyProg и других аналогичных программ в среде WinPic800 максимально упрощена работа с fuse-битами и подбором таймингов при синхронизации различных микропроцессоров в процессе прошивки.
Программный пакет WinPic800 абсолютно бесплатный и свободно распространяется в сети. Он регулярно обновляется. Данный софт требует инсталляции, в процессе его будет самостоятельно установлен драйвер. После первого запуска программы рекомендуется зайти в окно настроек и установить свои собственные значения, а также выбрать из списка используемый в работе программатор и порт подключения.
Рассматриваемая программная среда имеет поддержку пары десятков различных языков, включая русский. Однако, как и в некоторых других, криво переведенных программах, данная возможность реализована не в полной мере – ряд русских шрифтов пользовательского интерфейса отображается в виде набора случайных символов. Выбор необходимого языка осуществляется с помощью вкладки меню «Language».
Пакет был разработан небольшой группой программистов-радиолюбителей из Испании. Руководитель проекта называет себя Francisco J. Benach Font. К сожалению более подробной информации о нем и его деятельности нет. Помимо обновления WinPic800 разработчики продают к программе комплекты PCB, кабели, универсальные PIC-, Atmel-, EEPROM-программаторы собственной разработки, а также модули GTP-USB+ с разъемами ZIF и DIP для разных серий микроконтроллеров.
Программа WinPic800 работоспособна в операционных средах Microsoft Windows 98/NT/2000/Me/XP/Vista/7.
Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.
Первым делом необходимо скачать документацию по выбранному микроконтроллеру. Достаточно зайти на сайт производителя и скачать Datasheet.
На первых страницах перечислены основные характеристики МК (русское описание).
- микроконтроллер содержит внутренний генератор на 4 MHz, так же можно подключить внешний кварц частотой до 20 MHz
- 16 ног микроконтроллера можно использовать как цифровые входы\выходы
- есть 2 аналоговых компаратора
- 3 таймера
- CCP модуль
- USART модуль
- 128 байт энергонезависимой памяти EEPROM
Схема расположения выводов:
Vdd — питание.
Vss — земля.
Это минимум, необходимый для работы МК.
Остаются доступными 16 ног МК. Не сложно посчитать, что использование каждой ноги каким-либо модулем уменьшает максимальное число используемых цифровых портов.
Компилятор
Как я уже писал в предыдущих статьях, самым простым и легким я посчитал компилятор JAL с IDE JALEdit.
Качаем JALPack, устанавливаем.
В этом паке содержаться все необходимые библиотеки, а так же примеры их использования.
Запускаем JALEdit. Открываем пример програмы для нашего микроконтроллера: 16f628a_blink.jal, дабы не портить исходник, сразу сохраняем ее в новый файл, к примеру, 16f628a_test.jal.
-
выбор МК и его конфигурация
include 16f628a -- подключение библиотеки нашего МК
--
-- This program assumes a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
pragma target clock 20_000_000 -- oscillator frequency
-- configuration memory settings (fuses)
pragma target OSC HS -- HS crystal or resonator
pragma target WDT disabled -- no watchdog
pragma target LVP disabled -- no Low Voltage Programming
pragma target MCLR external -- reset externally
--
Если прочитать комментарии, то станет ясно, что данная программа рассчитана на использование внешнего кварца 20MHz.
Так как у нас его пока нет, разберемся с конфигурацией и перепишем программу на использование внутреннего генератора.
Конфигурация
В разных микрокотнролерах существуют различные наборы конфигурационных битов. Узнать о назначении каждого бита можно в даташите (стр. 97).
В подключенной библиотеке каждому биту и каждому его значению присвоена читабельная переменная, остается только выбрать необходимые нам параметры.
-- Symbolic Fuse definitions
-- -------------------------
--
-- addr 0x2007
--
pragma fuse_def OSC 0x13 < -- oscillator
RC_CLKOUT = 0x13 -- rc: clkout on ra6/osc2/clkout, rc on ra7/osc1/clkin
RC_NOCLKOUT = 0x12 -- rc: i/o on ra6/osc2/clkout, rc on ra7/osc1/clkin
INTOSC_CLKOUT = 0x11 -- intosc: clkout on ra6/osc2/clkout, i/o on ra7/osc1/clkin
INTOSC_NOCLKOUT = 0x10 -- intosc: i/o on ra6/osc2/clkout, i/o on ra7/osc1/clkin
EC_NOCLKOUT = 0x3 -- ec
HS = 0x2 -- hs
XT = 0x1 -- xt
LP = 0x0 -- lp
>
pragma fuse_def WDT 0x4 < -- watchdog timer
ENABLED = 0x4 -- on
DISABLED = 0x0 -- off
>
pragma fuse_def PWRTE 0x8 < -- power up timer
DISABLED = 0x8 -- disabled
ENABLED = 0x0 -- enabled
>
pragma fuse_def MCLR 0x20 < -- master clear enable
EXTERNAL = 0x20 -- enabled
INTERNAL = 0x0 -- disabled
>
pragma fuse_def BROWNOUT 0x40 < -- brown out detect
ENABLED = 0x40 -- enabled
DISABLED = 0x0 -- disabled
>
pragma fuse_def LVP 0x80 < -- low voltage program
ENABLED = 0x80 -- enabled
DISABLED = 0x0 -- disabled
>
pragma fuse_def CPD 0x100 < -- data ee read protect
DISABLED = 0x100 -- disabled
ENABLED = 0x0 -- enabled
>
pragma fuse_def CP 0x2000 < -- code protect
DISABLED = 0x2000 -- off
ENABLED = 0x0 -- on
>
Изменим конфигурацию под себя:
pragma target clock 4_000_000 -- указываем рабочую частоту, необходимо для некоторых функций расчета времени
-- конфигурация микроконтроллера
pragma target OSC INTOSC_NOCLKOUT -- используем внутренний генератор
pragma target WDT disabled -- сторожевой таймер отключен
pragma target PWRTE disabled -- таймер питания отключен
pragma target MCLR external -- внешний сброс активен
pragma target BROWNOUT disabled -- сбос при падении питания отключен
pragma target LVP disabled -- программирование низким напряжением отключено
pragma target CPD disabled -- защита EEPROM отключена
pragma target CP disabled -- защита кода отключена
Моргаем светодиодом по нажатию кнопки
Модифицируем программу так, что бы светодиод моргал только тогда, когда зажата кнопка.
Решив данную задачу мы научимся работать с цифровыми портами как в режиме входа, так и в режиме выхода.
Цифровой выход
Выберем еще неиспользуемую ногу МК. Возьмем, к примеру, RB5(pin 11). Данная нога не имеет дополнительных функций, потому она нам более нигде не понадобится.
В режиме цифрового выхода МК может притягивать к ноге либо питание, либо землю.
Подключать нагрузку можно как к плюсу, так и к минусу. Разница будет лишь в том, когда и в какую сторону потечет ток.
В первом случае ток потечет от МК при установке единицы, а во втором — к МК при установке нуля.
Дабы светодиод зажигался от логической единицы, остановимся на первом варианте.
Для ограничения тока через ногу (максимально допустимо 25 мА на цифровой вход или 200 мА на все порты) установлен токоограничительный резистор. По простейшей формуле высчитываем минимальное значение в 125 Ом. Но так как предел нам не нужен, возьмем резистор в 500 Ом (а точнее ближайший подходящий).
Для подключения более мощной нагрузки можно использовать транзисторы в различных вариантах.
Цифровой вход
Возьмем вторую неиспользуемую нигде ногу — RB4 (pin 10, указанная в распиновке функция PGM отностися к LVP, который мы отключили).
В режиме цифрового входа микроконтроллер может считывать два состояния: наличие или отсутствие напряжения. Значит нам необходимо подключить кнопку так, что бы в одном состоянии на ногу шел плюс, а во втором состоянии — к ноге подключалась земля.
В данном варианте резистор используется в качестве подтяжки (Pull-up). Обычно для подтяжки применяют резистор номиналом 10 кОм.
Впрочем, подтягивающий резистор не всегда необходим. Все ноги PORTB (RB0-RB7) имеют внутреннюю подтяжку, подключаемую программно. Но использование внешней подтяжки куда надежнее.
Можно подключать не только кнопку, главное помнить о ограничении тока через МК.
Кнопка сброса
Пока не забыли, что мы активировали внешний сброс, добавим аналогичную кнопку на ногу MCLR (pin 4).
После нажатия такой кнопки МК начнет выполнение программы с нуля.
Прошивка
Присваиваем нашему светодиоду и кнопке переменные:
enable_digital_io() -- переключение всех входов\выходов на цифровой режим
--
alias led is pin_B5 -- светодиод подключен к RB5
pin_B5_direction = output -- настраиваем RB5 как цифровой выход
--
alias button is pin_B4 -- кнопка подключена к RB4
pin_B4_direction = input -- настраиваем RB4 как вход
led = off -- выключаем светодиод
Теперь присваивая переменной led значения 1 или 0 (on или off, true или false, другие алиасы..) мы будем подтягивать к нужной ноге МК или плюс, или минус, тем самым зажигая и гася светодиод, а при чтении переменной button мы будем получать 1 если кнопка не нажата и 0 если кнопка нажата.
Теперь напишем необходимые нам действия в бесконечном цикле (эти действия будут выполняться постоянно. При отсутствии бесконечного цикла МК зависнет):
forever loop
led = off -- выключаем светодиод
_usec_delay( 500000 ) -- ждем 0,5 сек
if Button == 0 then -- если кнопка нажата, выполняем действия
led = on -- зажигаем светодиод
_usec_delay( 500000 ) -- ждем 0,5 сек
end if
end loop
Задержка считается просто:
частота генератора у нас 4MHz. Рабочая частота в 4 раза меньше: 1 MHz. Или 1 такт = 1 мкс. 500.000 мкс = 0,5 с.
Теперь нам необходимо записать эту прошивку в МК, собрать устройство согласно схеме и проверить, что у нас все получилось как надо.
Программатор
Все таже схема:
- PGD — pin 13
- PGC — pin 12
- MCLR(Vpp) — pin 4
- Vdd — pin 14
- Vss — pin 5
Некачественная пайка — одна из основных проблем неработоспособности устройства.
Не повторяйте мои плохие привычки: не используйте навесной монтаж.
В качестве питания 5В в данном случае использовался хвост от старой PS/2 мыши, вставленный в разъем для мыши.
Подключаем к компьютеру.
Качаем и запускаем WinPic800.
Идем в Settings->Hardware, выбираем JDM и номер порта, на котором висит программатор
Нажимаем Hardware Test, затем Detect Device
Открываем нашу прошивку pic628a_test.hex
На вкладке Setting можно проверить, что конфигурационные биты выставлены верно, при желании тут же их можно изменить
Program All, затем Verify All
Если ошибок не возникло, продолжаем паять.
Результат
От программатора нам мешает только высокое напряжение (12в) на MCLR. Дабы не отпаивать весь программатор, можно отпаять только один провод… Или просто не подключать программатор к COM порту. Остальные провода нам мешать не будут (а подключенные питание и земля только упростят пайку).
Кнопку на MCLR паять можно по желанию, но подтяжка обязательна.
При повторном подключении программатора резистор необходимо будет убрать, иначе он подтянет 12в к питанию.
Результат работы можно увидеть на видео.
Итак, у нас получилось самое простое устройство на микроконтроллере: мигалка светодиодом.
Теперь нам необходимо научиться пользоваться всей оставшейся периферией, но об этом в следущей статье.
Читайте также: