Микроконтроллер PIC16F17146: особенности и программирование

Введение в PIC16F17146

PIC16F17146 — это микроконтроллерный чип, относящийся к семейству PIC16F, которое славится высокой производительностью и низким энергопотреблением. Он широко используется в различных электронных устройствах, таких как бытовая электроника, автомобильные приложения и промышленные системы управления. PIC16F17146 предлагает широкий спектр функций, включая несколько интерфейсов связи, аналого-цифровые преобразователи и большой объем памяти для хранения программных инструкций и данных. Этот универсальный микроконтроллер позволяет разработчикам с легкостью создавать сложные приложения благодаря гибкой архитектуре и обширному набору периферийных устройств. Например, он может использоваться в автомобильных системах для управления функциями двигателя или в устройствах «умного дома» для управления различными задачами домашней автоматизации.

PIC16F17146 Microcontroller (MCU)

Особенности PIC16F17146

  • Оптимизированная для C-компилятора архитектура RISC
  • Улучшенное ядро среднего уровня с 49 инструкциями, 16 уровнями стека
  • Флэш-память программы с возможностью самостоятельного чтения/записи
  • Низкотоковый сброс при включении питания (POR)
  • Программируемый сброс при пониженном напряжении (BOR) с быстрым восстановлением
  • Сброс при пониженном напряжении питания с низким энергопотреблением (LPBOR)
  • Режимы низкого энергопотребления в режимах простоя и гибернации
  • Оконный сторожевой таймер (WWDT)
  • Отключение периферийного модуля (PMD)
  • Выбор периферийных выводов (PPS)
  • Улучшенный сброс при включении/выключении питания
  • Настраиваемый таймер включения питания (PWRT)

Спецификация PIC16F17146

AttributeValue
ModelPIC16F17146
ArchitectureRISC
Temperature Range-40°C to 85°C
Frequencyup to 32MHz
Voltage1.8V to 5.5V
Size6.5 x 9.4 x 1.5mm
Memoryup to 28 KB
EEPROMup to 256 Bytes
SRAMup to 2 KB
Timer3 x 16-bit, 3 x 8-bit
PWM4 x 16-bit
CLC4
DAC2 x 8-bit
ADC1 x 12-bit
USART1
I2C1 x 7/10-bit
SPI1
Operational Amplifier1
I/O Portup to 35 pins
Package14-Pin PDIP, SOIC, TSSOP; 16-Pin VQFN; 20-Pin PDIP, SOIC, SSOP, VQFN

Как запрограммировать плату разработчика PIC16F17146 Curiosity Nano?

2022 09 26 9 40 59
Источник изображения: Microchip Technology | Mouser

Необходимые инструменты:

  • Интегрированная среда разработки (IDE) MPLAB® X
  • PIC16F17146 Curiosity Nano Board *1
  • USB-кабель * 1

PIC16F17146 Curiosity Nano — тест мигания светодиода

Сначала загрузите и установите MPLAB X IDE v6.10 с сайта Microchip:
https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide#

Downloading the MPLAB X IDE v6.10
Downloading the MPLAB X IDE v6.10
Installing MPLAB X IDE v6.10
Installing MPLAB X IDE v6.10

После настройки MPLAB® X IDE мы видим удобный интерфейс. Если вы новичок, для вас есть несколько учебных руководств по началу работы.

Overview of MPLAB X IDE v6.10 User Interface
Overview of MPLAB X IDE v6.10 User Interface

Продолжим работу над нашим проектом. Нажмите «Файл > Новый проект», чтобы создать новый проект.

Create a New Project in MPLAB X IDE
Create a New Project in MPLAB X IDE

На этом этапе мы выбираем «Microchip Embedded > Standalone Project» (Встроенный микрочип > Автономный проект), который использует сгенерированный IDE файл makefile для сборки вашего проекта.

Choose a Standalone Project in MPLAB X IDE
Choose a Standalone Project in MPLAB X IDE

Затем выберите устройство «PIC16F17146» и соответствующий инструмент.

Select Device - PIC16F17146 Curiosity Nano
Select Device - PIC16F17146 Curiosity Nano

Выберите набор инструментов компилятора для вашей платы разработчика.

Select Compiler Toolchains
Select Compiler Toolchains

После выполнения вышеуказанных шагов нажмите кнопку «MCC», чтобы настроить код программы.

Open MCC Content Manager
Open MCC Content Manager

Выберите тип контента в «Мастере управления контентом MCC» для вашего проекта. Если вы не уверены, какой тип выбрать, ознакомьтесь с официальной информацией.

Select MCC Melody
Select MCC Melody

Для обеспечения быстрого запуска функции MCC можно установить ее в автономный режим.

Run MCC in Offline Mode
Run MCC in Offline Mode

Перед настройкой ввода-вывода внимательно ознакомьтесь со схемой платы разработчика PIC16F17146 Curiosity Nano. Из схемы можно узнать, что:

