Mplab x ide руководство на русском

Mplab x ide руководство на русском

Введение
Глава 1. Программные и аппаратные средства программирования микроконтроллеров
1.1. Общие сведения
1.2. Операции с портами микроконтроллера
1.3. Интегрированная среда разработки Microchip Studio для AVR
1.3.1. Установка Microchip Studio
1.3.2. Создание проекта “Линейка светодиодов” в Microchip Studio
1.3.2.1. Начало работы
1.3.2.2. Разработка листинга программы
1.4. Интегрированная среда разработки MPLAB X IDE для PIC
1.4.1. Установка MPLAB X IDE и компиляторов
1.4.2. Пакеты семейства устройств DFP
1.4.3. Интерфейсное окно пользователя
1.4.4. Биты конфигурации
1.4.5. Создание проекта “Линейка светодиодов” в MPLAB X IDE
1.4.5.1. Начало работы
1.4.5.2. Разработка листинга программы.
1.5. Программа Proteus для моделирования электронных схем
1.5.1. Интерфейсное окно Proteus
1.5.2. Моделирование электронных схем с микроконтроллерами в Proteus
1.5.2.1. Моделирование проекта с микроконтроллером AVR
1.5.2.2. Моделирование проекта с микроконтроллером PIC
1.5.2.3. Моделирование проекта “Матрица светодиодов”” с микроконтроллером PIC
1.5.3. Создание проекта с листингом программы внутри Proteus без привлечения IDE
1.5.4. Использование виртуальных измерительных приборов в Proteus
1.6. Аппаратные средства программирования микроконтроллеров
Контрольные вопросы и задания
Глава 2. Примеры программирования 8-разрядных микроконтроллеров AVR
2.1. Подключение кнопки к микроконтроллеру
2.1.1. Создание проекта
2.1.2. Моделирование проекта на макетной плате
2.2. Подключение к микроконтроллеру одноразрядного семисегментного индикатора
2.3. Управление таймер-счетчиком
2.4. Управление внешними прерываниями
Контрольные вопросы и задания
Глава 3. Примеры программирования 8-разрядных микроконтроллеров PIC
3.1. Подключение к микроконтроллеру двух кнопок
3.2. Подключение к микроконтроллеру силовой нагрузки
3.3. Конфигуратор кода MPLAB Code Configurator (MCC). Создание проекта “Программирование ШИМ”
3.4. Управление вращением электродвигателя небольшой мощности
3.5. Работа с последовательным интерфейсом RS-232
3.6. Подключение к микроконтроллеру температурного датчика
3.7. Работа с модулем АЦП микроконтроллера
3.7.1. Создание проекта
3.7.2. Моделирование проекта на макетной плате
3.8. Подключение к микроконтроллеру жидкокристаллического индикатора
3.8.1. Создание проекта
3.8.2. Моделирование проекта на макетной плате
3.9. Подключение к микроконтроллеру малогабаритного шагового электродвигателя
3.9.1. Создание проекта
3.9.2. Моделирование проекта на макетной плате
Контрольные вопросы и задания
4. Решения и ответы
4.1. Решения и ответы к главе 1
4.2. Решения и ответы к главе 2

Программирование МК PIC. Урок 2. Первый проект в MPLAB X IDE


4.3. Решения и ответы к главе 3
Литература

Микроконтроллер (МК, англ. MCU – Microcontroller Unit) – это электронный блок для управления различными устройствами, выполненный в виде единой микросхемы, или совсем коротко – это управляющая микросхема. В состав микроконтроллера входят микропроцессор, постоянное запоминающее устройство (ПЗУ, англ. ROM), оперативное запоминающее устройство (ОЗУ, англ. RAM), порты ввода/вывода, таймеры, АЦП, последовательные и параллельные интерфейсы и др. Учитывая количество входящих в состав микроконтроллера компонентов, его иногда называют однокристальным компьютером. Вычислительная мощность у микроконтроллера неизмеримо меньше, чем у компьютера, поэтому они используются для решения узкоспециализированных задач и находят широкое применение в устройствах промышленной автоматики, в системах автоматизации зданий, в периферийных устройствах компьютерной техники, в мобильной электронике, робототехнике, автомобильной технике и многих других приложениях.

