|
FreeRTOS - минимальное время тика? |
|
|
|
 |
Ответов
|
May 29 2018, 10:17
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Потихоньку разбираюсь далее с FreeRTOS. Возникла новая проблема, я ее решил но возможно не совсем правильно и не понимаю из за чего так получилось. Сейчас системный тик 1мсек. Может кто подскажет? Есть таймер настроенный на 10мкс, на каждом прерывании он декрементирует глоб. переменную, значение которой задает Task2 (имеет самый высокий приоритет). Когда переменная = 0, устанавливает семафор, чтоб разбудить задачу, которая установит новое значение переменной. Код //Task2 ... IrState.ctim10ms = IrState.bRxTx[pValue->nComm][0]; ctx_bit = 1; xSemaphoreTake(IrState.xSemNx, 0); T10_Init(); while(ctx_bit <= IrState.cRxTx[pValue->nComm]) { [b]enableInterruptTIM10();[/b] if(xSemaphoreTake(IrState.xSemNx, 25) != pdTRUE) break; SwitchPWM; IrState.ctim10ms = IrState.bRxTx[pValue->nComm][ctx_bit]; ctx_bit++; } T10_DeInit(); ...
void TIM10_IRQHandler(void) { static portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; if(TIM_GetFlagStatus(TIM10, TIM_FLAG_Update) != RESET) { TIM_ClearFlag(TIM10, TIM_FLAG_Update); if(IrState.ctim10ms) IrState.ctim10ms--; else { [b]disableInterruptTIM10();[/b] xSemaphoreGiveFromISR(IrState.xSemNx, &xHigherPriorityTaskWoken); portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); } } } В общем пока я не начал отключать прерывания таймера (в коде выделил), все висло в обработчике таймера и ни одна задача управление не получает.
|
|
|
|
|
May 29 2018, 10:33
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 13-05-09
Пользователь №: 49 008

