تاخیر میلی ثانیه ای در میکروکنترلرها به 3 روش قابل انجام است.
- روش اول – نگه داشتن کل سیستم (Blocking): تأخیری که در حد میلی ثانیه، کل سیستم را متوقف کند، میتوان گفت که در هیچیک از سیستمهای Real time استفاده نمیشود. توجه شود که تأخیرهای ایجاد شده در پلتفرمهایی مثل HAL برای STM32، یا در CodeVisionAVR از این نوع است.
- روش دوم – استفاده از توابع تأخیر OSها: این توابع برای زمانی در حد میلی ثانیه، یک تسک را بلاک میکنند. اما مابقی تسکها به فعالیت خود ادامه میدهند. این روش نیز بعضی مواقع قابل استفاده است اما در پروژههایی که عملیات زیادی بر روی یک تعداد تسک کم انجام میشود، قابل استفاده نیست. زیرا بلاک کردن یک تسک، باعث متوقف شدن یک فعالیت خاص نمیشود، بلکه باعث متوقف شدن بخش زیادی از فعالیتهای سیستم میشود. سیستم عامل ها مثل FreeRTOS اینگونه عمل می کنند.
- روش سوم – توابع اصولی با بهره گیری از تایمر: برای تأخیر در حد میلی ثانیه، بهترین روش، استفاده از تایمر و صرفاً ایجاد تأخیر برای یک قسمت خاص از برنامه است. در این روش صرفاً یک قسمت خاص از برنامه در حد میلی ثانیه متوقف میشود و مابقی سیستم به فعالیت خود ادامه میدهد. در این روش در میکروکنترلرهایی که تایمر SysTick دارند، از این تایمر و در میکروکنترلرهای دیگر از هریک از تایمرهای میکروکنترلر استفاده میشود.
در سیستم های Real-time، استفاده از تأخیرهایی که کل سیستم را متوقف می کنند، مجاز نیست. تأخیرهای میلی ثانیه ای در سیستم های Real-time، تأخیرهایی طولانی به حساب می آیند. تاخیرهای میکروثانیه ای نیز نکاتی دارد که به این منظور می توانید میکروآموزش تاخیر میکروثانیه ای در میکروکنترلرها را مطالعه بفرمایید.
همچنین درصورت نیاز به یک کتابخانۀ تاخیر حرفه ای هم برای تاخیر میلی ثانیه ای و هم میکروثانیه ای، به لینک کتابخانه Delay برای میکروکنترلر مراجعه بفرمایید.
0 دیدگاه