В данном учебном пособии рассмотрено программирование микроконтроллеров AVR и PIC компании Microchip. Микроконтроллеры компании Microchip включают в себя 8, 16 и 32-разрядные модели микроконтроллеров. Не углубляясь в детали, приведем следующее определение разрядности: под разрядностью понимается количество бит информации, которые обрабатываются за один такт микропроцессора. Обзор микроконтроллеров компании Microchip начнем с семейства 8-разрядных микроконтроллеров.

8-разрядные микроконтроллеры:

  • 8-разрядные микроконтроллеры AVR,
  • 8-разрядные микроконтроллеры PIC,

8-разрядные микроконтроллеры AVR подразделяются на семейства:

  • ATtiny:
  • Флеш-память до 16 КБ; SRAM до 512 Б; EEPROM до 512 Б;
  • Число линий ввода-вывода 4-18 (общее количество выводов 6-32);
  • Ограниченный набор периферийных устройств.
  • ATmega:
  • Флеш-память до 256 КБ; SRAM до 16 КБ; EEPROM до 4 КБ;
  • Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
  • Аппаратный умножитель;
  • Расширенная система команд и периферийных устройств.
  • ATxmega:
  • Флеш-память до 384 КБ; SRAM до 32 КБ; EEPROM до 4 КБ;
  • Четырёхканальный DMA-контроллер;
  • Инновационная система обработки событий.

Mplab x ide руководство на русском

Буквы в наименовании модели микроконтроллера (после дефиса) означают вариант корпуса (табл.1):
Таблица 1

Современная линейка микроконтроллеров AVR дополнена продуктами: AVR DD, AVR DB, AVR DA.
Продукты AVR DD имеют низкое энергопотребление и идеально подходят для сложных приложений или в качестве сопутствующего микроконтроллера в сложных конструкциях с несколькими уровнями питания. Семейство AVR DD имеет широкий набор функций, включая многовольтный ввод/вывод (MVIO), позволяющий обеспечивать двунаправленную связь с устройствами с разным уровнем питания. Гибкость семейства делает его пригодным для применения во встраиваемых системах, осуществляющих управление в режиме реального времени. Микроконтроллеры используются в промышленных системах, бытовой технике, автомобилестроении, IoT (Internet of Things – интернет вещей) и других приложениях. (Интернет вещей – это приложения, обменивающиеся информацией через интернет).

  • Встроенный генератор 24 МГц.
  • До 8 КБ SRAM.
  • 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
  • 10-разрядный цифроаналоговый преобразователь (ЦАП).
  • Аналоговый компаратор (AC) с масштабируемым опорным входом.
  • Обнаружение сбоя часов.
  • 16-разрядные часы реального времени (RTC) и таймер прерывания.
  • Настраиваемое периферийное устройство с пользовательской логикой (CCL)
  • Настраиваемый внутренний генератор опорного напряжения.
  • USART / SPI двухрежимный двухпроводной интерфейс (TWI).
  • Многовольтный ввод-вывод на порту C.

В семействе AVR DD имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл.2).

Таблица 2

Продукты AVR DB разработаны для сложных аналоговых приложений с низким энергопотреблением. Благодаря трем встроенным операционным усилителям, не имеют аналогов по своим возможностям формирования сигнала. AVR DB имеет многовольтный ввод-вывод (MVIO) и является идеальным вспомогательным микроконтроллером в сложных конструкциях с несколькими областями питания. Семейство AVR DB можно использовать для функций управления в режиме реального времени в системах промышленного управления, бытовой техники, автомобилестроения, интернета вещей (IoT), для емкостных сенсорных пользовательских интерфейсов и в других приложениях.

  • Встроенный генератор 24 МГц.
  • До 16 КБ SRAM.
  • 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
  • 10-разрядный цифроаналоговый преобразователь (ЦАП).
  • Формирование аналогового сигнала (3 операционных усилителя).
  • Аналоговый компаратор (AC) с масштабируемым опорным входом.
  • Сканирование с циклической проверкой избыточности (CRC).
  • Обнаружение сбоя часов.
  • 16-разрядные часы реального времени (RTC) и таймер периодического прерывания.
  • Настраиваемое периферийное устройство пользовательской логики (CCL).
  • USART/SPI/двухрежимный двухпроводный интерфейс (TWI).
  • Многовольтный ввод-вывод на порту C.
  • Допускаемые входы на 1,8 В могут выбираться для всех входных контактов.

В семействе AVR DB имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл. 3).

Таблица 3

Продукты AVR DA разработаны для приложений, выполняющих управление в режиме реального времени, и использующих устройства HMI с емкостным сенсорным экраном. Высокая плотность памяти делает микроконтроллеры подходящими как для проводной, так и беспроводной связи. В семействе используются новейшие чипы CIPs с низким энергопотреблением и напряжением 5 В для повышения помехоустойчивости. Настраиваемая пользовательская логика (CCL) периферийных устройств, наряду с интеллектуальными аналоговыми периферийными устройствами, делают семейство AVR DA идеальным решением для управления в реальном режиме времени. Микроконтроллеры используются в промышленных системах, бытовой технике, автомобилестроении, интернете вещей (IoT) и в приложениях с функциями сенсорного управления.

  • Встроенный генератор с частотой 24 МГц.
  • До 16 Кб SRAM.
  • 12-разрядный дифференциальный аналого-цифровой преобразователь (АЦП).
  • 10-разрядный цифроаналоговый преобразователь (ЦАП).
  • Аналоговый компаратор с масштабируемым опорным входом.
  • 16-разрядные часы реального времени (RTC) и таймер периодического прерывания.
  • Настраиваемое периферийное устройство с пользовательской логикой (CCL).
  • Настраиваемый внутренний генератор опорного напряжения.
  • USART/SPI двухрежимный двухпроводной интерфейс (TWI).
  • До трех детекторов пересечения нуля (ZCD).
  • Сканирование с циклической проверкой избыточности (CRC).

В семействе AVR DA имеются микроконтроллеры с различным числом контактов и различным объемом флэш-памяти (табл. 4).

Таблица 4

8-разрядные микроконтроллеры PIC подразделяются на три уровня:

  • базовый уровень: младшие модели PIC10, PIC12, PIC16;
  • средний уровень: старшие модели PIC10, PIC12, PIC16;
  • повышенный уровень PIC

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

Микроконтроллеры PIC12, PIC16 подходят для решения задач, требующих более сложных алгоритмов управления и большего объема памяти. Эти микроконтроллеры оснащены различными аналоговыми и цифровыми периферийными устройствами: SPI, I2C, USART, LCD, АЦП. Микроконтроллеры отлично подходят для устройств с малым потреблением энергии, работающих от батарей.

Микроконтроллеры с архитектурой PIC18 появились в 2000 году. Эта серия оказалась очень популярной. В отличие от более ранних устройств, которые чаще всего программировались на ассемблере, для PIC18 и более поздних устройств язык C стал преобладающим языком разработки. Микроконтроллеры PIC18 сочетают в себе максимальный уровень производительности с простотой использования 8-битной архитектуры, обладают наибольшим количеством выводов и достаточно большим объемом памяти, включая до 128 Кбайт флэш-памяти и до 8 Кбайт оперативной памяти. Микроконтроллеры имеют широкую номенклатуру периферийных устройств: CAN, USB, Ethernet, сенсорные датчики и драйверы ЖК-дисплеев.

16-разрядные микроконтроллеры PIC:

  • PIC24F (16 МГц),
  • PIC24H (40 МГц),
  • PIC24E (70 МГц).

Семейство dsPIC с цифровым сигнальным процессором:

  • dsPIC33C (100 МГц),
  • dsPIC33E (70 МГц),
  • dsPIC33F (16-50 МГц),
  • dsPIC30F (30 МГц).

В 2001 году компания Microchip представила серию микросхем dsPIC, которая поступила в массовое производство в конце 2004 года. Это были первые 16-битные микроконтроллеры Microchip. Устройства dsPIC дополнительно включают возможности цифровой обработки сигналов. В отличие от dsPIC устройства PIC24 представляют собой микроконтроллеры общего назначения.

Семейство 16-разрядных микроконтроллеров PIC24 и dsPIC обеспечивает повышенную производительность, низкое энергопотребление, развитую периферию и полный набор программных и аппаратных средств, представляющих собой законченный комплект разработчика. Семейство dsPIC обеспечивает высокую производительность в вычислительных операциях и идеально подходит для разработки сложных приложений, работающих в режиме реального времени. Микроконтроллеры могут работать с напряжением питания 3 В и 5 В и с расширенным температурным диапазоном применения до +150°С, имеют встроенные функции, повышающие надежность и обеспечивающие безопасное отключение в случае возникновения внештатных ситуаций. Благодаря развитой периферии, 16-разрядные устройства находят широкое применение в промышленности, автомобилестроении, в бытовых приборах.

