romanetz
Какой же бред несут тут порою некоторые относительно радиосвязи...
romanetz
А адептам 100 мВт EIRP я напомню про антенны с усилением 24 дБ в свободной продаже. В направлении главного лепестка ДН эти 100 мВт превращаются в 20+24=44 дБм, или 23 Вт EIRP. И никто не умер.
Sergey
С направленными антеннами в прямой видимости 5км это не предел
romanetz
В прямой видимости затухание - 2 степень расстояния, вне её - от 2 до 6-й, в зависимости от условий.
romanetz
Дальше эти потери в пространстве втыкаем в известную формулу Pr=Ptx+Gtx+Grx-Loss и сравниваем с чуйкой приёмника при заданных условиях (отношение С/Ш, полоса)
romanetz
Для вайфая цифирка в районе -100 дБм для мегабитной скорости и стандартном 20 МГц канале
Sergey
romanetz
С горы на гору и с обоих сторон параболы. А чё-б и нет то. В этом плане есть рекорды куда круче. Связь на 77 ГГц с отражением через Луну, например.
romanetz
Вопрос в другом чаще всего. Можно ли обеспечить прямую видимость (и открытую первую зону Френеля) на удалении 5 км.
romanetz
У бестера есть и в кроксе
romanetz
В аиргриде подобная сетка
SetPf
Вопрос к тем, кто давно на RTOS пишет. Практикуете ли вы запихивание фоновых обработчиков от разносортной фигни, в какой то один общий таск?
SetPf
Я когда писал без ртос - обычно какую-то простенькую асинхронную службу таймеров делал, что бы обрабатывать редкое или тяжелое. А всякие фоновые обработчики пихал в один цикл, который крутился пока че важное по таймеру не вызовется.
SetPf
Сейчас получается так, что по хорошему на каждую задачу свой таск с обаботчиком. Но это блин офигеть жирно получается и докидывает кучу асинхронных взаимодействий, там где можно и без них обойтись, если все в 1 таск пихать.
SetPf
Вот и думаю. Может сделать так, что бы каждый модуль при инициализации - регистрировал свой обработчик где нибудь. А в неком общем таске, все это дело по очереди вызывалось.
SetPf
Если внутри обработчиков обычные автоматы, которые просто возвращаются из функции, если им нечего делать - то нет.
SetPf
Просто у меня сейчас как ModuleTask() { ModuleInit(); while(true){ ModuleHandler(); } } Всякое апи отдельно и асинхронно.
SetPf
Так цикл по этим обработчикам и будет невытясеяющим менеджером )
Ну просто менеджером у меня язык не поворачивается это назвать.
SetPf
Я вот просто думаю - могу ли голову себе об это разбить? =\ Не знаю - плохая ли это архитектура, но у меня часто иерархичность получается внутри обработчиков. Как грубый пример с потолка. Обработчик ЦАП как есть, замеряет и сохраняет. Обработчик показаний ЦАП, делает что то, только если обработчик ЦАПа выдал. Обработчик бизнес логики уже ждет всю эту братию. Между ними приходится прокидывать асинхронщину, это жирно и каждый раз залипаешь, пытаясь не сделать ошибок.
SetPf
А так можно сделать, что все это весело крутится в общем цикле, имеет свое синхронное АПИ. Да, в теории отзывчивость упадет, но она в большинстве задач нахрен не важна.
SetPf
Не могу я тут философии фриртоса понять короче. Плодить 550 тасков, пишут люди - бред, даже есп будет тянуть с трудом. А вот эта схема выше не требует РТОС вообще. Обычную таймерную службу какую и все.
Anonymous
Обработку нужно максимально делать там где образуются данные. Не нужно плодить лишние сущности, если можно обойтись без лишнего таска, то так и стоит делать
SetPf
Нахрена драйверу ЦАП знать о том, что он замеряет и как это конвертировать?
SetPf
Нахрена задачи бизнеслогики знать про биты цапа, если ей нужны вольты, а то и готовые величины.
Anonymous
"Не создавайте сущности без надобности" сколько там тысяч лет этому тезису
SetPf
"Не создавайте сущности без надобности" сколько там тысяч лет этому тезису
Так надобность сущностей в легкости отладки и рефакторинга.
Anonymous
Так надобность сущностей в легкости отладки и рефакторинга.
Это если сущностей в самый раз. А если их становиться много, то отладка улетает куда-то в космос
SetPf
Это если сущностей в самый раз. А если их становиться много, то отладка улетает куда-то в космос
Дак вот нет же формулы идеальной что бы посчитать сколько это в конкретном случае В САМЫЙ РАЗ.
SetPf
По мне Драйвер ЦАП\ Конвертер \ Логика выглядит именно в самый раз.
SetPf
Ну вопрос в том, что т.к. оно все разнесено - вынуждено работать асинхронно.
Anonymous
И чем это плохо или хорошо
SetPf
Состояние обработчиков и их данных может изменится в любой момент времени. В том числе во время выполнения другого.
SetPf
Вы с меня академическое определение хотите?
Anonymous
Любые внешние сигналы и данные крайне редко бывают между собой синхронизированы
SetPf
И чем это плохо или хорошо
Хорошо в том, что это валяется по своим дырам и друг от друга не зависит никак. Плохо в том, что это охренеть тяжело по ресурсам(по сравнению с синхронным вариантом). По 4-8кб на задачу приходится выделять иногда. Это все требует постоянное переключение контекста. Танцев с приоритетами. Прокидывания всяких сущностей для обмена, типо очередей и мутексов. И во всем этом можно так косякнуть, что хрен найдешь.
Anonymous
В том и преимущество ртос что данные можно обрабатывать по мере поступления
Anonymous
Опять какой-то синхронный вариант ) я не понимаю что значит синхронный, асинхронный применительно к софту ))
SetPf
Вы злоупотребляете этой бритвой. Она имеет смысл только в том случае, если ввод сущности вообще ничего не дает. Это ща без попытки поумничать.
SetPf
А в этой ситуации свои плюсы и там и там есть.
SetPf
Теже прерывания.
Anonymous
Эммм ну тип потоки вся фигня, межпотоковое взаимодействие.
Межпотоковое взаимодействие. Хорошо. Так это синхронный или асинхронный вариант? Прерывания, хорошо. Это по вашей терминологии синхронное программное обеспечение или асинхронное?
SetPf
Асинхронное и то и то. Синхронное когда сделал Х, проверил регистр ЦАП, сделал У, проверил уарт и тд.
SetPf
Я сейчас просто сижу и пытаюсь понять. Это я в терминологии обгадился или вы, без обид.
Svyatoslav
Поэтому лучше юзать micropython вместо ртос
Svyatoslav
И мозги не клювать)
Svyatoslav
Функционал аналогичный, только работает из коробки за 5 минут
Andy
не дай бог на МК микропитон поддерживать, только-только избавился от проекта на этой фигне. Глюки, тормоза, загадочное поведение там где вроде все очевидно. Не советую вообщем.
SetPf
Поэтому лучше юзать micropython вместо ртос
Мне стремно встраивалку на питоне поддерживать. Надо слишком хорошо язык знать. Я на плюсах то умудряюсь его подвесить и перегрузить иногда. По ошибке конечно, но эта ошибка легко находится и легко понять как ее решить.
Svyatoslav
Я сабаку не съел, но навидался глюков
Svyatoslav
Все остальное - только Pet проекты
SetPf
Прошу не разводить холивар, лучше мой вопрос рассмотреть. Он поинтереснее будет таки =\
Andy
Дайте ссылку на проект
Проект скинул с себя, но спрошу у заказчика, может он и разрешит поделится. Архитектура STM32
Svyatoslav
Сорри, мне просто самому интересно о проекте под mp с глюками. Для собственного развития. А так да, не встреваю)
Anonymous
Микропитон вообще имеет смысл запускать как одну из задач ртос. И то скорее всего чтобы корректировать какую-то логику когда изделие уже разработано и передано пользователю
SetPf
@anothename с терминологией прояснилось?
SetPf
А тут асинхронный
Ну так смотря как рассматривать же. Если в комплексе, с прерываниями и вызовом событий по таймеру, конечно. Но я имел ввиду только взаимодействие между обработчиками. Т.к. его подавляюще больше. Че там это событие которое вызывается раз в 50мс, в это время цикл с обработчиками тысячи раз может иттерироватся.
SetPf
В этом же и изначальный вопрос стоял. Стоит ли все обработчики закинуть в один таск и сделать взаимодействие между ними синхронным.
Anonymous
Есть триггер синхронный, а есть триггер асинхронный. Например D триггер или JK. Асинхронный работает так что изменения сигналов на входах сразу приводит к срабатыванию триггере. А синхронный работает так что изменение состояния триггера произойдет только по такту синхросигнала.
SetPf
Это железо же.