Easyelectronics.ru

Электроника для всех
Текущее время: 26 янв 2022, 13:59

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 00:11 
Только пришел

Зарегистрирован: 06 май 2018, 17:18
Сообщения: 6
Здравствуйте. Начал разбираться с freertos на примере stm32f4discovery. Удалось скомпилировать, но светодиод почему то сначала мигает медленно, а потом перестает мигать, оставаясь во включенном состоянии. Что делать? Вот код https://github.com/andrey-pr/BrokenFreeRtosQuestion . Заранее спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 02:20 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2292
THIS SHIT IS NOT WORKING, DONT TRY TO USE IT!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 11:35 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 805
А что вообще прошивка должна делать? Много когда (точнее ненужных комментариев). Лень разбираться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 13:13 
Только пришел

Зарегистрирован: 06 май 2018, 17:18
Сообщения: 6
x893 писал(а):
THIS SHIT IS NOT WORKING, DONT TRY TO USE IT!!!


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 13:14 
Только пришел

Зарегистрирован: 06 май 2018, 17:18
Сообщения: 6
ArtDen писал(а):
А что вообще прошивка должна делать? Много когда (точнее ненужных комментариев). Лень разбираться


Мигать светодиодом. А комментарии скопированы вместе с кусками примера


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 13:22 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2292
https://www.freertos.org/simple-freertos-demos.html
Всё расписано черным по белому


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 13:58 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2021, 21:02
Сообщения: 1100
Охохо, там написано столько букв, что едва узнаешь знакомые... :) Какие-то очереди, семафоры, задачи. А создание таймера - закоментчено! xTimerCreate - раскоменьтите. А остальное - уберите. Напишите ф-цию vExampleTimerCallback, в которой будет смена состояния светика. Таймер настройте на циклический режим, с автоперезапуском.

Семафор не создается в виде задачи. Семафор создается созданием семафора непосредственно.
И вообще, раньше была небольшая русскоязычная книжка по FreeRTOS. Она хотть и старая, но основы в ней описаны. Забыл, как автор звался. Как-то на К. Курицын?..ээ... блин, мож, кто помнит, напишет.

_________________
Факинтош, ё


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 14:07 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2507
Откуда: Волноваха
Курниц

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 14:08 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2021, 21:02
Сообщения: 1100
О, точно, Курниц! Вот она: http://easyelectronics.ru/img/ARM_kurs/ ... Kurniz.pdf

_________________
Факинтош, ё


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 15:33 
Старожил
Аватара пользователя

Зарегистрирован: 08 сен 2011, 13:39
Сообщения: 1247
Откуда: Беларусь, Гомель
Так человеку не нужен таймер, он выразился некорректно, там же создается только одна задача, в которой делается Toggle ножки и потом task_sleep на 100 мс. У него просто падает что-то в процессе... Возможно с настройкой тактирования что-то не то. В мэйне я криминала не увидел (бегло), надо дальше анализировать, почему оно падает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 15:35 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 805
Обычно, если перестаёт работать через рандомное, но короткое время после старта - это некорректно настроенная латентность флеша


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 15:38 
Старожил
Аватара пользователя

Зарегистрирован: 08 сен 2011, 13:39
Сообщения: 1247
Откуда: Беларусь, Гомель
Еще бывает включенное по ошибке прерывание.
Вообще если нет отладчика, то надо хотя бы на HardFault повесить реализацию, которая светодиод на какой-то ножке включит, позволяет снять часть вопросов... В отладчике же проще: поставил паузу, и сразу видно, куда залетел...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 21 окт 2021, 18:52 
Старожил
Аватара пользователя

Зарегистрирован: 11 фев 2021, 21:02
Сообщения: 1100
Настройка через Куб автоматом выдаст верную латентность, насколько я помню.
У Топикстартера мигание светика реализовано в функции задачи prvQueueReceiveTask - HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_15); и vTaskDelay(100); Изначально функция была для приема очереди, но ТС выкинул из нее всё, оставив только переключение пина и блокировку задачи на 100 мс. В системе создается только одна задача, остальное закоментчено. Частота систиков 1 кГц. Объем кучи - 75 кило. Стек задачи - 130 слов. Вроде никакого криминала, если не учитывать, что мы не видим настройки системных частот.
Но зато в функции vApplicationTickHook, которая вызывается совместно с системными тиками, есть некоторая бяка: if (ulCount >= 500UL) xSemaphoreGiveFromISR(xEventSemaphore, &xHigherPriorityTaskWoken);.
А при том, что остальные задачи и семафоры не создаются, это и вызывает сбой через 500 тиков. И вообще, так делать нельзя, в перехватчике системных тиков нельзя вызывать длительно выполняющиеся функции, и особенно не стоит вызывать функции API, и особенно функцию семафоров. Это жопа, извините. Если нужно отсчитать 500 тиков, то создайте либо программный таймер средствами API RTOS, либо настройте аппаратный таймер микроконтроллера на отсчет интервала, равного 500 системным тикам RTOS.

Медленное мигание светика (медленнее, чем ожидалось от написанного) говорит о несоответствии системной частоты в конфиге RTOS, либо о неправильном указании частоты таймера SysTick. Параметр configSYSTICK_CLOCK_HZ позволяет задать соотвесттвие настройкам таймера систика.

_________________
Факинтош, ё


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Некорректно работает таймер в FreeRTOS
СообщениеДобавлено: 22 окт 2021, 16:52 
Старожил
Аватара пользователя

Зарегистрирован: 20 май 2013, 22:29
Сообщения: 805
Ну и в целом, при разработке под freertos крайне желательно определять макросы configASSERT и configCHECK_FOR_STACK_OVERFLOW в конфиге : https://www.freertos.org/a00110.html#configASSERT + https://www.freertos.org/Stacks-and-sta ... cking.html
Куча проблем будет выявляться самой freertos гораздо быстрее и точнее и будет меньше "оно работало, работало и повисло"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB