|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|||||||||||
Время переключения между задачами и прерываниями в FreeRTOS12.04.2021, 14:24. Показов 5682. Ответов 36
Решил сделать новую тему, так как вопрос выходит за рамки рассмотрения прошлой темы
Получить заданную тактовую частоту на пин мк Вопрос возник с временем переключения между прерываниями/задачами в FreeRTOS. Один пин настроен на внешнее прерывание, при наступлении высокого уровня на этом пине вызывается это прерывание, в котором запускается 4 канала таймера. Соответственно как только таймеры будут запущены и начнут отсчет, то каждый из каналов будет вызывать свое прерывание, в котором будет "дергаться" другой пин. Первое прерывание таймера начинается сразу же с 0. По-сути пока что код больше ничего не делает. Проблема заключается в том, что начиная с момента запуска каналов таймера, до наступления прерывания первого из каналов проходит порядка 45 мксек. Что все это время делает код непонятно, отладчик постоянно попадает в прерывание системного таймера. Хотя сам системный таймер работает раз в млсек. "Игра" с приоритетами результата не дает. Внешнее прерывание, которое срабатывает по входящему уровню на пин:
Прерывание от таймера:
0
|
|||||||||||
| 12.04.2021, 14:24 | |
|
Ответы с готовыми решениями:
36
Как измерить время между прерываниями по USART Относительное время между прерываниями таймеров в МК за день Непонятки с FreeRTOS и прерываниями |
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||
| 13.04.2021, 11:57 [ТС] | ||||||
|
_SayHello, Отладчик меня почему-то периодически перебрасывает в эту фукнцию, несколько раз за цикл прерывание- таймер
0
|
||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 13.04.2021, 12:19 | |
|
DmitryDDDD, а в прерывание TIM4 пападает вообще?
0
|
|
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||||||||||||
| 13.04.2021, 12:27 [ТС] | ||||||||||||||||
|
_SayHello, Да, после попадания в EXTI запускаются все каналы таймера, отсюда HAL_TIM_OC_Start_IT(&htim4, TIM_CHANNEL_1);
попадаю сюда
0
|
||||||||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 13.04.2021, 12:40 | |
|
DmitryDDDD, во время дебага надо фризить таймеры, иначе пока стоишь на точке останова аппаратный таймер считает
0
|
|
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
| 13.04.2021, 13:02 [ТС] | |
|
_SayHello, Не подскажите как это сделать? А то по дебагеру почти ничего не нашел полезного, а сам им пользуюсь скорее на интуитивном уровне и не часто
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 13.04.2021, 13:13 | |
|
DmitryDDDD, поищите регистр Debug MCU APB2 Freeze register в RM
1
|
|
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|||||||||||
| 13.04.2021, 14:30 [ТС] | |||||||||||
|
_SayHello,
Сюда попадаю, долго тут кручусь, но не могу по тикам отследить
char str_DWT[16] = {0,}; uint32_t count_tic = 0; Как ее объявить правильно, чтобы она была доступна из всех участков программы? Фриз сделал сразу после иницализации, вроде номрально работает
0
|
|||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 13.04.2021, 14:35 | ||
|
DmitryDDDD,
А в прерывание TIM4 то вообще залетает? Там ставили точку останова?
0
|
||
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||||||||
| 13.04.2021, 17:02 [ТС] | ||||||||||||
|
_SayHello, объявляю как extern, не получается
0
|
||||||||||||
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||
| 14.04.2021, 07:26 [ТС] | ||||||
|
_SayHello, ValeryS, Вот сколько не пробую, не могу глобально объявить нжную мне переменную DWT_CYCCNT
Без этого нормально по тикам не получается отследить маршрут от EXTI до прерывания таймера
0
|
||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||
| 14.04.2021, 09:18 | |||
|
1
|
|||
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||
| 14.04.2021, 10:48 [ТС] | ||||||
|
ValeryS, _SayHello, Сделал, описал, прошелся отладкой. Отладчик показывает, что большую часть времени код висит тут
0
|
||||||
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|||||||||||
| 14.04.2021, 12:07 [ТС] | |||||||||||
|
А попадаю я туда, насколько я понял, отсюда
Да, почему-то попадаю в функцию задержки и кручусь в цикле пока не выполнится условие
0
|
|||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 14.04.2021, 13:07 | |
|
DmitryDDDD, теперь вопрос, кто вызывает этот delay
0
|
|
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||
| 14.04.2021, 13:13 [ТС] | ||||||
|
_SayHello, По-моему сюда код перед этим попадал, сейчас еще раз пройдусь
0
|
||||||
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
|
| 14.04.2021, 13:34 [ТС] | |
|
_SayHello,
Может что с настройками таймера? Или все это переписать на регистры или LL, может поможет? Потому что даже если запускать таймер не из прерывания, все равно такая же ерунда получается
0
|
|
|
4 / 4 / 0
Регистрация: 12.11.2018
Сообщений: 511
|
||||||
| 15.04.2021, 13:01 [ТС] | ||||||
|
_SayHello, ValeryS, Не знаю как это работает, а точнее до конца еще не разобрался, но помогло такое решение: добавить перед запуском таймера TIM4->EGR = TIM_EGR_UG;
0
|
||||||
| 15.04.2021, 13:01 | |
|
FreeRTOS - частота переключения больше 1KHz? Связь в SQL между задачами MS Project Server и задачами Sharepoint Нужно измерит интервал времени в секундах между двумя прерываниями Многозадачность. Переключение между 3 задачами Переключения между формами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|