با سلام
برای خواندن ورودی های دیجیتال در یک سیستم با STM32H7 و کلاک 280Mhz که از FreeRTOS استفاده شده.
و task های زیر وجود دارد:
دو تا مدباس ۴۸۶
یک مدباس شبکه
یک ارتباط دیتا و پیامک با ماژول M66
و یک تسک اصلی که وظیفه کنترل و اعمال خروجی ها رو دارد.
من اگر بخوام ورودی ها را با نرخ ۱ میلی ثانیه بخونیم و فیلتر و ON ,OFF delay براشون داشته باشم.
و همچنین تسک کنترلی در مواقعی واقعا لازم به اجرا نیست و می تواند به block برود و منتظر تغییر ورودی ها یا دریافت داده از درگاه های مدباس یا ماژول gsm باشد( با استفاده از vTaskNotifyTake در تسک کنترلی و xTaskNotify در هر کدام از تسک هایی که ممکن است داده جدیدی داشته باشند).
و واقعا لازم هست task کنترلی اصلی وقتی کاری برای انجام ندارد به block برود تا سایر task ها با اولیت های پایین تر بتوانند اجرا شوند.
سوال من اینکه خواندن از ورودی های دیجیتال را در یک تسک جدا قرار بدهم؟ یا داخل tickhook ؟
چرا که لازم دارم ضمن بحث فیلتر روی ورودی ها (ON,OFF delay با حداقل زمان 1ms ) بتونیم در صورت تغیرات روی ورودی ها به تسک اصلی notify بدم و از block خارج اش کنم.
در این نوع سیستم ها ورودی های دیجیتال رو چه طوری می خوانند که بتوانند به نرخ ۱ میلی ثانیه(با شرایط گفته شده) برسند ؟ چه روشی استاندارد تر است ؟