راه اندازی اینتراپت نرم افزاری در AVR

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


انواع اینتراپت

 

 روش سرکشی Polling
در روش polling طریقه کار به این صورت می باشد که CPU به صورت مداوم عمل سرکشی را انجام داده و در صورت اتفاق افتادن شرایط مثلا یک شدن یک ورودی برنامه های داخل آن سرویس را اجرا می کند. یکی از مشکلات این روش این است که CPU باید به صورت مداوم عمل سرکشی را انجام دهد ، با این کار هم توان عملیاتی سیستم کاهش می یابد و هم اینکه ممکن است در صورت اتفاق افتادن یک رویداد خارجی CPU فرصت لازم برای رسیدگی به آن را نداشته باشد و به همین علت سیستم دچار مشکل می شود.این روش به صورت نرم افزاری است.

روش وقفه  Interrupt 

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


هر کدام از روشهای بالا در مکان های خود استفاده می شوند و نمی توانیم بگوییم که کدام یک بهتر از دیگری می باشد.در میکروکنترلرها وقفه های سخت افزاری به تعداد معدودی وجود دارند و برای بعضی کاربرد ها ممکن است نیاز به یک وقفه نرم افزاری داشته باشیم که همانند وقفه سخت افزاری عمل کند. در واقع در وقفه نرم افزاری همان روش polling استفاده شده است با این تفاوت که در این وقفه همانند وقفه سخت افزاری تا زمانی که روی پایه وقفه به عنوان مثال ولتاژ 5 ولت قرار داشته باشد سرویس وقفه تنها یک بار اتفاق میافتد و باید روی پایه ولتاژ صفر برای ریست کردن وقفه و شروع دوباره کار وجود داشته باشد.

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

 


در پروژه قرار داده شده با استفاده از یک عدد کلید که به یکی از پایه های میکروکنترلر متصل شده است اعداد صفر تا 9 را روی سون سگمنت نمایش می دهیم.پایه های متصل به سون سگمنت به صورت خروجی تعریف شده اند و پایه متصل به کلید به عنوان ورودی و حساس به لبه پایین رونده تنظیم شده است. همچنین یک عدد مقاومت به صورت داخلی به مثبت 5 ولت متصل که به آن مقاومت پول آپ نیز می گویند و همانگونه که گفته شد حتما این مقاومت باید گذاشته شود تا سیستم بداند که در چه وضعیتی قرار دارد.

 

راه اندازی اینتراپت نرم افزاری در AVR

 

 

پروژه راه اندازی وقفه نرم افزاری در AVR

 

 

کانال تلگرام ایده نگر