آموزش کامل وقفه ها در آردوینو

آنچه در این جلسه می آموزیم:

آشنایی با وقفه و مفهوم آن

وقفه ها در آردوینو و دستورات مرتبط با آن

جل یک مثال عملی از وقفه

بررسی یک مشکل متداول در وقفه ها و رفع آن 

مزایا و اولویت در وقفه ها

مقدمه

در ادامه مجموعه جلسات آموزشی دوره آردوینو، قصد داریم تا با وقفه ها در آردوینو آشنا شویم. پیشنهاد می شود حتما در برنامه نویسی های خود از این موضوع استفاده کنید و سطح کدنویسی خود را بالا ببرید و به صورت حرفه ای کد نویسی کنید. 

قبل از هر چیز، این دوره از مجموعه جلسات دوره آموزشی Arduino می باشد که در زیر، لینک این دوره آموزشی آورده شده است : 

آشنایی با وقفه ها

اگه بخواهیم خیلی ساده وقفه را توضیح دهیم ، میتوانیم بگوییم که وقفه یک روشی است که پردازنده ها از آن استفاده می کنند و در آن پردازنده در حالی که برنامه عادی خود را اجرا می کند، به صورت پیوسته نیز بر وقوع یک حادثه دیگر (که به آن وقفه می گوییم) نظارت می کند. (اگر هنوز مفهومش را نفهمیده اید نگران نباشید. در ادامه این موضوع را دقیق تر می فهمید.) 

به صورت کلی دو نوع وقفه وجود دارد:


مزایای استفاده از وقفه ها در آردوینو

شاید این سوال برایتان پیش بیاید که اصولا چرا باید از وقفه ها استفاده کنیم ؟ وقفه ها چه مزیتی را در اختیار ما قرار می دهند ؟ چرا به صورت عادی از همان دستور digitalRead استفاده نمی کنیم و وضعیت پایه شماره 2 را مرتبا چک نمی کنیم تا اگر وضعیت پایه تغییر کرد، کاری را انجام دهیم ؟ 

پاسخ به این سوال به مساله مورد نظر شما برمی گردد. اگر شما به این موضوع نیاز داشته باشید که فقط در یک لحظه مشخص به وضعیت پین نیاز داشته باشید، احتمالا digitalRead برای این موضوع کافی خواهد بود. اگر به صورت پیوسته بخواهید وضعیت پین را چک کنید، باید در یک حلقه while از دستور digitalRead استفاده کنید. اگر چه ممکن است اطلاعاتی در آن میان هم از دست برود. (چون در یک لحظه ممکن است اتفاقی بیفتد و ما دستور digitalRead را در لحظه قبل چک کرده باشیم.) این اطلاعات از دست رفته ممکن است در عمل برای ما حیاتی باشد. اینجاست که وقفه به کمک ما می آید.

علاوه بر این موضوع، خواندن مداوم digitalRead باعث تلف شدن وقت پردازنده می شود در حالی که میتوان کدهای مفید تری را در این زمان اجرا کرد. 

خلاصه این جلسه

در این جلسه با وقفه ها آشنا شدیم و گفتیم که وقفه ها روند عادی برنامه را متوقف می کند و یک تابع دیگر با نام  Interrupt Service routine را اجرا می کنند.

. علاوه بر آن با مشکل bounce در وقفه ها نیز روبرو شدیم که باعث ایجاد چندین وقفه می شد در حالی که باید یک بار وقفه اتفاق بیفتد.علاوه بر آن یادگرفتیم که چگونه میتوانیم با تکنیک های نرم افزاری آن را رفع کنیم. 

در انتها نیز توضیح دادیم که وقفه ها میتوانند دارای اولویت باشند و اولویت آنها بر حسب آدرس برداری آنها تعیین می شود. 

خوب دوستان برای این جلسه هم کافی است. مثل همیشه میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید. 

0 پاسخ

دیدگاه خود را ثبت کنید

Want to join the discussion?
Feel free to contribute!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *