تاخیر میکروثانیه ای در میکروکنترلرها روش ساختی متفاوت از تاخیر میلی ثانیه ای دارد. همچنین هردوی این تاخیرها هم بصورت Blocking و هم بصورت Non Blocking قابل پیاده سازی هستند.
- روش Blocking: به این معنی که کل سیستم را منتظر اتمام این تاخیر بگذارد. استفاده از روش Blocking صرفا برای تاخیرهای میکروثانیه ای و در برخی موارد خاص و محدود در پروژه قابل قبول است. اما بجز آن بطور کلی روش Blocking قابل قبول و حرفه ای نیست و در سیستم های حیاتی استفاده نمی شود.
- روش Non Blocking: در این روش تاخیر بوجود آمده، کل سیستم را منتظر نمی گذارد. فقط یک قسمت از برنامه منتظر می ماند و مابقی برنامه به فعالیت خودش ادامه می دهد. این روش هم برای تاخیر میلی ثانیه ای و هم برای تاخیر میکروثانیه ای روش بهتری است.
تاخیر میلی ثانیه ای در میکروکنترلرها به صورت Non Blocking، معمولاً توسط OSها یا پلتفرمها ایجاد می شود. معمولا اگر پردازنده دارای تایمر SysTick باشد، با استفاده از این تایمر و در غیر این صورت از دیگر تایمرهای میکروکنترلر پیاده سازی می شود.
تاخیر میکروثانیه ای در میکروکنترلرها به صورت Non Blocking، معمولاً توسط OSها یا پلتفرمها ایجاد نمیشوند. زیرا برای این کار باید وقفۀ یک تایمر، حداقل هر یک میکروثانیه اتفاق بیفتد. وقفهای با این سرعت و به صورت پیوسته، باعث افزایش بار پردازشی CPU میشود. در بسیاری از پروژهها، معایب این موضوع بیشتر از مزایای آن است. برای استفاده از این چنین تاخیری باید خودتان یک تایمر را به نحوی فعال و از آن استفاده کنید که کمترین پردازش را از پردازنده بگیرد.
در بسیاری از پروژه هم به تاخیر میلی ثانیه ای و هم میکروثانیه ای نیاز است. به این منظور نیاز به الگوی بهینه و یکپارچه در پروژه و پروژه های خود داریم.
نحوۀ صحیح و اصولی استفاده از چنین تاخیری در کتابخانه Delay برای میکروکنترلر یوبرد ارائه شده است.
0 دیدگاه