Перейти к содержанию

FreeRTOS


Рекомендуемые сообщения

Вроде нет у нас темки по FreeRTOS. Создам, пусть будет.

И так, первый вопросик на засыпку. А можно ли её на халяву использовать в коммерческих проектах ?
Мне, конечно, без разницы, во всех проектах я делаю свои планировщики, но почему бы не попробовать что-нибудь готовое.

 

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Давайте тут ещё всякими наработочками и полезными кодами делиться :)

Выводим на дисплей загрузку процессора и использование памяти операционкой (своей кучи) :

Скрытый текст

 


volatile unsigned long  IdleCount = 0;
volatile int            cpu_perc=0;

/***********************************************************************************************************************************/
void Main_Task(void *vpParam){
	static char lcd_buf[40]="";
    while(1){
        vTaskDelay(1000 Ms);
      	
        sprintf(lcd_buf, "CPU: %lu,%lu%c", cpu_perc/10, cpu_perc%10, '%');
        Display_Puts_XY(0, 0, lcd_buf, 1);
      	
        int stack_used_max = configTOTAL_HEAP_SIZE-xPortGetMinimumEverFreeHeapSize();
        int perc=(stack_used_max*100)/configTOTAL_HEAP_SIZE;

        sprintf(lcd_buf, "Heap: %lu(%lu %c)", stack_used_max, perc, '%');
        Display_Puts_XY(0, 10, lcd_buf, 1);      
      
    }
}
/***********************************************************************************************************************************/

/***********************************************************************************************************************************/
void Perc_Task(void *vpParam){
int i, perc_01, prev_cnt;

vTaskDelay(100 Ms);

prev_cnt=xTaskGetTickCount();
IdleCount=0;
vTaskDelayUntil(&prev_cnt, 1000 Ms);
perc_01=IdleCount/1000;
//----------------------------------------------
xTaskCreate(Main_Task, "Main_Task", configMINIMAL_STACK_SIZE*2, NULL, 1, &pMain_Task);      // Тут создаём остальные задачи, или основную, в которой все создадутся.
//----------------------------------------------
prev_cnt=xTaskGetTickCount();
while(1){
    IdleCount=0;
    vTaskDelayUntil(&prev_cnt, 1000 Ms);
    i=IdleCount/perc_01;
    if(i>1000)  i=1000;
    i=1000-i;
    cpu_perc=i;
}
}
/***********************************************************************************************************************/
void vApplicationIdleHook( void ){
    portENTER_CRITICAL();
    IdleCount++;
    portEXIT_CRITICAL();
}
/***********************************************************************************************************************************/

/***********************************************************************************************************************************/
void main(void){

........
........
xTaskCreate(Perc_Task, "Perc_Task", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES-1, NULL);      // Первая задача. Сначала нужно ей отработать, потом из неё создадутся все сотальные.
........
........
vTaskStartScheduler();
while(1);
}

 

Очень помогает при набивании девайса всяческим функционалом в виде задач, очередей, ... Смотришь на циферки и сразу отпадает желание быдлокодить :) Начинаешь рационально использовать ресурсы и правильно составлять алгоритмы программы :)

Скрытый текст

DSC_0065.thumb.JPG.0341861e65bca025ca37bb269f20505f.JPG

 

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Подскажите пожалуйста,как подключить файлы к проекту в MPLAB X.Нужно подключить .h и .c

Первое что я пробую это пкм на папке Header Files ->Add Existing Item

Там выбираю папку с файлом и сам файл.Справа над кнопками есть выбор Store path as,так вот пока не поставишь там галку Copy,что есть судя по хелпу копирование данного файла в папку проекта,файл визуально добавляется в дерево проекта,но вот не подключается по факту .То есть данным способом без галки copy мы чисто добовляем отображение файла и всё?Типа что бы другой разработчик видел что мы подключили?

Следующая попытка подключить нужные файлы это пкм на проекте и выбор properties-general далее Source Folders .Там выбираю папку где находится файл и жму select,путь появляется в окошке source folders,но файл при компиляции так и не находит.

Третий вариант это на проекте пкм properties xc32-gcc option categories->preprocessing and messages->include directories->browse и тут уже выбрав папку среда начинает искать и находить файл.Получается зачем нужны предыдущие способы?Каша в голове полная,помогите понять что к чему.

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А если к примеру нужно фрииртос подключить,получается копировать все файлы?

Просто закидываю папку в проект с осью и не охото каждый раз руками указывать каждый файл

Ссылка на комментарий
Поделиться на другие сайты

В любом случае, .h-файлы мало кинуть в проект, к ним должны быть правильные пути. Либо в настройках проекта (подключаемые папки), либо в директиве #include.
В проект они добавляются только для удобства.

Ссылка на комментарий
Поделиться на другие сайты

Вот и суть в этом,у того же  же фриртос во многих файлах,подключаемые файлы записаны типа  #include "tasks.h" и стоит тронуть их из общей папки,приходится явно задавать пути потом для всех (типа "proj\rtos\...\...\...\tasks.h").Я думал есть средство что бы они поняли насколько их далеко по папкам засунули относительно корневого каталога.

Ссылка на комментарий
Поделиться на другие сайты

В файлах фриртос все иклюды имеют относительные пути. По этому достаточно в проекте выбрать только директорию самой оси. Плюс добавить в проект необходимые .c-файлы.

Ссылка на комментарий
Поделиться на другие сайты

В 12.02.2018 в 21:10, Alex сказал:

В файлах фриртос все иклюды имеют относительные пути

Судя по файлам,не совсем. И сделано это скорее всего по этой причине -Any #include directives that use directory separators in the header file specifications should be changed. Remove all but the header file name in the directive. Add the directory path to the compiler’s include search path or MPLAB X IDE equivalent. This will force the compiler to search the directories specified with this option.

И когда подключаешь ось к мплабу,после открытия их демок в настройках компилятора вылезают такие добавленные пути -I ../../../Source/include -I ../../../Source/portable/MPLAB/PIC32MX -I ../../Common/include -I ../

Изменено пользователем StationX
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, StationX сказал:

Судя по файлам,нет.

Покажите мне хотябы один файл из FreeRTOS, в котором прописаны не относительные пути.

2 минуты назад, StationX сказал:

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

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

Ссылка на комментарий
Поделиться на другие сайты

Настройки компилятора -ПКМ на проекте-Conf-xc32-xc32gcc-additional options: -I ../../../Source/include -I ../../../Source/portable/MPLAB/PIC32MX -I ../../Common/include -I ../

10 минут назад, Alex сказал:

Покажите мне хотябы один файл из FreeRTOS, в котором прописаны не относительные пути.

Там вообще не прописаны пути,только имя подкл файла.Но всё это ИМХо,я же новенький,вероятность моей ошибки близка к 100%

Ссылка на комментарий
Поделиться на другие сайты

Я имею ввиду то,что если подключить чисто си файлы и указать путь расположения только директорию самой оси,то мплаб будет говорить что не найдены файлы,а когда делаю как пишут в MPLAB® XC32 C/C++ Compiler User’s Guide,то есть добавляю опции в виде -I ../../../Source/include -I ../../../Source/portable/MPLAB/PIC32MX -I ../../Common/include -I ../ все работает.

Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, StationX сказал:

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

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

Ссылка на комментарий
Поделиться на другие сайты

То есть в одну папку свалить все необходимые файлы и подключить её?Я думал надо делать и делал как пишет Курниц в цикле статей про РТОС,убрать из папок все то,что не относится к ядру и подключаемому контроллеру и потом уже подключать оставшиеся файлы.

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, StationX сказал:

То есть в одну папку свалить все необходимые файлы и подключить её?

Да.
Хидеры лежат в папке "include", их можно кинуть в корневую папку ОСи, рядом с .c-файлами. Туда же кидаем и порт для своего камня из папки "portable".

Ссылка на комментарий
Поделиться на другие сайты

Попытаюсь пояснить что это.

Курниц в своей статье пишет использовать makefile.

Я пока не разобрался с тем что такое makefile,но из того что я вычитал,я понял(вероятно что и не правильно понял) что эта часть

 SRC = \
main.c \
$(SOURCE_DIR)/tasks.c \
$(SOURCE_DIR)/queue.c \
$(SOURCE_DIR)/list.c \
$(SOURCE_DIR)/croutine.c \
$(SOURCE_DIR)/portable/MemMang/heap_1.c \
$(PORT_DIR)/port.c

 

Говорит о том,что: необходимо подключить эти файлы,что я и хотел по сути сделать тем,что Вы обвели кружком :rolleyes:

 

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...