- Готовимся к программированию:
- Создание нового проекта с использованием MPLAB-X:
- Знакомство с регистрами конфигурации:
- Установка битов конфигурации в MPLAB-X:
- Программирование PIC для мигания светодиода:
- Принципиальная схема и моделирование Proteus:
Это второй урок из нашей серии уроков по PIC. В нашем предыдущем руководстве «Начало работы с микроконтроллером PIC: введение в PIC и MPLABX» мы узнали основные сведения о нашем микроконтроллере PIC, мы также установили необходимое программное обеспечение и приобрели новый программатор PicKit 3, который мы скоро будем использовать. Теперь мы готовы приступить к работе с нашей Первой программой мигания светодиода с использованием PIC16F877A. В этом руководстве мы также узнаем о регистрах конфигурации.
В этом руководстве предполагается, что вы установили необходимое программное обеспечение на свой компьютер и знаете некоторые приличные основы PIC MCU. Если нет, вернитесь к предыдущему руководству и начните с него.
Готовимся к программированию:
Поскольку мы решили использовать PIC16F877A, с компилятором XC8 давайте начнем с их таблицы данных. Я рекомендую всем загрузить PIC16F877A Datasheet и руководство по компилятору XC8, поскольку мы будем часто обращаться к ним по мере прохождения нашего руководства. Всегда полезно прочитать полное техническое описание любого микроконтроллера, прежде чем мы действительно начнем с ним программировать.
Теперь, прежде чем мы откроем наш MPLAB-X и начнем программировать, есть несколько основных вещей, о которых нужно знать. В любом случае, поскольку это наша первая программа, я не хочу болтать о вас, люди с большим количеством теории, но мы остановимся здесь и там, когда мы будем программировать, и я объясню вам вещи как таковые. Если у вас нет времени, чтобы прочитать все это, просто взгляните и перейдите к видео внизу страницы.
Создание нового проекта с использованием MPLAB-X:
Шаг 1: Запустите среду разработки MPLAB-X, которую мы установили в предыдущем классе, после загрузки она должна выглядеть примерно так.
Шаг 2: Нажмите «Файлы» -> «Новый проект» или воспользуйтесь сочетанием клавиш Ctrl + Shift + N. Вы получите следующее всплывающее окно, в котором вам нужно выбрать Standalone Project и нажать Next.
Шаг 3: Теперь нам нужно выбрать наше устройство для проекта. Поэтому введите PIC16F877A в раскрывающемся разделе « Выбор устройства ». После этого все должно быть так, а затем нажмите «Далее».
Шаг 4: Следующая страница позволит нам выбрать инструмент для нашего проекта. Это будет PicKit 3 для нашего проекта. Выберите PicKit 3 и нажмите "Далее".
Шаг 5: На следующей странице будет предложено выбрать компилятор, выбрать компилятор XC8 и нажать «Далее».
Шаг 6: На этой странице мы должны назвать наш проект и выбрать место, где проект должен быть сохранен. Я назвал этот проект Blink и сохранил его на своем рабочем столе. Вы можете назвать и сохранить его по своему усмотрению. Наш проект будет сохранен в виде папки с расширением .X, который может быть запущен напрямую с помощью MAPLB-X. По завершении нажмите Готово.
Шаг 7: Вот и все !!! Наш проект создан. В крайнем левом окне будет показано имя проекта (здесь мигает), щелкните по нему, чтобы мы могли просмотреть все каталоги внутри него.
Чтобы начать программирование, нам нужно добавить основной файл C в каталог с исходными файлами. Для этого просто щелкните правой кнопкой мыши исходный файл и выберите New -> C Main File, как показано на изображении ниже.
Шаг 8: Появится следующее диалоговое окно, в котором должно быть упомянуто имя C-файла. Я снова назвал его в Blink, но выбор остается за вами. Назовите его в столбце «Имя файла» и нажмите «Готово».
Шаг 9: После создания основного файла C среда IDE откроет его для нас с некоторыми кодами по умолчанию в нем, как показано ниже.
Шаг 10: Вот и все, теперь мы можем начать программировать наш код в файле C-main. Код по умолчанию не будет использоваться в наших руководствах. Итак, давайте полностью удалим их.
Знакомство с регистрами конфигурации:
Перед тем, как начать программировать любой микроконтроллер, мы должны узнать о его регистрах конфигурации.
Так что же это за регистры конфигурации, как и зачем их настраивать?
Устройства PIC имеют несколько мест, которые содержат биты конфигурации или предохранители. Эти биты определяют основные операции устройства, такие как режим генератора, сторожевой таймер, режим программирования и защиту кода. Эти биты должны быть установлены правильно для запуска кода, иначе у нас будет неработающее устройство . Поэтому очень важно знать об этих регистрах конфигурации, прежде чем мы начнем с нашей программы Blink.
Чтобы использовать эти регистры конфигурации, мы должны прочитать техническое описание и понять, какие типы битов конфигурации доступны и их функции. Эти биты могут быть установлены или сброшены в соответствии с нашими требованиями к программированию с помощью директивы конфигурации.
Прагма имеет следующие формы.
# параметр конфигурации pragma = значение состояния # регистр конфигурации pragma = значение
где настройка - это дескриптор настройки конфигурации, например, WDT, а состояние - это текстовое описание желаемого состояния, например ВЫКЛ. Рассмотрим следующие примеры.
#pragma config WDT = ON // включить сторожевой таймер #pragma config WDTPS = 0x1A // указать значение постмасштабирования таймера
РАССЛАБИТЬСЯ!!….. РАССЛАБЛЯЙСЯ !!…. РАССЛАБЛЯЙСЯ !!…...
Я знаю, что это слишком зашло нам в голову, и установка этих битов конфигурации может показаться немного сложной для новичка !! Но с нашим MPLAB-X это явно не так.
Установка битов конфигурации в MPLAB-X:
Microchip значительно упростила этот утомительный процесс, используя графическое представление различных типов битов конфигурации. Итак, теперь, чтобы установить их, нам просто нужно выполнить следующие шаги.
Шаг 1: Щелкните Окно -> Просмотр памяти PIC -> Биты конфигурации. Как показано ниже.
Шаг 2: Должно открыться окно Configuration Bits внизу нашей IDE, как показано ниже. Это место, где мы можем установить каждый из битов конфигурации в соответствии с нашими потребностями. Я объясню каждую часть и ее цель по мере продвижения по этапам.
Шаг 3: Первый бит - это бит выбора генератора.
PIC16F87XA может работать в четырех различных режимах генератора. Эти четыре режима можно выбрать, запрограммировав два бита конфигурации (FOSC1 и FOSC0):
- LP маломощный кристалл
- XT Кристалл / Резонатор
- Высокоскоростной кристалл / резонатор HS
- RC-резистор / конденсатор
Для наших проектов мы используем Osc 20 МГц, поэтому мы должны выбрать HS из раскрывающегося списка.
Шаг 4: Следующим битом будет бит включения сторожевого таймера.
Сторожевой таймер - это автономный встроенный RC-генератор, не требующий каких-либо внешних компонентов. Этот RC-генератор отделен от RC-генератора вывода OSC1 / CLKI. Это означает, что WDT будет работать, даже если часы на выводах OSC1 / CLKI и OSC2 / CLKO устройства были остановлены. Во время нормальной работы тайм-аут WDT вызывает сброс устройства (сброс сторожевого таймера). Бит TO в регистре состояния будет очищен по истечении времени ожидания сторожевого таймера. Если таймер не очищен в нашем программном коде, тогда весь MCU будет сбрасываться при каждом переполнении таймера WDT. WDT можно навсегда отключить, сбросив бит конфигурации.
Мы не используем WDT в нашей программе, поэтому давайте очистим его, выбрав ВЫКЛ из раскрывающегося списка.
Шаг 5: Следующим битом будет бит таймера включения.
Таймер включения обеспечивает фиксированный номинальный тайм-аут 72 мс при включении питания только от POR. Таймер включения питания работает от внутреннего RC-генератора. Чип находится в состоянии сброса, пока активен PWRT. Задержка PWRT позволяет VDD повышаться до приемлемого уровня. Для включения или отключения PWRT предоставляется бит конфигурации.
Нам не потребуются такие задержки в нашей программе, поэтому давайте выключим и их.
Шаг 6: Следующим битом будет программирование низкого напряжения.
Бит LVP слова конфигурации позволяет программировать низковольтную микросхему ICSP. Этот режим позволяет программировать микроконтроллер через ICSP с использованием источника VDD в диапазоне рабочих напряжений. Это только означает, что VPP не нужно переводить в VIHH, а вместо этого можно оставить при нормальном рабочем напряжении. В этом режиме вывод RB3 / PGM предназначен для функции программирования и перестает быть выводом ввода-вывода общего назначения. Во время программирования VDD подается на вывод MCLR. Чтобы войти в режим программирования, VDD должен быть применен к RB3 / PGM при условии, что бит LVP установлен.
Давайте отключим LVP, чтобы мы могли использовать RB3 в качестве вывода ввода / вывода. Чтобы сделать это, просто включите этот OFF с помощью выпадающего списка.
Шаг 7: Следующими битами будут биты EEPROM и защиты программной памяти. Если этот бит установлен, после программирования микроконтроллера никто не будет извлекать нашу программу из оборудования. Но пока оставим все три выключенными.
После того, как настройки будут выполнены в соответствии с инструкциями, диалоговое окно должно выглядеть примерно так.
Шаг 8: Теперь нажмите «Сгенерировать исходный код для вывода», теперь будет сгенерирован наш код, просто скопируйте его вместе с файлом заголовка и вставьте в наш C-файл Blink.c, как показано ниже.
На этом наша работа по настройке закончена. У нас может быть такая конфигурация для всех наших проектов. Но если вам интересно, вы можете повозиться с ними позже.
Программирование PIC для мигания светодиода:
В этой программе мы собираемся использовать наш микроконтроллер PIC для мигания светодиода, подключенного к выводу ввода / вывода. Давайте посмотрим на различные контакты ввода / вывода, доступные на нашем PIC16F877A.
Как показано выше, PIC16F877 имеет 5 основных портов ввода / вывода. Обычно они обозначаются ПОРТ A (RA), ПОРТ B (RB), ПОРТ C (RC), ПОРТ D (RD) и ПОРТ E (RE). Эти порты используются для взаимодействия ввода / вывода. В этом контроллере «ПОРТ A» имеет ширину всего 6 бит (от RA-0 до RA-5), «ПОРТ B», «ПОРТ C», «ПОРТ D» имеют ширину всего 8 бит (от RB-0 до RB-7)., RC-0 до RC-7, RD-0 до RD-7), «PORT E» имеет ширину только 3 бита (RE-0 до RE-2).
Все эти порты двунаправленные. Направление порта контролируется с помощью регистров TRIS (X) (TRIS A используется для установки направления PORT-A, TRIS B используется для установки направления для PORT-B и т. Д.). Установка бита TRIS (X) '1' устанавливает соответствующий бит PORT (X) как входной. Очистка бита TRIS (X) '0' установит соответствующий бит PORT (X) как выходной.
Для нашего проекта мы должны сделать вывод RB3 ПОРТА B выходом, чтобы к нему можно было подключить наш светодиод. Вот код для мигания светодиода с микроконтроллером PIC:
#включают
Сначала мы указали внешнюю частоту кристалла с помощью #define _XTAL_FREQ 20000000. Затем в функции void main () мы проинструктировали наш MCU, что мы собираемся использовать RB3 в качестве вывода (TRISB = 0X00;) . Тогда, наконец, бесконечная в то время как цикл используется так, что светодиод мигает продолжается вечно. Чтобы светодиод замигал, нужно просто включать и выключать его с заметной задержкой.
После завершения кодирования создайте проект, используя команду Run -> Build Main Project. Это должно скомпилировать вашу программу. Если все в порядке (как и должно быть), консоль вывода в нижней части экрана отобразит сообщение СБОРНИК УСПЕШНО, как показано на рисунке ниже.
Принципиальная схема и моделирование Proteus:
Как только мы создадим проект и если сборка будет успешной, HEX-файл будет сгенерирован в фоновом режиме нашей IDE. Этот HEX-файл можно найти в каталоге ниже
Это может отличаться для вас, если вы сохранили в другом месте.
Теперь давайте быстро откроем Proteus, который мы установили ранее, и создадим схемы для этого проекта. Мы не будем объяснять, как это сделать, поскольку это выходит за рамки данного проекта. Но не волнуйтесь, это объясняется в видео ниже. После того, как вы выполните инструкции и построите схему, она должна выглядеть примерно так
Чтобы смоделировать вывод, нажмите кнопку воспроизведения в нижнем левом углу экрана после загрузки файла Hex. Должен мигать светодиод, подключенный к RB3 MCU. Если у вас есть какие-либо проблемы, пожалуйста, посмотрите видео, если все еще не решено, используйте раздел комментариев для помощи.
Теперь мы сделали наш первый проект с микроконтроллером PIC и проверили результат с помощью программного обеспечения для моделирования. Поиграйте с программой и посмотрите на результаты. До встречи на нашем следующем проекте.
Ой, подождите !!
В нашем следующем проекте мы узнаем, как заставить это работать на реальном оборудовании. Для этого нам понадобятся следующие инструменты, чтобы держать их наготове. А пока ЖЕЛАЯ УЧЕБА !!
- PicKit 3
- PIC16F877A IC
- 40-контактный держатель микросхемы
- Перфорированная доска
- 20 МГц Crystal OSC
- Женские и мужские булавки Bergstick
- Конденсатор 33pf - 2Nos
- Резистор 680 Ом
- LED любого цвета
- Комплект для пайки.