|
Цитата(jcxz @ May 29 2018, 13:26)  Чтобы на столь высоких частотах периодических прерываний работало и не висло, нужно вначале научиться обходиться без куба. И потрудитесь хотя-бы посчитать каков период прерываний в тактах ядра. Где тут куб увидели? Ядра чего ОС? Если да то я писал 1мсек. P.S. На всякий случай, частота тактирования МК - 16МГц.
Сообщение отредактировал maxntf - May 29 2018, 10:37
|
|
|
|
|
May 29 2018, 10:44
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(maxntf @ May 29 2018, 13:33)  P.S. На всякий случай, частота тактирования МК - 16МГц. Естественно тактах CPU. Если не куб, то кубоподбный код: TIM_GetFlagStatus(), TIM_ClearFlag() у Вас всего 160 тактов между прерываниями, за которые CPU должен успеть кучу всего (откройте листинг и вручную посчитайте такты или то же самое сделайте отладчиком). Даже если писать нормально (с прямой работой с регистрами IO, без ненужных функций) при такой высокой частоте у Вас CPU только и будет заниматься входами/выходами в ISR - загрузка будет близка к 100%. А при обнулении счётчика так вообще там у Вас таймер наверняка переполняется и что-то при этом происходит. Вам надо кардинально пересматривать архитектуру проекта и или повышать частоту CPU или обходиться без таких ВЧ прерываний. И научиться работать с регистрами напрямую, без ненужных обёрток.
|
|
|
|
Сообщений в этой теме
maxntf FreeRTOS - минимальное время тика? May 22 2018, 09:36 nanorobot Цитата(maxntf @ May 22 2018, 14:36) Всем ... May 22 2018, 09:57 haker_fox QUOTE (maxntf @ May 22 2018, 17:36) Как о... May 22 2018, 10:24 maxntf Цитата(haker_fox @ May 22 2018, 13:24) 1.... May 22 2018, 11:27 k155la3 Цитата(maxntf @ May 22 2018, 12:36) . . .... May 22 2018, 10:31 haker_fox QUOTE (k155la3 @ May 22 2018, 18:31) Рабо... May 22 2018, 10:34 k155la3 Кроме всего, проверьте значения стеков задач (не п... May 22 2018, 11:43 maxntf Цитата(k155la3 @ May 22 2018, 14:43) Можн... May 22 2018, 11:53  k155la3 Цитата(maxntf @ May 22 2018, 14:53) В Кеи... May 22 2018, 12:02   maxntf Цитата(k155la3 @ May 22 2018, 15:02) Апп.... May 22 2018, 12:27    esaulenka Цитата(maxntf @ May 22 2018, 15:27) В общ... May 22 2018, 12:44    k155la3 Цитата(maxntf @ May 22 2018, 15:27) Не по... May 22 2018, 13:19 maxntf Я функцию TSL_tim_ProcessIT перенес в TIM3. Возмож... May 22 2018, 12:58 esaulenka Цитата(maxntf @ May 22 2018, 15:58) Я фун... May 22 2018, 14:21 haker_fox QUOTE (k155la3 @ May 22 2018, 19:43) Кром... May 22 2018, 13:08 maxntf Цитата(haker_fox @ May 22 2018, 16:08) Кс... May 23 2018, 10:57 Forger Цитата(maxntf @ May 22 2018, 12:36) Меняю... May 22 2018, 17:56 uriy Тоже никогда не делал меньше 1 мс. Зачем вам это п... May 23 2018, 04:19 k155la3 Цитата(uriy @ May 23 2018, 07:19) Тоже ни... May 23 2018, 08:55  Forger Цитата(k155la3 @ May 23 2018, 11:55) Зада... May 23 2018, 09:01 maxntf Нашел костыль.
В функции обработка кнопок есть деф... May 23 2018, 12:16 Forger Цитата(maxntf @ May 23 2018, 15:16) Нашел... May 23 2018, 12:25  maxntf Цитата(Forger @ May 23 2018, 15:25) Это е... May 23 2018, 12:46   Forger Цитата(maxntf @ May 23 2018, 15:46) Нужны... May 23 2018, 12:49 esaulenka Цитата(maxntf @ May 23 2018, 15:16) Нашел... May 23 2018, 19:46  maxntf Цитата(esaulenka @ May 23 2018, 22:46) Со... May 24 2018, 08:26   Forger Цитата(maxntf @ May 24 2018, 11:26) Тольк... May 24 2018, 09:59 jcxz Цитата(maxntf @ May 23 2018, 15:16) , а я... May 23 2018, 22:31  volodya Цитата(jcxz @ May 24 2018, 01:31) А какой... May 24 2018, 04:27   jcxz Цитата(volodya @ May 24 2018, 07:27) Вот ... May 24 2018, 06:17    Forger Цитата(jcxz @ May 24 2018, 09:17) вместе ... May 24 2018, 06:27     jcxz Цитата(Forger @ May 24 2018, 09:27) вся о... May 24 2018, 11:11      Forger Цитата(jcxz @ May 24 2018, 14:11) Мне тож... May 24 2018, 12:03       jcxz Цитата(Forger @ May 24 2018, 15:03) Работ... May 24 2018, 13:59        Forger Цитата(jcxz @ May 24 2018, 16:59) Что зна... May 24 2018, 14:14 Arlleex FreeRTOS работает хорошо и правильно, если с ней п... May 24 2018, 07:28 Baser Цитата(jcxz @ May 24 2018, 01:31) А какой... May 24 2018, 08:34 Turnaev Sergey Цитата(Baser @ May 24 2018, 11:34) А по м... May 24 2018, 13:25  esaulenka Цитата(Turnaev Sergey @ May 24 2018, 16:2... May 25 2018, 07:31   jcxz Цитата(esaulenka @ May 25 2018, 10:31) Кл... May 25 2018, 19:29 maxntf Что то кажется мне, что дело не в тачлиб, во второ... May 24 2018, 09:14 uriy ЦитатаНо есть и минус (для меня): пока что нет у S... May 25 2018, 05:04 Forger Цитата(uriy @ May 25 2018, 08:04) А про э... May 25 2018, 05:14 uriy У меня было такое же мнение о вертикальной прокрут... May 25 2018, 06:12 Forger Цитата(uriy @ May 25 2018, 09:12) А J-lin... May 25 2018, 06:17        ViKo Я думал, речь идет по-прежнему про частоту работы ... May 29 2018, 11:24 Forger Любого ждет анафема, кто замечен за подобными злод... May 29 2018, 11:11  jcxz Цитата(Forger @ May 29 2018, 14:11) Любог... May 29 2018, 11:29   Forger Я же все объяснил на конкретном примере.
Еще раз,... May 29 2018, 13:01    jcxz Цитата(Forger @ May 29 2018, 16:01) а тут... May 29 2018, 13:37     Forger Цитата(jcxz @ May 29 2018, 16:37) В прогр... May 29 2018, 13:51      jcxz Цитата(Forger @ May 29 2018, 16:51) Или В... May 29 2018, 14:00       Forger Цитата(jcxz @ May 29 2018, 17:00) Ещё раз... May 29 2018, 14:15       maxntf Цитата(jcxz @ May 29 2018, 17:00) PPS: ТС... May 29 2018, 14:27        Forger Цитата(maxntf @ May 29 2018, 17:27) Пробл... May 29 2018, 14:39         maxntf Цитата(Forger @ May 29 2018, 17:39) Для н... May 29 2018, 14:44       Arlleex Цитата(jcxz @ May 29 2018, 18:00) PS: Кто... May 29 2018, 14:50        jcxz Цитата(Arlleex @ May 29 2018, 17:50) ...
... May 29 2018, 15:27         Forger Цитата(jcxz @ May 29 2018, 18:27) Где там... May 29 2018, 16:51 maxntf В общем выкинул все лишнее из программы.
ТО таймер... May 30 2018, 07:05 Forger Цитата(maxntf @ May 30 2018, 10:05) В общ... May 30 2018, 07:13  maxntf Цитата(Forger @ May 30 2018, 10:13) Помен... May 30 2018, 07:17   Forger Цитата(maxntf @ May 30 2018, 10:17) ну в ... May 30 2018, 07:23    maxntf Цитата(Forger @ May 30 2018, 10:23) Если ... May 30 2018, 07:25     Forger Цитата(maxntf @ May 30 2018, 10:25) Не в ... May 30 2018, 07:32      maxntf Цитата(Forger @ May 30 2018, 10:32) Я смо... May 30 2018, 07:51       Arlleex Цитата(maxntf @ May 30 2018, 11:51) Да та... May 30 2018, 08:05 jcxz Цитата(maxntf @ May 30 2018, 10:05) Если ... May 30 2018, 07:36 maxntf Привожу проблемные участки кода (инициализация та ... May 30 2018, 07:35 maxntf Все разобрался, не верно обрабатывал семафор.
Нужн... May 30 2018, 08:06 Arlleex Кодif(xSemaphoreGiveFromISR(xSemNx, &x... May 30 2018, 08:17 maxntf Цитата(Arlleex @ May 30 2018, 11:17) Кодi... May 30 2018, 08:25  jcxz Цитата(maxntf @ May 30 2018, 11:25) На св... May 30 2018, 08:32 maxntf На семафоре полностью развязать задачу я не смог, ... May 30 2018, 13:03 Forger Цитата(maxntf @ May 30 2018, 16:03) Если ... May 30 2018, 13:06  maxntf Цитата(Forger @ May 30 2018, 16:06) Очере... May 30 2018, 13:29   Forger Цитата(maxntf @ May 30 2018, 16:29) Я спр... May 30 2018, 13:33    maxntf Цитата(Forger @ May 30 2018, 16:33) Напос... May 30 2018, 13:50     Forger Цитата(maxntf @ May 30 2018, 16:50) xHigh... May 30 2018, 14:14  esaulenka Цитата(Forger @ May 30 2018, 16:06) Очере... May 30 2018, 15:30   Forger Цитата(esaulenka @ May 30 2018, 18:30) Ра... May 30 2018, 15:34 maxntf Не тот пример был. May 30 2018, 14:30 esaulenka Никакой конкретики. Отлично.
Ещё раз. Пожалуйста, ... May 30 2018, 17:15 Forger Цитата(esaulenka @ May 30 2018, 20:15) ..... May 30 2018, 17:31 maxntf Цитата(esaulenka @ May 30 2018, 20:15) Ни... May 30 2018, 17:58  Forger Цитата(maxntf @ May 30 2018, 20:58) Чтоб ... May 30 2018, 18:27 Arlleex Взял отладку на STM32F429, повторил код автора топ... May 30 2018, 19:41 jcxz Цитата(Arlleex @ May 30 2018, 22:41) Взял... May 30 2018, 20:05  Arlleex Цитата(jcxz @ May 30 2018, 23:05) Пролист... May 30 2018, 20:15 maxntf Всем участникам спасибо за помощь и в некоторых сл... May 31 2018, 13:15 Arlleex Цитата(maxntf @ May 31 2018, 17:15) В нач... May 31 2018, 13:44  maxntf Цитата(Arlleex @ May 31 2018, 16:44) Еще ... May 31 2018, 13:46
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|