Вход/выход загорается, когда RC1 выдает низкий уровень; вход/выход не имеет внешнего подтягивающего резистора, поэтому можно настроить встроенный подтягивающий резистор, и порт запускает сигнал низкого уровня после нажатия.

PIC16F17146 Curiosity Nano MCU Schematic
PIC16F17146 Curiosity Nano MCU Schematic

Окончательная конфигурация выглядит следующим образом. Эта конфигурация приведет к тому, что светодиод будет включен по умолчанию. Если вы хотите отключить светодиод по умолчанию, вы можете установить соответствующий флаг Start High, то есть выход IO будет высоким при включении питания.

PIC16F17146 Curiosity Nano Input Output (IO) Configuration
PIC16F17146 Curiosity Nano Input Output (IO) Configuration

Если мы не используем функцию прерывания ввода-вывода, настройка заканчивается здесь. Нажмите «Сгенерировать», чтобы сгенерировать код.

Generate the Code of LED Blinking for PIC16F17146 Curiosity Nano
Generate the Code of LED Blinking for PIC16F17146 Curiosity Nano

При написании кода мы можем использовать функцию автозаполнения кода, подробности приведены ниже:

Apply Code Completion for PIC16F17146 Curiosity Nano
Apply Code Completion for PIC16F17146 Curiosity Nano

Автоматические всплывающие подсказки для идентификаторов C/C++:

				
					.;->;.*;->*;::;new ;A;a;B;b;C;c;D;d;E;e;F;f;G;g;H;h;I;i;J;j;K;k;L;l;M;m;N;n;O;o;P;p;Q;q;R;r;S;s;T;t;U;u;V;v;W;w;X;x;Y;y;Z;z;_;
				
			

Напишите код в теле цикла следующим образом:

				
					    while(1)
    {
        if(BUTTON_GetValue()==0)
        {
            while(BUTTON_GetValue()==0);
            LED_Toggle();
        }
    }   
				
			

Нажмите кнопку «Run» (Запустить), чтобы скомпилировать и записать программу светодиодов на плату разработчика PIC16F17146 Curiosity Nano.

Program the Project PIC16F17146 Curiosity Nano
Program the Project PIC16F17146 Curiosity Nano

Затем вернитесь на вкладку MCC, добавьте функцию задержки в проект, просто нажмите «Ресурсы устройства» > Таймер > «DELAY». Затем нажмите кнопку «Создать».

Add the Delay Module Code to Project
Add the Delay Module Code to Project

Теперь вводим букву «DE» в main.c, и появится функция задержки.

Display Delay Function in main. c
Display Delay Function in main. c

Наши коды задержки следующие: один в микросекундах, а другой в миллисекундах:

				
					    while(1)
    {
        LED_Toggle();
        DELAY_milliseconds(500);        
    } 
				
			

Сохраните и запустите эту программу, вы увидите, что светодиод на нашей плате разработчика начинает мигать с периодичностью 1 секунда.

Снижение энергопотребления с помощью серии PIC16F17146

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

Основные независимые периферийные устройства (CIP)

С помощью микроконтроллеров серии PIC16F17146 многие аналоговые конструкции могут преодолеть проблемы, связанные с энергопотреблением. Устройства PIC® и AVR® предлагают различные периферийные устройства, независимые от ядра (CIP). CIP — это специализированное оборудование, которое может работать независимо от центрального процессора (CPU). Поскольку в устройствах PIC и AVR доступно множество CIP, их можно использовать для разгрузки CPU от других задач, таких как обработка интерфейсов датчиков, управление сигналами, синхронизация/измерение и т. д. В результате система может работать в режимах низкого энергопотребления, что приводит к общему снижению энергопотребления конструкции.

Аналогово-цифровой преобразователь с вычислением (ADCC)

Одним из аналоговых периферийных устройств, обеспечивающих возможность энергосбережения, является наш аналого-цифровой преобразователь с вычислительной функцией (ADCC). Процессор имеет несколько режимов энергосбережения, позволяющих снизить общее энергопотребление. Одной из энергосберегающих функций микроконтроллера серии PIC16F17146 является режим SLEEP, в котором большая часть микроконтроллера отключается, что снижает потребление энергии и уменьшает измерительные шумы во время преобразования АЦП. ADCC имеет специальный генератор, который позволяет аппаратному обеспечению работать в режиме сна. При активации триггера пробуждения процессор вскоре возобновляет работу.

Режим ожидания и режим Doze

Другие режимы энергосбережения, предлагаемые микроконтроллерами серии PIC16F17146, включают режим простоя (Idle) и режим сна (Doze). В режиме простоя процессор останавливает все другие операции, в то время как периферийные устройства остаются активными, а в режиме сна процессор работает с пониженной тактовой частотой.

Отключение периферийного модуля (PMD)

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

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

Поделиться:

Прокрутить вверх

Instant Quote