Миландр
https://forum.milandr.ru/

Микроконтроллер для электродвигателей
https://forum.milandr.ru/viewtopic.php?f=14&t=1753
Страница 13 из 13

Автор:  R Max [ 2019-окт-12 14:07 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Кстати, а есть ли в микросхеме аппаратная реализация раскладки вектора ШИМ на значения регистров сравнения 3 (стоек) парных каналов ШИМ ? https://en.wikipedia.org/wiki/Space_vector_modulation

Автор:  Ekaterina [ 2019-окт-15 14:57 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Здравствуйте!

Нет, аппаратной реализации space vector modulation нет.

Автор:  R Max [ 2019-окт-15 19:45 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Спасибо за информацию! Жаль, хорошо было бы добавить, если пока ещё есть возможность...

Автор:  prostoRoman [ 2019-окт-15 21:24 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

R Max писал(а):
Спасибо за информацию! Жаль, хорошо было бы добавить, если пока ещё есть возможность...
А ещё и Парка-Кларка и ПИД-регилятор тока на флотах!!))
Но, в Электросилу уже поздно...

Автор:  Immortal_Buka [ 2019-окт-17 16:21 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

prostoRoman писал(а):
А ещё и Парка-Кларка и ПИД-регилятор тока на флотах!!))
Но, в Электросилу уже поздно...
https://arm-software.github.io/CMSIS_5/ ... oller.html

Автор:  prostoRoman [ 2019-окт-17 16:37 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Immortal_Buka писал(а):
prostoRoman писал(а):
А ещё и Парка-Кларка и ПИД-регилятор тока на флотах!!))
Но, в Электросилу уже поздно...
https://arm-software.github.io/CMSIS_5/ ... oller.html
Спасибо за ссылку, но речь шла об аппаратной реализации.

Реализация ф-ций типа float32_t arm_pid_f32 (arm_pid_instance_f32 *S, float32_t in) нарочно скрыта?

UPD: продолжая благородную тему "сам спросил - сам ответил", поскольку ф-ция помечена модификатором __STATIC_FORCEINLINE, то расположена она в CMSIS_5\CMSIS\DSP\Include\arm_math.h
Я думал там полно хитрости и заточенного под ядра ассемблерного кода, но оказалось там банально на Си (чуть подрехтую):
  {
    float32_t out;

    /* y[n] = A0 * x[n] +    A1 * x[n-1]       +    A2 * x[n-2]       +    y[n-1] */
    out = (S->A0 * in) + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]);

    /* Update state */
    S->state[1] = S->state[0];
    S->state[0] = in;
    S->state[2] = out;

    /* return to application */
    return (out);
  }
А вот arm_pid_q31() и arm_pid_q16() оправдали ожидания.

