MPLAB® Harmony – или как это просто! Часть 3.

Visits: 2059


Часть третья – копнём немного глубже.


Play

Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил в код программы три строки настройки таймера без какого на то объяснения, почему это так. В начале когда начинаешь, что-то новое нужен результат и мы его получили, нам необходимо, что бы светики заморгали, они моргают. Сразу возникает вопрос, неужели в MHC (теперь будем так обзывать MPLAB® Harmony Configurator)  невозможно это сделать более правильным путем, ну во первых можно и нужно.

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

Далее не забудем, добавить немного штрихов, идем в настройки проекта

В разделе конфигурация, выберем железо для программирования (у меня PICkit4) выберем компилятор.

и если необходимо выберем режим оптимизации, хочу напомнить MHC всегда если не выбран уровень, будет компилировать проект с уровнем 1…

И не забудьте войти в общие параметры и задать кодировку 1251.

Теперь мы в MPLABX будем иметь следующее, пустой проект без каких либо файлов MCH будут автоматически запущен и ожидать наших действий.

Что мы имеем на этом этапе? Закладки в конфигуратора:

  • Options – Параметры – выбор различных параметров приложения в MPLAB Harmony.
  • Clock Diagram – Настройка тактового генератора – показывает текущую конфигурацию системы формирования тактовых сигналов устройства.
  • Pin Diagram – Интерактивная настройка выводов – предоставляет графический обзор того, как проект конфигурирует контакты устройства.
  • Pin Settings – Конфигурирование выводов – Предоставляет сводную информацию о том, как настроены контакты устройства.

Начнем с конфигурации тактового генератора Clock Diagram.

 

Сейчас у нас тактовая частота в настройка не нуждается, но можно для себя изменить параметры и вы увидите, как будут меняться значение величин. Что и ка настраивать будут изучать по мере необходимости. Но сейчас  стоит обратить внимание на главное, у нас имеется источник частоты.

 

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

Умножитель частоты. Почему умножитель? В таком варианте мы получаем минимальное значение излучаемых паразитных помех от задающей частоты. В этом месте наша частота будут преобразована с 8 МГц до 200 МГц. Практически все МК легко работают на частотах 220-230 МГц, но есть и экземпляры которые легко работают и на 250 МГц.

Далее у нас имеется 4 блока для формирования опорных частот. Для чего это необходимо, мы можем управлять периферийными устройствами более гибко предоставляя им те частоты которые необходимы для управления нашими задачами. Если в семействе PIC16-18, а то и в 16 битным микроконтроллерах, нам например, для получения тактовой частоты для таймера, может не хватить предварительного делителя, то в PIC32 эта проблема решается легко. По клацайте по закладкам выбора модулей и вы увидите, для какой периферии вы можете изменить тактовую частоту.

Далее мы имеем 8 модулей для настройки шины тактовой частоты уже конкретно периферии. Здесь также можно в окне увидеть для какой периферии будут выполнены изменения по тактовой частоте. Например модуль PBCLK3, затронет изменение тактовой частоты на входе таймеров.

так беглый ликбез по тактовому генератору мы прошли. По мере решения задач, мы постоянно будем возвращаться к тактовому генератору для изменения параметров системы под наши требования. Из всего мы только поняли, что процессор настроен на тактовую 200МГц, а периферия на 100МГц.

Перейдем в закладку Pin Diagram и повторим конфигурирование портов.

После настройки у нас должен быть вид, порты RB0 и RB1 настроены на выход.

Теперь выберем закладку Pin Settings и проверим настройки

Обратим внимание на состояние LAT регистра уровень низкий.

Выполним операцию создания кода проекта, нажмем на кнопку Code.

 

MHC предложит выбрать вариант сохранения конфигурации, сохраним.

Далее предложи вариант выбора стратегии для внесения изменений в наш проект, разберем это окно на “запчасти”.

MHC предлагает 4 стратегии следующие стратегии, назовем так слияния кодов. Что под этим подразумевается, что у вас уже есть, что то (или пока еще ничего нет) на писаного и вам необходимо внести изменения в ваш проект.


Prompt Merge for all Differences – Пользователю будут открываться “окна слияния” для всех создаваемых файлов и он должен принять решение вводить эти новые изменения или нет. Это будет включать в себя файлы, которые не имеют модификаций пользователя.
Prompt Merge for All User Changes – Пользователю всегда будет предложено “окно слияния” для всех сгенерированных файлов, которые содержат изменения внесенные пользователем. Вы всегда должны выбирать эту стратегию слияния после изменения чего-либо на вкладке «Параметры», «Гармония MPLAB и Конфигурация приложения» (Options tab, MPLAB harmony & Application Configuration).
Prompt Merge For New User Changes – Пользователю будет предложено “окно слияния” для всех сгенерированных файлов, которые содержат пользовательские изменения. Пользователю не будет предложено снова объединить изменения для данного файла, если пользователь не внесет дополнительные изменения в этот файл.
Automatically Overwrite User Changes – Все сгенерированное содержимое файла будет заменено содержимым этой операции генерации. Любые изменения внесенные пользователем будут перезаписаны.

Дополнительные опции.

Create a backup of the current project state – Предоставляет возможность вернуть все сгенерированные файлы в их исходное состояние до генерации кода.
Enable recommended compiler optimizations (if not set) – Для проектов MPLAB Harmony настоятельно рекомендуется уровень оптимизации компилятора, по крайней мере, «O1». Эта опция установит уровень оптимизации компилятора на «O1», если в настоящее время уровень оптимизации не установлен.
Copy framework files to local configuration directory – Предоставляет возможность генерировать автономный проект. Все необходимые файлы будут добавлены в проект MPLAB X IDE, поэтому он может быть собран и запущен без платформы MPLAB Harmony.


