- Необходимые материалы:
- Флэш-память:
- ICSP (внутрисхемное последовательное программирование):
- Схема и оборудование:
- Запись кода с использованием MPLAB IPE:
В наших двух предыдущих руководствах мы обсуждали Как начать работу с PIC с использованием компилятора MPLABX и XC8, мы также создали нашу Первую программу мигания светодиода с PIC и проверили ее с помощью моделирования. Пришло время заняться оборудованием. В этом уроке мы построим небольшую схему на Perf Board для мигания светодиода с помощью PIC. Мы сбросим программу на наш микроконтроллер PIC и проверим мигание светодиода. Для программирования PIC MCU мы будем использовать MPLAB IPE.
Необходимые материалы:
Как обсуждалось в нашем предыдущем уроке, нам потребуются следующие материалы:
- PicKit 3
- PIC16F877A IC
- 40 - Пин-держатель IC
- Перфорированная доска
- Кварцевый генератор 20 МГц
- Женские и мужские булавки Bergstick
- Конденсатор 33pf - 2Nos, 100 мкФ и 10 мкФ.
- Резисторы 680 Ом, 10 кОм и 560 Ом
- LED любого цвета
- 1 Комплект для пайки
- IC 7805
- Адаптер 12В
Что происходит, когда мы «сжигаем» микроконтроллер !!
Это обычная практика - загрузить код в MCU и заставить его работать внутри MCU.
Чтобы понять это, давайте взглянем на нашу программу
Как мы видим, этот код написан на языке C и не будет иметь смысла для нашего MCU. Вот тут-то и пригодится наш компилятор; компилятор это один, который преобразует этот код в читаемый вид машины. Эта машиночитаемая форма называется HEX-кодом, каждый создаваемый нами проект будет иметь HEX-код, который будет находиться в следующем каталоге
** Ваше местоположение ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Если вам так интересно узнать, как выглядит этот HEX-код, просто откройте его в блокноте. Для нашей программы Blink HEX-код будет выглядеть следующим образом:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Есть способы, как это прочитать, понять и отменить обратно на язык ассемблера, но это полностью выходит за рамки этого руководства. Итак, чтобы просто выразить это в двух словах; HEX - это окончательный программный результат нашего кодирования, и это то, что будет отправлено MPLAB IPE для записи MCU.
Флэш-память:
Код HEX хранится в MCU в месте под названием флэш - памяти. Флэш-память - это место, где наша программа будет храниться внутри MCU и выполняться оттуда. После того, как мы скомпилируем программу в нашем MPLABX, мы получим следующую информацию о типе памяти на консоли вывода.
Поскольку мы только что скомпилировали небольшую программу, мигающую светодиодом, сводка по памяти показывает, что мы только что израсходовали 0,5% доступного пространства программы и 1,4% пространства данных.
Память микроконтроллера PIC16F877 в основном делится на 3 типа:
Программная память: эта память содержит программу (которую мы написали) после того, как мы ее записали. Напоминаем, что Program Counter выполняет команды, хранящиеся в памяти программы, одну за другой. Поскольку мы написали очень маленькую программу, мы использовали только 0,5% от общего пространства. Это энергонезависимая память, поэтому сохраненные данные не будут потеряны после отключения питания.
Память данных: это тип памяти RAM, который содержит специальные регистры, такие как SFR (регистр специальных функций), который включает сторожевой таймер, сброс отключения питания и т. Д., И GPR (регистр общего назначения), который включает TRIS и PORT и т. Д. в памяти данных во время программы удаляются после выключения MCU. Любая переменная, объявленная в программе, будет находиться в памяти данных. Это также энергозависимая память.
Данные EEPROM (электрически стираемая программируемая постоянная память): память, которая позволяет сохранять переменные в результате записи записанной программы. Например, если мы присвоим переменной «a», чтобы сохранить в ней значение 5 и сохранить его в EEPROM, эти данные не будут потеряны, даже если питание будет выключено. Это энергонезависимая память.
Программная память и EEPROM являются энергонезависимой памятью и называются флэш-памятью или EEPROM.
ICSP (внутрисхемное последовательное программирование):
Мы будем программировать наш PIC16F877A, используя опцию ICSP, которая доступна в нашем MCU.
Итак, что такое ICSP?
ICSP - это простой способ, который помогает нам программировать микроконтроллер даже после того, как он помещен в нашу доску проекта. Нет необходимости иметь отдельную плату программатора для программирования MCU, все, что нам нужно, это 6 подключений программатора PicKit3 к нашей плате следующим образом:
1 |
VPP (или MCLRn) |
Войти в режим программирования. |
2 |
Vcc |
Вывод питания 11 или 32 |
3 |
GND |
Контакт заземления 12 или 31 |
4 |
PGD - Данные |
RB7. PIN40 |
5 |
PGC - Часы |
RB6. PIN 39 |
6 |
PGM - LVP включить |
RB3 / RB4. Не обязательно |
ICSP подходит для всех пакетов PIC; все, что нам нужно, это вытащить эти пять контактов (6-контактный PGM не является обязательным) от MCU к Pickit3, как показано на рисунке ниже.
Схема и оборудование:
Теперь у нас есть готовый HEX-код, и мы также знаем, как подключить наш PicKit 3 к нашему PIC MCU с помощью ICSP. Итак, давайте продолжим и спаяем схему с помощью схем ниже:
В приведенной выше схеме я использовал 7805 для регулирования выхода 5 В на мой PIC MCU. Этот регулятор будет питание от стены витрины адаптера 1. КРАСНЫЙ светодиод используется для индикации наличия питания на PIC. Разъем J1 используется для программирования ICSP. Контакты подключаются, как указано в таблице выше.
По умолчанию MCLR первого вывода должен быть установлен на высоком уровне с помощью 10 кОм. Это предотвратит сброс MCU. Для сброса MCU контакт MCLR должен быть заземлен, что можно сделать с помощью переключателя SW1.
Светодиод подключен к выводу RB3 через резистор номиналом 560 Ом (см. «Калькулятор резисторов светодиодов»). Если после загрузки нашей программы все в порядке, этот светодиод должен мигать в зависимости от программы. Вся схема построена на Perfboard путем пайки всех компонентов на ней, как вы можете видеть на изображении вверху.
Запись кода с использованием MPLAB IPE:
Чтобы записать код, выполните следующие действия:
- Запустите MPLAB IPE.
- Подключите один конец PicKit 3 к компьютеру, а другой конец - к контактам ICSP на перфорированной плате.
- Подключитесь к своему устройству PIC, нажав кнопку подключения.
- Найдите файл Blink HEX и нажмите «Программа».
Если все пойдет по плану, на экране должно появиться сообщение об успешном выполнении. Проверьте код и видео ниже для полной демонстрации и используйте раздел комментариев, если у вас есть какие-либо сомнения.
Спасибо!!!
Давайте встретимся в следующем руководстве, где мы поиграем с большим количеством светодиодов и переключателем.