32-разрядные микроконтроллеры подразделяются на:

  • 32-разрядные микроконтроллеры семейства PIC,
  • 32-разрядные микроконтроллеры семейства SAM.

Семейство 32-разрядных микроконтроллеров PIC начинается с PIC32MX, который компания Microchip представила в 2007 году. PIC32MX выполнен на основе ядра MIPS32 M4K. Устройство программируется с помощью компилятора Microchip MPLAB C, предназначенного для микроконтроллеров PIC32. Сегодня доступен полный спектр 32-разрядных микроконтроллеров PIC24 среднего уровня, начиная с 28-контактного разъема в малогабаритных корпусах QFN и заканчивая высокопроизводительными устройствами с Ethernet, CAN и USB OTG интерфейсами. OTG (On-The-Go) – спецификация интерфейса USB, которая позволяет USB-устройству выступать в качестве хоста USB. Архитектура PIC32 привнесла в микроконтроллеры ряд новых функций, в том числе:

  • максимальная скорость выполнения – 80 MIPS (MIPS – Million Instructions Per Second. Не путать с понятием MIPS-архитектура);
  • самая большая флэш-память – 512 Кб;
  • одна инструкция на выполнение тактового цикла;
  • первый кэшированный процессор;
  • полный JTAG и 2-проводное программирование и отладка;
  • трассировка в реальном времени.

В 2013 году Microchip представила серию микроконтроллеров PIC32MZ, основанных на ядре MIPS M14K. Серия PIC32MZ имеет следующие характеристики:

  • тактовая частота ядра 252 МГц;
  • до 2 Мб флэш-памяти и 512 Кб ОЗУ;
  • новые периферийные устройства, включая высокоскоростной USB.

В 2015 году Microchip выпустила семейство PIC32MZ EF с использованием обновленного процессора MIPS M5150 Warrior M-класса.
В следующем 2016 году Microchip представила семейство PIC32MM, специализированное для маломощных и недорогих приложений. В микроконтроллерах PIC32MM используется процессор MIPS32 M4K. Микроконтроллеры семейства PIC32MM предназначены для очень низкого энергопотребления и ограничены тактовой частотой до 25 МГц. Их ключевым преимуществом является поддержка 16-битных инструкций MIPS, что делает программу намного более компактной.
В 2017 году Microchip представила семейство PIC32MZ DA, включающее встроенный графический контроллер, графический процессор и 32 Мб DDR2 DRAM. В том же 2017 году Microchip представила семейство PIC32MK, специализирующееся на управлении двигателем и промышленном применении.

Номенклатура микроконтроллеров PIC32 и их сферы применения показана на рис. 1 (боковая стрелка показывает направление повышения производительности микроконтроллеров).

Рис. 1 (щелкнуть по рисунку для увеличения)

32-разрядные микроконтроллеры семейства SAM. Эти микроконтроллеры оснащены процессорами с ядром ARM Cortex-M, имеют в своем составе множество передовых периферийных устройств, которые делают их отличным вариантом для разработки различных 32-разрядных приложений. Периферийные устройства имеют усовершенствованный сенсорный контроллер (PTC), низкое энергопотребление и большой набор высокопроизводительных аналоговых функций.

Номенклатура 32-разрядных микроконтроллеров SAM компании Microchip и их возможные сферы применения показаны на рис. 2.
Рис.2 (щелкнуть по рисунку для увеличения)

Личный сайт Pti_the_Leader

PICPgm — это просто прошивальщик, с его помочью можно только залить уже готовую прошивку в контроллер (ещё скачать обратно или проверить). Прошивка — это шестнадцатеричный файл HEX — результат работы компилятора.

Microchip предлагает мощное программное обеспечение MPLAB X IDE, на момент написания — версия 6.00. Программа абсолютно бесплатная, имеет кучу нужных и полезных вещей.

Самое основное — это официальное специализированное приложение, поэтому альтернативы искать ему не стоит. Конечно, по началу оно не очень удобное, но привыкнуть можно достаточно просто.

Изначально в ней нет поддержки языка C, но это дополнение можно точно так же бесплатно скачать с официального сайта.

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

Левая нижняя область — так называемый «Рабочий стол», показывает основные данные о проекте, рассчитывает занятую память в микроконтроллере, позволяет вносить изменения в проект.

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