Автор:  R Max [ 2019-окт-26 18:47 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Микроконтроллер позиционируется для применения в электродвигателях, а будет ли какое-то SDK с готовыми прикладными применениями, программными библиотеками и отладочной платой, например как здесь https://www.st.com/en/embedded-software ... mcsdk.html

Автор:  Ekaterina [ 2019-окт-30 15:14 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Здравствуйте!

В планах у разработчиков есть отладочная программа, которая показывает графики изменения переменных в программе.
Уже был изготовлен модуль с "Электросилой", который можно установить в силовые отладочные платы от TI, но собственных плат пока нет.
Я думаю, что это тот случай, когда спрос рождает предложение. Ваш вопрос я перешлю в маркетинг. Если есть еще заинтересованные, пишите, пожалуйста, на ic@milandr.ru
По поводу ПО - стандартная библиотека будет, более широкая - пока не известно.

Автор:  NikP [ 2020-окт-13 14:27 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

На отладочной плате Электросила пробую работать с отладкой двухъядерного режима. Взял пример из приложения к отладочному комплекту ( проект SMP) , программатор ULINK2. Конфигурации RAM ULINK2 @0 , RAM ULINK2 @1 и FLASH ULINK2 @0 загрузились, нормально прошёл по точкам останова. А вот с конфигурацией FLASH ULINK2 @1 возникли проблемы : при попытке запустить этот вариант Кейл зависает. Настройки проекта не менял, всё без изменений из примера. В чём может быть причина? На сайте StartMilandr работа с этим проектом описана, но подробно только в части RAM, а вот с FLASH я как то не разобрался.

Автор:  Vladimir_K [ 2020-окт-13 16:23 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

NikP писал(а): *
На отладочной плате Электросила пробую работать с отладкой двухъядерного режима. Взял пример из приложения к отладочному комплекту ( проект SMP) , программатор ULINK2. Конфигурации RAM ULINK2 @0 , RAM ULINK2 @1 и FLASH ULINK2 @0 загрузились, нормально прошёл по точкам останова. А вот с конфигурацией FLASH ULINK2 @1 возникли проблемы : при попытке запустить этот вариант Кейл зависает. Настройки проекта не менял, всё без изменений из примера. В чём может быть причина? На сайте StartMilandr работа с этим проектом описана, но подробно только в части RAM, а вот с FLASH я как то не разобрался.
Добрый день!

В проекте SMP приведена работа МК в режиме DualCore, при этом код для двух ядер реализован в одном проекте, разветвление выполнения программы сделано на основе значения регистра SMP_REG. Так как это единый проект для двух ядер, то его необходимо загрузить в память МК только при запуске отладки 0 ядра, запуск отладки 1 ядра не должен повторно загружать программу. Поэтому конфигурации RAM ULINK2 @0 и FLASH ULINK2 @0 загружают в память МК программу, а конфигурации RAM ULINK2 @1 и FLASH ULINK2 @1 позволяют подключиться к уже загруженной программе, не выполняя повторную запись. Для корректной отладки в конфигурациях для 1 ядра указывается только загрузка отладочной информации (файл *.ini).

Поэтому, чтобы запустить отладку 1 ядра в FLASH ULINK2 @1, необходимо сначала загрузить программу во Flash-память в FLASH ULINK2 @0. Далее требуется, чтобы программа запустилась из Flash-памяти, для этого на плате нужно установить соответствующий режим работы, например, FLASH+JB. После того как программа будет запущена, можно подключиться к 1 ядру в конфигурации FLASH ULINK2 @1.

Автор:  NikP [ 2020-окт-14 10:26 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Что то у меня не получается.
Порядок операций, который я выполняю :
1. Устнавливаю на плате режим EEPROM JB (ону меня постоянно включен, просто проверка)
2. Включаю питание
3. Кнопка S5.
4. Загружаю проект SMP в uVision
5. Компилирую FLASH ULINK2 @0
6. Выполняю : Flash->Erase; Flash-> Download
7. Компилирую FLASH ULINK2 @1
8. Жму кнопку : Start/Stop Debug Session
9. uVision благополучно виснет ( похоже, сваливается в бесконечный цикл ожидания...)

Что из этих действий выполнено неправильно? Что критично в настройках (требует проверки перед запуском)?
IDE у меня uVision5, скачанный с сайта Keil (ограничение по коду 32К), программатор ULINK2 RealView.

Автор:  редактор [ 2020-окт-14 11:38 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

На вкладке Debug проверте галку принудительной загрузки (Load Application at Startup)

Автор:  NikP [ 2020-окт-21 10:49 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

Добрый день!
Диоды в режиме DualCore (проекта SMP) на отладочной плате замигали, всё ОК.
Попробовал пойти дальше изменить частоту тактирования ядра HSI (что в примере) на HSE .
К проекту SMP добавил модули mldr124_clk.h и mldr124_clk.с.

В проекте добавил код :
...........
// Настройка тактовой частоты: HSE0-PLL0


CLK_CNTR->PER1_CLK |= 1<<26; // COMP0 EN
COMP0->ANABG_CTRL=0x00000081;
BKP->KEY = 0x8555AAA1;

CLK_XSEConfig( CLK_HSE0, CLK_XSE_ON );

if( !CLK_XSEWaitReady( CLK_HSE0 ) )

if(!CLK_SetPllClk( &CLK_CNTR->PLL[0], PLL_CLK_HSE0, CPU_CLK ) )

CLK_PllState( &CLK_CNTR->PLL[0], ENABLE );
if( !CLK_PLLWaitReady( &CLK_CNTR->PLL[0] ) )

CLK_CNTR->MAX_CLK = MAX_CLK_PLL0;
............

При этом если данный код вставлять в участок программы if (SMP_REG==0) , то импульсы идут только по выходу, управляемому
ядром 0, если в if (SMP_REG==1) - то импульсы на выходе, управляемому ядром 1. Если код вставить в оба участка, то программа вроде работает, но на выходах ничего нет.
Вопрос: как настроить тактовую частоту ядер, отличную от HSI ?

Автор:  Lampadov [ 2020-окт-26 15:55 ]
Заголовок сообщения:  Re: Микроконтроллер для электродвигателей

NikP писал(а): *
Добрый день!
Диоды в режиме DualCore (проекта SMP) на отладочной плате замигали, всё ОК.
Попробовал пойти дальше изменить частоту тактирования ядра HSI (что в примере) на HSE .
К проекту SMP добавил модули mldr124_clk.h и mldr124_clk.с.

В проекте добавил код :
...........
// Настройка тактовой частоты: HSE0-PLL0


CLK_CNTR->PER1_CLK |= 1<<26; // COMP0 EN
COMP0->ANABG_CTRL=0x00000081;
BKP->KEY = 0x8555AAA1;

CLK_XSEConfig( CLK_HSE0, CLK_XSE_ON );

if( !CLK_XSEWaitReady( CLK_HSE0 ) )

if(!CLK_SetPllClk( &CLK_CNTR->PLL[0], PLL_CLK_HSE0, CPU_CLK ) )

CLK_PllState( &CLK_CNTR->PLL[0], ENABLE );
if( !CLK_PLLWaitReady( &CLK_CNTR->PLL[0] ) )

CLK_CNTR->MAX_CLK = MAX_CLK_PLL0;
............

При этом если данный код вставлять в участок программы if (SMP_REG==0) , то импульсы идут только по выходу, управляемому
ядром 0, если в if (SMP_REG==1) - то импульсы на выходе, управляемому ядром 1. Если код вставить в оба участка, то программа вроде работает, но на выходах ничего нет.
Вопрос: как настроить тактовую частоту ядер, отличную от HSI ?
Здравствуйте!

Использовать частоту для MAX_CLK, отличную от HSI, в режиме DUALCORE можно, при этом без каких-либо проблем на отладочной плате производства компании Миландр на базе микроконтроллера Электросила будут функционировать следующие предустановки: HSE0, HSE0/2, HSI/2. В Вашем же случае для частоты MAX_CLK применяется блок умножения тактовой частоты PLL (всего четыре блока). При работе с этим блоком есть несколько особенностей (учтены в приложенном к посту проекте):

1. При использовании библиотечного файла mldr149_clk.c (или mldr124_clk.c), в частности функции CLK_SetPllClk(), которая применяется в конструкции для задания необходимой частоты, важно учесть, что при поиске делителя q допущена ошибка, что может приводить к некорректной работе на определенных частотах. В скором времени официально будет предоставляться пак для IDE Keil под микроконтроллер Электросила, где данный файл уже будет актуальным;
2. Выходная частота PLL должна быть от 150 МГц до 300 МГц, выходной же делитель может быть 2 или 4, поэтому минимальная частота, которую можно задать с PLL, составляет 37.5 МГц;
3. У FLASH-памяти есть время выборки, и если частота большая, то прежде чем на неё перейти, нужно настроить количество циклов ожидания в контроллере FLASH, регистр CNTR, биты [3:0] поля WAITCIRCLE.

Приблизительно рассчитанное количество циклов ожидания в контроллере FLASH для работы микроконтроллера на разных частотах:
Диапазон частот 37.5 МГц - 86 МГц = не менее 2;
Диапазон частота 87 МГц - 124 МГц = не менее 3;
Диапазон частот 125 МГц и более = 4 и более.

Проблем выявлено не было, всё работает штатно. Если же Вами будет принято решение отлаживать оба ядра, то необходимо следовать рекомендациям из статьи официального информационного портала, которая неоднократно упоминалась в переписке, тем не менее, статья доступна по ссылке: https://support.milandr.ru/base/primene ... how/24394/

Для Вашего же удобства во вложении к посту, на которой представлены настройки для подключения отладчиком (ULINK2, например) к каждому ядру, пока другое выполняет свою программу.

Не забудьте, пожалуйста, для работы с микроконтроллером Электросила обновить проект спецификации, обновление которого состоялось 21.10.2020. Актуальная версия проекта спецификации на микроконтроллер Электросила, ровно как и любая другая документация по изделиям компании Миландр, доступна на информационном портале отдела технической поддержки компании Миландр (помимо официального сайта компании Миландр за исключением как раз-таки части документации), в поиске раздела "Документация": https://support.milandr.ru/docs/dokumentatsiya/

Открыть Тык
Вложение:
[ attachment ]
elpower_debug.png [ 99.97 КБ | 129 просмотров ]
Закрыть


Вложения:
ElPower_DualCore.zip [336.6 КБ]
8 скачиваний

Страница 13 из 13 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/