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

 
 
> Оцените возможность и целесообразность, использования оси для следующей задачи
diwil
сообщение Sep 23 2011, 07:24
Сообщение #1


Местный
***

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



Уважаемые Гуру,

Стоит довольно-таки простая задача: наш контроллер должен делать несколько простых действий по сбору и общету данных и потом выводить это на маленький дисплейчик. Устройство носимое, питание батарейное. Именно:

- раз в 10 миллисекунд передать/принять данные по SPI от датчика. Всего 48 бит. Время 10mS очень критично и хотелось бы, чтобы ничего не мешало этому процессу.
- принимать данные по уарту раз в секунду (около 1кб), передавать данные... раз в минуту (несколько байт).
- иногда (раз или два раза в минуту) записывать данные на флэш (atmel at45dbxxx).
- кнопки обслуживать (6 штук) желательно по прерываниям.
- 2 раза в секунду (если надо) обсчитывать данные и обновлять дисплей.
- раз в час или по мере необходимости синхронизировать внутренний тактовый генератор с внешним сигналом, чтобы более-менее синхронно (+-5mS) опрашивать внешний датчик по SPI!!!

На самом деле это раньше было сделано и без оси, правда датчик опрашивался раз в 50mS и обработка была значительно проще. Но тут, при уменьшении интервала опроса датчика до 10mS, столкнулись с проблемой обсчета данных - приходится использовать плавающую точку (ну никак в целочисленную дробную арифметику его не вписать) и обсчет не разбить на части, чтобы уложить каждую часть в 10mS, а весь счет длится около 120-130mS.

Нам видится, что использование оси позволит нам делать обработку (расчет) в "фоновой" задаче и использовать результаты по мере необходимости.

Мы предполагаем использовать stm32L151cb на 14МГц.

Вопрос - подойдет ли FreeRTOS для этой задачи? Ну очень жесткие требования к 10mS опросу датчика.
Возможно ли синхронизировать внутренний такт у этого проца?

И еще - хотелось бы использовать USB, а не уарт как сейчас, для обмена данными с компом. Для usb надо 48МГц. Можно ли как-нибудь, по внешнему прерыванию, переключать тактовую?

Есть ли примеры использования UART, SPI, etc. для этой оси и для этого проца?

Заранее благодарю
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
AlexandrY
сообщение Sep 23 2011, 08:29
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(diwil @ Sep 23 2011, 10:24) *
Вопрос - подойдет ли FreeRTOS для этой задачи? Ну очень жесткие требования к 10mS опросу датчика.
Возможно ли синхронизировать внутренний такт у этого проца?


Подойдет. Но для жесткости надо будет все равно применить прерывания и DMA.

Любая RTOS позволяет ввести приоритизацию задач. А главное можно легко узнать насколько загружен процессор задачами.
Вообще если речь о реальном жестком времени то неплохо бы ввести еще пару задач следящих за сбоями в важных задачах и задачи для отладочного обмена.
Go to the top of the page
 
+Quote Post
diwil
сообщение Sep 26 2011, 06:40
Сообщение #3


Местный
***

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



Цитата(AlexandrY @ Sep 23 2011, 12:29) *
Подойдет. Но для жесткости надо будет все равно применить прерывания и DMA.


А можно ли вызывать время-критичесие задачи прямо из обработчика прерывания xPortSysTickHandler() ?
или будут какие-то грабли?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 18:37
Рейтинг@Mail.ru


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