Создание проекта, конфигурация контроллера

При создании нового проекта мастер спросит для какого микроконтроллера, поможет выбрать компилятор и сам создаст самый главный файл «main.c». Обратите внимание на кодировку проекта, по умолчанию стоит кодировка ISO, в которой русские буквы не сохраняются. Рекомендуется выбрать либо windows-1251, либо, как сейчас везде модно, utf-8 (Уникод).

Файл «main.c» это основной файл, если сравнивать с веб, то это нечто «index.html».

В организаторе проекта можно увидеть несколько папок, в которых могут быть разные типы файлов. Самые нам нужные — это «Source Files» и «Header Files». В источниках мы будем хранить наши файлы программой, в файлах-заголовках — метаданные.

Файлы заголовки обычно используют для оглашения функций или переменных, при сборке все файлы-источники подключаются автоматически, если их несколько и с разными функциями, которые используются перекрёстно, то вот как раз все эти функции и переменные просто записываются в файл-заголовок и подключаются в файл с кодом. Это удобно, когда к примеру используются сторонние готовые библиотеки, функции которых мы хотим использовать в своей программе, в свой «main.c» мы включим только файл-заголовок библиотеки, и сможем пользоваться всеми функциями.

Бит конфигурации

Мы помним, что микроконтроллер — это маленький компьютер, у которого есть своё ПЗУ, ОЗУ, подобие флешки, и куча периферии. Самое основное — это так называемый «Бит конфигурации», который можно сравнить с BIOS, в реальности бит конфигурации может быть и в несколько бит, создать его для конкретного контроллера можно в MPLAB X IDE. По умолчанию инструмент для создания бита конфигурации находится в одной из вкладок под основной областью с кодом, но если вы его закрыли, или не нашли, найти его можно через меню «Window — Target memory views — Configuration Bits»

Рассмотрим бит конфигурации на примере PIC16F676, ещё раз напоминаю, что если вы работаете с контроллером, у вас всегда под рукой должно быть его описание.

Здесь можно просто выбирать из выпадающего списка и сразу читать, какой это даст эффект. И так, по порядку..

FOSC

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

Самое замечательное — наш микроконтроллер имеет встроенный генератор на 4МГц, с возможностью его калибровки, давайте сэкономим деталей и будем использовать уже то, что есть. Есть 2 варианта, INTRCIO и INTRCCLK, какой выбрать? Выбрать не сложно, если почитать описание. Если выбрать INTRCIO, то 2 ножки, предназначенные для резонатора, будут доступны как порты ввода-вывода, то есть будут доступны для нашей программы. Если выбрать режим INTRCCLK, то в таком случае нам будет доступна только одна ножка, а вторая будет выходом генератора. Так как нам ничего пока между собой подключать и согласовывать не надо, то выберем режим INTRCIO, лишние ножки никогда не будут лишними.

WDTE

Таймер «сторожевой пёс». Его предназначение — периодически перезагружать микроконтроллер, на случай, если он вдруг «зависнет». Используется для повышенной стабильности работы, но, при сбросе контроллера — как «ресет» компьютера, всё содержимое оперативной памяти будет потеряно и программа начнёт выполняться с самого начала, как после включения. Для начала рекомендую WDTE выключить, чтобы избежать непонятных случаев, особенно в самом начале пути в мир микроконтроллеров.

PWRTE

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

MCLRE

Конфигурация одной ножки контроллера, либо она работает как служебная, либо как обычный порт ввода-вывода. Во включённом режиме, обычно на эту ножку вешают резистор на 10 кОм с плюса питания и добавляют кнопку на «минус». Резистор нужен для корректной работы PWRTE, а кнопка — является «Reset»-ом. Но если нам нужна ещё одна ножка, то этот параметр можно и отключить. В таком случае микроконтроллер будет использовать внутреннюю схему для корректной работы PWRTE, но кнопки «Reset» у нас больше не будет.

BOREN

Таймер сброса при нестабильном питании, и да, коричневый в названии… ну контроллерам тоже бывает страшно. Основная задача — остановить выполнение программы, если напряжение питания снизилось ниже допустимого рабочего. Основная задача — предотвратить сбои в работе всего оборудования и дождаться восстановление нормального питания. Может быть полезно, если, к примеру, схема питается от батареи, которая может постепенно терять напряжение. Если BOREN отключён, то контроллер будет работать до последнего, особенно при самом низком напряжении, он может работать нестабильно, то есть глючить. К чему это может привести… Если включить это параметр, то контроллер при достижении порогового значения напряжения отключится и будет ожидать приемлемое питание.

