خانه / آموزش میکروکنترلرهای AVR / آموزش برنامه نویسی مقدماتی BASIC-وقفه ها Interrupts

آموزش برنامه نویسی مقدماتی BASIC-وقفه ها Interrupts

آموزش برنامه نویسی مقدماتی BASIC-وقفه ها Interrupts

آموزش برنامه نویسی مقدماتی BASIC-وقفه ها Interrupts

در میکرو کنترولرهای VAR دو دسته وقفه طراحی شده است.

وقفه های داخلی

وقفه های خارجی

:: فعال سازی کلی وقفه ها

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

ENABLE INTERRUPTS

:: فعال سازی وقفه مورد نظر

ENABLE INTERRUPT

بعد از فعال سازی کلی هر وقفه را باید با ذکر نام وقفه جداگانه فعال کرد.

INTERRUPT : نام وقفه مورد نظر

:: غیر فعال سازی وقفه مورد نظر

Disable interrupt

برای غیر فعال کردن وقفه به کار می رود.

Interrupt : نام وقفه مورد نظر

:: پرش به وقفه

On interrupt lable [ nosave ]

ما وقفه را لازم داریم تا در زمان اجرای برنامه اصلی, یک برنامه فرعی اجرا شود. برای این کار باید در زمان وجود وقفه به یک زیر برنامه پرش کنیم. این کار با دستور زیر انجام می شود.

Interrupt : نام وقفه مورد نظر

Lable : نام بر چسب زیر برنامه وقفه

Nosave : در حالت پیش فرض تمامی رجیسترهای میکرو ذخیره شده تا در زمان برگشت از وقفه میکرو بتواند برنامه اصلی خود را بدون تغییر ادامه دهد. وجود این گزینه باعث تغییر رجیسترها و اشکال در برنامه می شود.

نکته : برای برگشت از برچسب و زیر برنامه وقفه باید از دستور return استفاده کرد.

وقفه های داخلی

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

1- ovf0 : وقفه سریزی تایمر – کانتر 0

2- ovf1 : وقفه سریزی تایمر – کانتر 1

3- ovf2 : وقفه سریزی تایمر – کانتر 2

4- ovf3 : وقفه سریزی تایمر – کانتر 3

5- oc1a : وقفه ورودی تایمر – کانتر 1 در مد coppare a

6- oc1b : وقفه ورودی تایمر – کانتر 1 در مد coppare b

7- oc2 : وقفه ورودی تایمر – کانتر 2 در مد capture

8- oc3a : وقفه ورودی تایمر – کانتر 3 در مد coppare a

9- oc3b : وقفه ورودی تایمر – کانتر 3 در مد coppare b

10- (icp1) capture1 : وقفه ورودی تایمر – کانتر 1 در مد capture

11- (icp2) capture2 : وقفه ورودی تایمر – کانتر 2 در مد capture

12- (icp3) capture3 : وقفه ورودی تایمر – کانتر 3 در مد capture

13- adc : وقفه پایان عمل تبدیل آنالوگ به دیجیتال

14- aci : وقفه پایان عمل مقایسه کننده آنالوگ

15- twsi : وقفه ارتباط سریال 12c

16- erdy : وقفه آمادگی خواندن eeprom

17- urxc : وقفه پایان دریافت داده از ارتباط سریال uart

18- udre : وقفه خالی بودن رجیستر داده ارتباط سریال uart

19- utxc : وقفه پایان ارسال داده به ارتباط سریال uart

20- serial : وقفه فعال و غیر فعال بودن ارتباط سریال uart

21- spi : وقفه ارتباط spi

وقفه های خارجی

تعدادی از پایه های میکروکنترلرهای avr را می توان به عنوان یک عمل دهنده وقفه پیکر بندی نمود. این پایه ها در هر میکرو با کلمه intx مشخص شده که در آن x ععد وقفه خارجی را نشان می دهد مانند into که وقفه خارجی 0 می باشد.

:: دستور پیکر بندی وقفه خارجی

Config intx = state

برای راه اندازی یک پایه با مشخصه int به عنوان وقفه خارجی باید به روش بالا عمل کرد.

X : عدد وقفه نسبت به نوع میکرو

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

حالت اول: گزینه low level که در این حالت ورودی به سطح صفر حساس است.

حالت دوم: گزینه rising که در این حالت ورودی به لبه بالا رونده ولتاژ حساس است.

حالت سوم: گزینه falling که در این حالت ورودی به لبه پایین رونده ولتاژ حساس است.

Enable interrupts

Config int1 = low level

Enanle int1

On int 1 ali

End

Port a =255

Waitms 10

Port a = 0

Return

 موسسه خیریه حمایت از کودکان مبتلا به سرطان

 دسته اصلی : زبان برنامه نویسی BASIC

 نویسنده : electronics98

 تاریخ انتشار :

2 دیدگاه

  1. سلام،در حالت وقفه ی خارجی در مد rising میشه بفرمایید مینیمم ولتاژ لازم روی INTx برای تریگر کردن در مورد AVR َ چقدر باید باشه؟ممنون از شما.

  2. سلام دوست عزیز
    در حالت rising شما باید یک ولتاژ مثبت به پایه های مربوطه میکروکنترلر متصل کنید، مقدار مینیمم این ولتاژ برای هر میکروکنترلر کمی متفاوت است، بهتر است برای یافتن پاسخ دقیق سوال خود به دیتاشیت میکروکنترلر مورد نظر خود مراجعه کنید. اما در حالت معمولی مقدار مینیمم ولتاژ تحریک برای سطح منطقی مثبت 2.3 ولت است.

پاسخ دهید

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

مطلب پیشنهادی

I2C-AVR

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C

آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C پایه های مورد استفاده پروتکل I2C …