این ماژول ابزارهایی را برای زمان بندی نرم افزار نهفته ارائه می دهد
در بسیاری از بخش های نرم افزار نهفته نیاز است که بخشی از کد به صورت دوره ای با دوره اجرای مشخص اجرا شود. مثال های زیر از جمله این موارد است :
- چشمک زدن یک نمایشگر
- اجرای دیبانس بر روی ورودی دیجیتال یک کلید فشاری
- نمونه برداری از مبدل آنالوگ به دیجیتال و اجرای فیلتر بر روی آن
- ذخیره کردن اطلاعات در حافظه
- اجرای حلقه های کنترلی
- اجرای منطق سطح بالای نرم افزار (مانند ماشین حالت)
- ارسال دوره ای اطلاعات بر روی پورت سریال
- چک کردن شرایط رخ دادن یک رویداد
- . . .
برخی از این کاربردها نیاز به دقت زمانی بالا و برخی نیاز به دقت زمانی پایین دارد. در مورد دسته دوم (دوره زمانی با دقت پایین) که اتفاقا در بسیاری از کاربردها، تعداد آن بیشتر از دسته اول (دوره زمانی با دقت بالا) است، نیاز به ابزاری برای اجرای این کدها داریم. برای اطلاعات بیشتر در مورد زمان بندی نرم افزار نهفته به ؟؟؟؟ مراجعه کنید.
- قابلیت اجرای کد با دوره های زمانی مختلف در مقیاس میکروثانیه، میلی ثانیه و ثانیه
- قابلیت اجرای کد با ایجاد Prescaler نسبت به عنصر اجرایی اصلی
- مخزن را کلون کرده و فایل runtime_scaler.h را به پروژه خود اضافه کنید.
- حالا ماژول آماده استفاده است.
- در فایل فایل h اطلاعات کامل در مورد نحوه استفاده از ماژول نوشته شده است.
- در زیر نحوه استفاده از ماکروهای مختلف ماژول runtime_scaler در مقیاس میلی ثانیه نوشته شده است. نحوه استفاده از بقیه مقیاس های زمانی مشابه یکدیگر است.
//Example
while(1)
{
//func1() runs every 100ms
RUN_EVERY_MS_(func1, 100)
{
func1();
RUN_END_;
}
//func2() runs every 200ms
RUN_EVERY_MS_(func2, 200)
{
func2();
RUN_END_;
}
//func3() runs every 5th iteration while the while(1) loop is running
RUN_EVERY_QTY_(func3, 5)
{
func3();
RUN_END_;
}
}
برای کلون کردن ماژول runtime_scaler می توانید از دستور زیر استفاده کنید :
git clone <ssh code>
ماژول runtime_scaler برای کار کردن نیاز به ماژول کرونو دارد.
ماژول runtime_scaler در زبان های ++C/C قابل استفاده بوده و به هیچ میکروکنترلر خاصی وابستگی ندارد.
این ماژول سازگار با استاندارد MISRA C:2012 نوشته شده است. توضیحات بیشتر در این مورد در اینجا ارائه شده است.
- در فولدر doc راهنمای API های ماژول runtime_scaler ارائه شده است.
- در ابتدای فایل h راهنمای کامل نحوه استفاده از ماژول runtime_scaler نوشته شده است.
- در بخش wiki مستندات بیشتری در مورد ماژول موجود است.
دقت اجرای زمان بندی ها بستگی به اختلاف مقیاس زمان بندی های مورد نیاز و زمان اجرای عنصر اجرایی مادر دارد.