CP и CPD

Защита области памяти и программного кода от чтения через программатор. Контроллер не позволит считать свою прошивку и область EEPROM.

После ввода параметров можно нажать на кнопку генерации кода и скопировать его в свой «main.c» к примеру перед «#include »

Общие сведения о регистрах конфигурации в микроконтроллерах PIC

Микроконтроллеры PIC имеют несколько мест, в которых расположены биты конфигурации, которые также называют фьюзами (fuses). Эти биты определяют глобальную логику функционирования устройства (в нашем случае микроконтроллера). С их помощью задается режим работы генератора тактовой частоты, сторожевого таймера (watchdog timer), режима программирования и защиты кода. Очень важно установить эти биты правильно иначе наш микроконтроллер не сможет нормально функционировать.

Узнать об имеющихся регистрах конфигурации можно из даташита на микроконтроллер. Важно понять, какие типы битов конфигурации присутствуют в рассматриваемом микроконтроллере и каковы их функции. Эти биты можно установить или сбросить использую инструкцию pragma .

Данная инструкция имеет следующую форму:

#pragma config setting = state|value
#pragma config register = value

где setting – описание настройки (установки), например, WDT, а state – текстовое описание необходимого состояния, например, OFF. Можно привести следующие примеры установки конфигурационных битов:

#pragma config WDT = ON // turn on watchdog timer (включить сторожевой таймер)
#pragma config WDTPS = 0x1A // specify the timer postscale value (записать значение в таймер)

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

Установка битов конфигурации (фьюзов) в MPLAB-X

Компания Microchip значительно упростила процесс установки битов конфигурации (фьюзов) в микроконтроллерах PIC, разработав для этого специальные графические инструменты. Для того, чтобы установить биты конфигурации (фьюзы) в микроконтроллерах PIC с помощью программы MPLAB-X, выполните следующую последовательность шагов.

Шаг 1. В программе MPLAB-X выберите пункт меню Window -> PIC Memory View -> Configuration Bits как показано на следующем рисунке.

Шаг 2. После этого внизу программы MPLAB-X откроется окно настройки битов конфигурации (Configuration Bits window) как показано на рисунке ниже. В нем вы можете установить значение каждого бита конфигурации по своему желанию. Далее мы рассмотрим установку некоторых из этих бит.

Шаг 3. Первыми битами конфигурации являются биты выбора генератора . Микроконтроллер PIC16F87XA может работать в одном из 4-х режимов генератора, которые можно установить с помощью битов FOSC1 и FOSC0:

  • LP Low-Power Crystal (маломощный генератор);
  • XT Crystal/Resonator (внешний кварцевый резонатор);
  • HS High-Speed Crystal/Resonator (высокоскоростной кварцевый резонатор);
  • RC Resistor/Capacitor (RC генератор).

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

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

Шаг 4. Следующим битом конфигурации является бит включения/выключения сторожевого таймера .

Сторожевой таймер (Watchdog Timer, WDT) представляет собой непрерывно работающий встроенный RC генератор, для работы которого не требуется никаких внешних компонентов. Данный RC генератор отделен от RC генератора на контакте OSC1/CLKI. Это означает что сторожевой таймер будет продолжать работать даже если на контакты OSC1/CLKI и OSC2/CLKO не подается никакой тактовой частоты. В режиме нормального функционирования сторожевой таймер формирует сигнал аппаратного сброса (Watchdog Timer Reset) при своем переполнении. И если таймер не отключен в нашей программе, то микроконтроллер будет сбрасываться каждый раз при переполнении таймера. Сторожевой таймер можно отключить при помощи очистки его бита конфигурации.

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

Шаг 5. Следующим битом является таймер по питанию (Power-up timer Bit, PWRT) , который обеспечивает фиксированную задержку в 72 мс в работе микроконтроллера при подаче на него питания, что позволяет напряжению питания за это время подняться до приемлемого уровня. Когда данный бит активирован, таймер по питанию будет сбрасывать микроконтроллер до тех пор, пока питание не поднимется до необходимого уровня.

В нашей программе мы не будем использовать данную задержку, поэтому данный бит конфигурации мы также отключим (OFF).

