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

Visits: 2043


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


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


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


  • Проект с использованием MCC часть 12-1Проект с использованием MCC часть 12-1
    Visits: 892 В настоящее время без визуализации информации уже не интересно. Поэтому научимся выводить информацию на дисплей. Для это возьмет простенький OLED RET012864E/REX012864J я такой приобретал в фирме “Гамма-Украина”, описание можно …
  • JDY-62A Audio bluetooth moduleJDY-62A Audio bluetooth module
    Visits: 1614 Простой модуль для простого аудио блютуса. Встроенные подсказки на английском языке. Модуль включён, режим муте – после подачи питания. Контроль разряда батареи предупреждение что батарея разряжена и необходима …
  • MPLAB® Code Configurator and EncoderMPLAB® Code Configurator and Encoder
    Visits: 1389 Еще раз про энкодер… Для некоторых приложений очень удобно и экономически выгодно, для настройки и управления использовать энкодер. Такие энкодеры имеют строенную тактовую кнопку которую можно применить для выбора …
  • Altium Designer my setup system and project structure V23.3Altium Designer my setup system and project structure V23.3
    Visits: 121 Оновлення бази даних та шаблонів від березня 2023 року. Updating the database and templates from March 2023. Altium Designer my Libraries, Project templates, System settings by Catcatcat. Дивись …
  • Проект с использованием MCC часть 07Проект с использованием MCC часть 07
    Visits: 924 Модуль PWM – широтно импульсная модуляция (ШИМ). ПИК контроллеры часто на борту имеют модули ШИМ. На их основе строятся многие узлы управления электро приводами. В нашем варианте мы …
  • PIC32MZ – Core Timer (библиотека)PIC32MZ – Core Timer (библиотека)
    Visits: 523 Переработанные файлы от Microchip, библиотека для работы с Core Timer. Метки: PIC32MZ
  • Часы-кухонный таймерЧасы-кухонный таймер
    Visits: 3868 Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и …
  • MAX7219/21 и 8х8 LED дисплеиMAX7219/21 и 8х8 LED дисплеи
    Visits: 903 MAX7219, MAX7221 предназначены для вывода информации на 8 разрядов семисегментного индикатора, но на нем легко организовать вывод на светодиодные индикаторы 8х8. продолжение следует…. Это может быть интересно Метки: MAX7219, …
  • ESP8266  процедура получение данных даты и времени от серверов точного времени.ESP8266 процедура получение данных даты и времени от серверов точного времени.
    Visits: 5771 Эта функция доступна уже в версии 1.6.1. Для многих приложений, необходимо часы реального времени,  если в вашем проекте есть модуль WiFI ESP8266, то легко можно сделать следующим образом. …
  • ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
    Visits: 2395 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11  самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств …



 

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

Catcatcat

catcatcat

Development of embedded systems based on Microchip microcontrollers.

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

НазадДалее

Комментарии

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

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