реклама на сайте
подробности

 
 
> Keil RTOS и микросекундные задержки.
zheka
сообщение Apr 16 2015, 06:12
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Господа, есть проект в KEIL 5 под STM32F4Discovery, в котором подключена RTOS (Keil RTX). Она мне в принципе не нужна, она требуется для работы библиотеки USB_CDC, попытки отвязать ее от KEIL RTX не принесли успеха.
В Keil RTX есть только миллисекундные задержки, микросекундных - нет.
Пытался прикрутить библиотеку systick - не вышло - компилятор не дает создать свой Systick_Handler, мотивируя это тем, что таковой есть уже в HAL_CM4.C (это файл RTX)

Как мне в сложившихся условиях (невозможность отключить RTOS и отсутствие специальной функции в ней) получить функцию, осуществляющую задержку на заданное число микросекунд?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Apr 17 2015, 01:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(zheka @ Apr 16 2015, 12:12) *
Пытался прикрутить библиотеку systick - не вышло - компилятор не дает создать свой Systick_Handler, мотивируя это тем, что таковой есть уже в HAL_CM4.C (это файл RTX)

В чём сложность заменить системный ISR Systick своим?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 17 2015, 04:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(jcxz @ Apr 17 2015, 04:54) *
В чём сложность заменить системный ISR Systick своим?

тут тоже не так однозначно. Можно оттуда послать сигнал в задачу, но будет затрачено время на переключение, кстати, по-моему, в том же самом ISR Systick, т.е. сигнал нужно выставлять в самом начале прерывания, до обработок RTOS.



UPD
а можно попробовать такой финт:
1. Задействовать что-то неиспользуемое, например SPI на частоте 10 МГц
2. Настроить его на передачу 10 бит
3. Отправить одно 10-битное слово и заснуть в ожидании сигнала
4. Из прерывания SPI по окончании передачи отправить этот сигнал в задачу

По идее, если приоритет у задачи будет повыше, должно получиться
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 17 2015, 06:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Если нужны задержки на несколько микросекунд, то возможно можно просто запретить прерывания и отсчитать нужное кол-во тактов Systick просто читая регистр-счётчик Systick
(конечно с учётом переполнения при достижении величины делителя).
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 17 2015, 07:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(jcxz @ Apr 17 2015, 09:50) *
Если нужны задержки на несколько микросекунд, то возможно можно просто запретить прерывания и отсчитать нужное кол-во тактов Systick просто читая регистр-счётчик Systick
(конечно с учётом переполнения при достижении величины делителя).

кстати, да
тем более, что 1мкс даже на 100МГц - это всего 100 тактов
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 06:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016