Шаг 6. Следующим битом конфигурации является бит программирования при низком напряжении (Low-Voltage Programming, LVP) . Бит LVP позволяет производить программирование микроконтроллера пониженным напряжением через разъем ICSP. Мы не будем в нашем проекте использовать данный вид программирования, поэтому отключим данный бит (OFF).

Шаг 7. Следующими битами конфигурации у нас является бит EEPROM и биты защиты программы . Если бит EEPROM включен, то после программирования микроконтроллера никто не сможет перезаписать в нем программу. В нашем случае мы оставим все эти три бита в выключенном состоянии.

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

Шаг 8. После этого выберите пункт меню Generate Source Code to Output – в результате этого код нашей программы будет сгенерирован, нам необходимо всего лишь скопировать его вместе с заголовочным файлом и вставить его в файл Blink.c как показано на следующем рисунке.

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

Mplab x ide руководство на русском

Цикл статей – PIC начинающим или основы основ

В этой статье я расскажу как создавать проект в MPLAB X. Сложного ничего нет: всего десяток кликов мышью, да наименование проекта — вот и весь рецепт под катом… 1. Идем в меню File:

Новый проект в MPLAB X

Новый проект в MPLAB X

Standalone Project

2. Выбираем MCU для проекта. Если вы планируете повторять следующие статьи, рекомендую выбрать PIC18F45K20:

Выбор MCU

Почему именно этот микроконтроллер? Потому, что у меня есть железка DV164131 упомянутая в этой статье. 3. Выбираем средство отладки. Я выберу PICkit 3. Если у вас ничего нет — выбирайте «Simulator»

Выбор устройства для работы с MCU

Выбор устройства для работы с MCU

4. Выбираем компилятор для проекта. Можно выбрать «mpasm» устанавливаемый вместе с MPLAB X, либо один из установленных отдельно компиляторов. Дальше будут рассматриваться компиляторы XC8, XC16, XC32:

Выбор компилятора XC8

Выбор компилятора XC8

5. Указываем путь и имя проекта. Опять же, с прицелом на мои следующие статьи, рекомендую сделать как на скрине ниже:

Имя проекта

  1. Папка, в которой будут храниться проекты. Я создал папку «TestPrj» в папке «C:DIOD-PRO» :). Папка каждого конкретного проекта создается автоматически после ввода имени проекта.
  2. Имя проекта. Первый проект с названием «io45k20» будет посвящен работе с портами ввода/вывода (I/O).
  3. Обязательно установите данную настройку, иначе в проектах MPLAB X увидите крякозяблы вместо комментариев на русском.
  4. Созданный проект будет активным. Если не установить, то нужно будет сделать проект активным позже.

Жмем Finish и получаем наш первый проект. Вот он, красавец

Наш первый проект в MPLAD X

Наш первый проект =)

Пока это абсолютно пустой проект не содержащий ни одной строчки кода. Поэтому следующий этап — добавление а-ля главного си-шного файла. Для этого в дереве проектов раскрываем наш проект, кликаем правой кнопкой мыши по папке «Source Files», выбираем «New -> C Main File…»:

Добавление си-файла в проект

Добавление си-файла в проект

В результате получаем такого вида диалоговое окошко:

Окно добавления новых файлов в MPLAB X

Окно добавления новых файлов в MPLAB X

Дадим «говорящее» имя си-шному файлу «main_ioled». «main» в наименовании файла говорит о том, что в файле присутствует функция main(). Поле Folder я оставлю пустым: main_ioled.c будет находиться в папке проекта. Вот результат моих усилий:

Новый файл в проекте

Новый файл в проекте

Заключительный этап — проверяем созданный проект на работоспособность. Кликаем кнопочку на панели инструментов:

Компиляция проекта

После окончания процесса, смотрим окно логов:

Компиляция прошла успешно

Компиляция прошла успешно

Если все сделано правильно, в последней строчке будет запись «Loading completed». Все — проект создан и работоспособен. Осталось научиться работать с камешком

Установка битов конфигурации в 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. Это должно скомпилировать вашу программу. Если все в порядке (как и должно быть), консоль вывода в нижней части экрана отобразит сообщение СБОРНИК УСПЕШНО, как показано на рисунке ниже.

Программирование 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 любого цвета
  • Комплект для пайки.

Программирование 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 любого цвета
  • Комплект для пайки.
Оцените статью
TutShema
Добавить комментарий