Jump to content
    

Вопрос со звёздочкой по программным таймерам

15 минут назад, Arlleex сказал:

В Вашем случае, получается, не может быть >1 задач с одинаковыми приоритетами. У всех разные?

Да. Это иногда недостаток наверное. Но также - не встречал в практике прям насущной необходимости в равноприоритетных задачах.

Зато очень быстрое и простое управление задачами.

Share this post


Link to post
Share on other sites

6 hours ago, tonyk_av said:

Так я писал о том, что задача таймера ОС имела значительно, в разы меньший приоритет поэтому очередь до её запуска доходила редко.

У меня вот такие приоритеты.

Таймерная задача - приоритет по умолчанию, ADCTask приоритет тоже по умолчанию для задач.

2024-06-0921_18_30-Serial(COM).png.413a053fb5df460aa1265257f1b00848.png

Share this post


Link to post
Share on other sites

10 hours ago, Mty said:

У меня вот такие приоритеты.

Таймерная задача - приоритет по умолчанию, ADCTask приоритет тоже по умолчанию для задач.

2024-06-0921_18_30-Serial(COM).png.413a053fb5df460aa1265257f1b00848.png

Ё-моё! Я уже начинаю становится ярым противником Куба.
Откройте книжку по FreeRTOS и почитайте про приоритеты. Ну нельзя тупо, как баран на верёвочке, идти на заклание. У вас приоритет задачи таймеров чуть выше приоритета задачи, вызываемой при простое, поэтому она просто очень редко вызывается. Поставьте на ней точку останова, когда пойдёте на обед. Есть шанс, что вернувшись, ваша программа остановится на ней.

Вам реально нужно столько приоритетов, не менее 32?

Тупо задайте Tmr_Svc приоритет 24 и посмотрите результат.

Share this post


Link to post
Share on other sites

1 hour ago, tonyk_av said:

Тупо задайте Tmr_Svc приоритет 24 и посмотрите результат.

Тупость - это не самое страшное. Может у него тупо

while(1)
{
   vTaskDelay(1000);
}


или ещё тупее

Share this post


Link to post
Share on other sites

1 minute ago, x893 said:
while(1)
{
   vTaskDelay(1000);
}

Это как раз не страшно. ОС просто переключается на другие задачи.  У ТС просто таймерная задача не вызывается из-за мусорного приоритета. Я Кубом для кодогенерации не_пользуюсь, поэтому не знаю, чё-где надо у него покрутить, чтобы он правильно настроил приоритеты.

Share this post


Link to post
Share on other sites

11 minutes ago, tonyk_av said:

Это как раз не страшно. ОС просто переключается на другие задачи.  У ТС просто таймерная задача не вызывается из-за мусорного приоритета. Я Кубом для кодогенерации не_пользуюсь, поэтому не знаю, чё-где надо у него покрутить, чтобы он правильно настроил приоритеты.

Тупо мышью потыкать надо.

image.png.585167f645684c77c5f1b24f14c16159.png

Share this post


Link to post
Share on other sites

1 hour ago, x893 said:

Тупо мышью потыкать надо.

Не-не-не, это не то. Нужно задать приоритет системной задаче Tmr_svc.

Share this post


Link to post
Share on other sites

Just now, tonyk_av said:

Не-не-не, это не то. Нужно задать приоритет системной задаче Tmr_svc.

Программисты разберутся.

Share this post


Link to post
Share on other sites

Вроде ж давал ссылку на мануал по Free RTOS... А вот еще были раньше несколько статей на русском языке по FreeRTOS для микроконтроллеров, не помню автора, как-то Куриц или Курицын как-то так. Давнишние статейки, года 2010 наверно, но там даны основы, которые с тех пор и не поменялись

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...