Easyelectronics.ru • Просмотр темы - Синхронизация задач FreeRTOS на разных контроллерах

Easyelectronics.ru

Электроника для всех
Текущее время: 16 авг 2018, 10:51

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 23 сен 2017, 19:25 
Старожил

Зарегистрирован: 13 фев 2012, 23:48
Сообщения: 737
Откуда: Украина, Харьков
Добрый день!
Подскажите, как организовать синхронизацию (одинаковых) задач FreeRTOS на нескольких контроллерах через шину (например CAN)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 23 сен 2017, 19:53 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2103
В высокоприоритетном прерывании по приему из шины специально выделенного кода переводить требуемую задачу на повышенный относительно других приоритет. Затем, через какое-то время обязательно возвращать приоритет на прежний уровень. Но полной синхронности не будет, будет задержка, равная передаче-приему-обработке команды + кванты времени переключений задач. Уменьшить задержки позволит отдельная однобитная сигнальная линия и прерывание по EXTI. Но рассогласование все равно будет до 1 кванта времени.
Вообще, вы уверены, что вам нужна эта синхронность? Либо уверены ли, что вам нужна RТОS?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 10:17 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1898
__bl__ писал(а):
Подскажите, как организовать синхронизацию (одинаковых) задач FreeRTOS на нескольких контроллерах через шину (например CAN)?

Полагаю, стоит описать задачу более подробно, поскольку в общем виде это задача синхронизации состояния узлов распределенной сети, а это достаточно не простая задача.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 19:03 
Старожил

Зарегистрирован: 13 фев 2012, 23:48
Сообщения: 737
Откуда: Украина, Харьков
На нескольких датчиках подключенных между собой по шине CAN работает FreeRTOS. Данные каждые 10 мс отправляются в ту же шину. Задача синхронизации состоит в том, чтобы датчики одновременно отправляли данные или в буфер отправки одновременно клали значения полученные с сенсоров. Поэтому выход такой: задача ждёт семафора, который отдаётся после приёма спец. сообщения по CAN.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 20:22 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2103
Напротив, задача "синхронизации состояния узлов" - вполне примитивная задача. Посылается широковещательное сообщение типа "Взвооодд! Смммирррно! Равнение на знамя!". Синхронизация заложена уже в шине. Адресный I2C с включенным "общим вызовом" так же обладает возможностью синхронизации.

Топикстартеру:
Во-первых, на МК простых датчиков не следует ставить никаких ОС, они и без ОС хорошо работают, и даже более того, ОС лишняя там. Используйте обычные прерывания, DMA. Во-вторых, строго одновременно отправлять в одну шину ото всех датчиков все равно не получится, да еще и синхронизировать по этой же шине.
От собирающего устройства посылайте всем запрос типа "Хачю палучить инфу!" (remote frame, по терминологии CAN) и пусть все датчики сразу же по получению начинают изменять и передавать инфу. Механизм разрешения коллизий определяется самой шиной. А все сообщения являются широковещательными уже сразу в шине.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 21:37 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1898
BusMaster писал(а):
Напротив, задача "синхронизации состояния узлов" - вполне примитивная задача.

В общем случае - нет. В условиях описанных топикстартером - да, вполне примитивная.

P.S. хотя да, о чем это я. врядли вы понимаете о чем идет речь "в общем виде".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 22:52 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2103
В том то и фишка, что здесь "в общем виде" для случаев компьютерных сетей не обсуждается. Вы ж не эмбеддер, посему конкретных задач вы и не делали и с CAN-шиной не знакомы. И не надо тужиться, не по зубам вам этот каменный цветок, это не ваша область, так будьте добры, не мешайтесь с "общими случаями"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 24 сен 2017, 23:02 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4815
evsi, тебя не удивляет , что все созданное тобой состоит из костылей?
Как бы здесь не кичились любители быдлокодинга с писюка, но все что они могут наваять -костыль на костыле...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 25 сен 2017, 09:18 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1898
BusMaster писал(а):
В том то и фишка

Что вам обязательно надо продемонстрировать илитность. Да, я в курсе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 25 сен 2017, 09:19 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 1898
dosikus_2 писал(а):
evsi, тебя не удивляет ,

Нет, ваши домыслы на мой счет меня совсем не удивляют.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Синхронизация задач FreeRTOS на разных контроллерах
СообщениеДобавлено: 25 сен 2017, 10:32 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 560
Откуда: Германия
__bl__ писал(а):
На нескольких датчиках подключенных между собой по шине CAN работает FreeRTOS. Данные каждые 10 мс отправляются в ту же шину. Задача синхронизации состоит в том, чтобы датчики одновременно отправляли данные или в буфер отправки одновременно клали значения полученные с сенсоров.


В CANopen, к примеру, именно для этой задачи придумали SYNC. По приходу пакета все дружно считываем датчики (или отдаем семафоры ждущим задачам), потом не торопясь передаем значение. Можно, разумеется, тоже самое и поверх голого CAN реализовать.


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

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


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

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


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

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

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