باسلام
با عرض پوزش بابت تاخیر
بهتر است وارد مبحث تایمر ها شویم !
تایمر ها و زمان سنج ها میکروکنترولر!

تایمر ها،بسته به مدلشان،دقت بالایی دارند! چون مستقل کار می کنند!برای محاسبات دقیق می توان از انها کمک گرفت و با دقت کارها را پیش برد!
نحویه عملکرد واحد تایمر،بدین صورت می باشد! که به کمک میکروکنترولر دستوری برای واحد تایمر ارسال میشود! تا تایمر شمارش را شروع کند!( مثلا از 0 شروع کن تا به 1000 میکروثانیه برسی) سپس وقتی به میزان یا حد مد نظر رسید، Overflow میشود (یعنی سریز میشود) و به کمک وقفه به میکروکنترولر گزارش داده میشود!( دقیقا مثل زمانی که وقفه خارجی تابعش اجرا میشد! در تایمر ها، بعد از Overflow شدن، تابع Timer اجرا میشود)
در زمانی که تابع Timer اجر میشود، دوباره دستور دهی مقداری دهی به واحد تایمر داده میشود،تا از دوباره کارش را شروع کند ! همچنین در تابع نیز دستورات مورد نیاز خودمان نوشته میشود!
مثلا تصور کنید! می خواهید یک LED هر 500 میلی ثانیه یک بار خاموش و روشن بشود! (به صورت دائم) اگر بخواهید، این کار را با حلقه while انجام دهید! و کارهای زیادی دیگری در کنارش نیز انجام دهید! احتمالا دستورات دیگر با مشکل برخواهند خورد و کارها بدرستی شاید پیش نرود!
برای همین به سراغ واحد تایمر می روید! و در تابعه مربوط نیز دستورات لازمه برای روشن و خاموش شدن LED را می نویسیم! بدین طریق! دستورات شما در حلقه while اجرا میشود! در کنار ان هر وقت زمان 500 میلی ثانیه تمام شد! تابع وقفه تایمر اجرا میشود و دستورات مربوط به LED را اجرا میکند! بدین طریق، محاسبات و وقت CPU نیز برای کارها ارزشمندتری،گذاشته میشود ...
با واحد تایمر می توان بسیار کارهای که نیاز به دقت بالا دارند! را انجام داد! که انشالله در اینده با ان بیشتر اشنا خواهید شد.
باتشکر.