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

Views: 2135


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


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 – Структура проекта.


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


  • OLED RET012864E/REX012864JOLED RET012864E/REX012864J
    Views: 1540 RET012864E/REX012864J ОЛЕД индикатор производитель Raystar-Optronics приобретался в http://www.microchip.ua/ к сожалению никакой информации на сайте поставщика нет. Поэтому решил работу с этой версией индикатора на драйвере SSD1305 предоставить на своем сайте. Так как …
  • Проект с использованием MCC часть 11Проект с использованием MCC часть 11
    Views: 920 Можно несколько облагородить программу вынести наши процедуры обработки нажатия кнопок в отдельные функции. Но вы должны понимать, что это хоть и не значительно, но будет тормозить общую скорость …
  • Проект с использованием MCC часть 08Проект с использованием MCC часть 08
    Views: 1131 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …
  • CCP модуль для декодирования ИК-кодов пультов ДУCCP модуль для декодирования ИК-кодов пультов ДУ
    Views: 1109 Множество изготовителей для своих пультов дистанционного управления на ИК лучах используют принцип широтно-импульсной модуляции. В таких кодах бит единицы представляется импульсом большой длительности, а ноль импульсом короткой длительности. …
  • Бегущие огни (ch-bo-36)Бегущие огни (ch-bo-36)
    Views: 2509 Проект на PIC-микроконтроллере PIC16F648A. Количество каналов 36. Для индикации используется подключение по матрице 6х6. Расположение светодиодов в одну линию. Все эффекты написаны для возможности увеличения количества светодиодов. Рекомендуется …
  • LED драйвер TM1639LED драйвер TM1639
    Views: 2275 TМ1639 позволяет работать на матрицу 8*8 или 8 семисегметных индикаторов. Может работать как на индикаторы с общим катодом, но и есть возможность подключать общим анодом. Для управления драйвером …
  • ch-светомузыка от теории до реализацииch-светомузыка от теории до реализации
    Views: 777 Сразу оговоримся технология или теория ch-светомузыки, это постоянно развивающийся процесс и то что будет сказано сегодня завтра может быть опровергнуто и считаться ошибочным. Назовем само решение проблемы автоматического …
  • Индикатор температурыИндикатор температуры
    Views: 2705 Проект для начинающих, на демо плате BB-2T3D-01. Простой индикатор температуры. Проект никак не задумывался, просто на витрину магазин Ворон нужна была демонстрационная модель на макетной плате, чего нибудь работающего. Остановились на индикаторе …
  • TDA7294 part 1TDA7294 part 1
    Views: 324 TDA7294 має унікальні дані для створення підсилювачів звукової частоти HI-FI класу. Варіант застосування є конфігурація BRIDGE (мостова схема включення), де використовуються два TDA7294, як показано на схематичній діаграмі …
  • Гаджеты для домашней автоматики – Датчик движенияГаджеты для домашней автоматики – Датчик движения
    Views: 1454 Управление светодиодным освещением – Датчик движения. Данный гаджет предназначен для управления освещением рабочих столов (кухонных столов), освещение прихожих, освещение зеркал в прихожих, автоматическое включение света в коридорах. Датчик позволяет …



 

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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее

Комментарии

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

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