Выберем параметр Prompt Merge for All User Changes и с генерируем проект. Загрузим в нашу демоплату, со светодиодами заметим ничего не произошло, как не горели так и не горят. Вернемся во вкладку Pin Settings  и изменим состоянии порта RB0 с низкого на высокий.

Повторим операции по генерации, компиляции и загрузки проекта в демоплату. Какие изменения светодиод подключенный к порту RB0 светиться!!! Таким образом, мы при инициализации микроконтроллера можем в самом начале установить необходимые уровни на выводах портов.

Идем далее нам необходимо “включит” таймер 1. Заходим в закладку Options – Параметры, развернем дерево Harmony Framework Configuration (конфигурация структуры).

Откроем Системные службы, выберем таймер, поставим птичку пользовательские настройки таймера, выберем, что мы будем настраивать таймер 1.

Больше мы никуда в этом месте “шкодливыми ручками” не лезем, потому, что нифига дальше не понимаем. После этого переместимся к дереву драйвера (Drivers), открываем таймер (птичка там уже стоит) выбираем реализацию драйвера как статическую (STATIC), отключаем прерывания, нам они (пока) не нужны, ставим птичку. выбираем модель драйвера TMR_ID_1 (она уже выбрана) и вводим параметр для предделителя 256 (если не выбрано другое) и задаем период максимальный 65535 (это максимально допустимое значение регистра периода таймера RP1). Т.е. настраиваем на работу таймера по всему ему возможному значению.

Запустим генерацию кода, сохраним конфигурацию, в предложенном окне, стратегию не меняем. Теперь добавим в “супер-цикл” вариант переключения светодиодов.

        if(TMR1>50000) 
        {
            TMR1=0;
            LED1 = !LED1;
            LED2 = !LED2;
        }

Ну и конечно в начала описание для светиков.

#define LED1    LATBbits.LATB0
#define LED2    LATBbits.LATB1

Выполним компиляцию и прошьем демоплату, для этого нажмем 

Результат, светики по переменно мигают. Что мы сделали мы при помощи MHC полностью настроили таймер и заставили работать проект мигания двух светиков, попеременно.

Сделаем еще одно изменение посмотрим как влияет изменение тактовой часто на входе таймера, и заодно разберемся как это делается в MHC. Помните где мы говорили, о PBCLK3Вернемся в Clock Diagram. Изменим значение делителя в модуле с 2 на 25. Сформируем на входе таймера тактовую частоту 8МГц. Выполним всю последовательность для сборки, компиляции и тестирования проекта.

После запуска программы на демоплате, частота мигания значительно уменьшиться. В общем все классно и круто. Но все так, только чуточку не так. Для профессиональной работы в MCH необходимо пройти некоторый ликбез по понимаю, “где что, зачем и почём” ;). поэтому 4 часть посвятим теории MHC.

Проект к 3 части:


Читайте в следующей части Project Structure – Структура проекта.


Это может быть интересно


  • Простой оптический сенсор приближенияПростой оптический сенсор приближения
    Оптический сенсор, назначение оптический концевик, для автоматики, бесконтактный выключатель с функцией автоматического отключения...
  • Проблемы классической светомузыкиПроблемы классической светомузыки
    Visits: 2043 Светомузыка – что это такое? Определение: Светомузыка  (жаргонное: цветомузыка)  — вид искусства, основанный на способности человека ассоциировать звуковые ощущения со световыми восприятиями. Такое явление в неврологии получило название …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Visits: 17705 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …
  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    Visits: 2483 В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип …
  • УКВ – радиоприем, часть 1УКВ – радиоприем, часть 1
    Visits: 9535 Музыкальная тема к статье, слушаем: Первый мой радиоприемник, выглядел так. Использовал исключительно в школе на уроках, держась за одно ухо и преданно смотря на училку и сладко улыбаясь. …
  • ch-светомузыка и AK4113ch-светомузыка и AK4113
    Visits: 1266 Пришло время вернуться к светомузыке. На сегодня использование аналогового входа стало непрактичным, на сегодня необходимо использовать S/PDIF и Toslink. С этим надо было как то разобрать, что это …
  • Защита датчиков температуры DS18B20 от статического электричестваЗащита датчиков температуры DS18B20 от статического электричества
    Visits: 1811 Статья перепечатана с сайта http://svetomuzyka.narod.ru При удалении датчика на большие расстояния возникает опасность наведения импульсов высокого напряжения на кабель, который соединяет датчик с контролером. Если не принимать меры защиты, …
  • Проект с использованием MCC часть 05Проект с использованием MCC часть 05
    Visits: 1867 Эту часть назовем так как избавься от delay, там где а это реально не надо. Для это нам потребуется научиться использовать прерывания и работать с таймерами. Что такое …
  • ch-4050 – дифференциальный терморегуляторch-4050 – дифференциальный терморегулятор
    Visits: 1850 ch-4050 – это не новая модель, это расширенная версия универсального терморегулятора ch-4000. Различия коснулись в появлении новой функции дифференциального регулирования. Это вид регулирования по разности температур измеренного двумя …
  • Регулятор влажностиРегулятор влажности
    Visits: 1365 Регулятор ILLISSI-CH-1000 предназначен для контроля и регулировки относительной влажности в диапазоне от 0 до 100%. Регулятор позволяет работать как в режиме осушения, так и увлажнения. Для измерения возможно …



 

Поделись этим!

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

Продолжайте читать

НазадДалее

Комментарии

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.