٨۸۵۴۳۵۶۱-٠٢١

شنبه, 02 فروردين 773 ساعت 00:00

کار با وقفه در نرم افزار bascom avr

نوشته شده توسط 
این مورد را ارزیابی کنید
(0 رای‌ها)

کار با وقفه در نرم افزار bascom avr :

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

دستور ENABLE INTRRUPTS :

برای فعال سازی وقفه سراسری میکروکنترلر AVR از این دستور باید استفاده شود. در غیر این صورت هیچ کدام از وقفه هایی که در برنامه می نویسیم اجرا نخواهد شد.

دستورات DISABLE و ENABLE :

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

DISABLE interrupt

ENABLE interrupt

دستور ON INTERRUPT :

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

ON INTERRUPT label

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

دستور RETURN :

برای برگشت از زیر برنامه وقفه به برنامه عادی از این دستور استفاده می کنیم. اگر از چندین RETURN استفاده کنیم اولین RETURN که داخل شرط یا حلقه نباشد به عنوان RETI (برگشت از وقفه استفاده می شود) و بقیه به عنوان RETURN استفاده می شود.

پیکربندی وقفه خارجی (EXTERNAL INTERRUPT) :

برای تعیین نحوه تحریک شدن وقفه خارجی از پیکربندی زیر استفاده می کنیم:

CONFIG INTX = STATE

X : بسته به نوع میکروکنترلر می تواند بین صفر برای ورودی وقفه خارجی صفر تا 7 برای ورودی وقفه خارجی هفتم تغییر کند. به عنوان مثال در میکروکنترلر Atmega32 سه ورودی وقفه خارجی وجود دارد:

1-External interrupt 0  (INT0)

2-External interrupt 1    (INT1)

3-External interrupt 2    (INT2)

 

STATE : نیز بسته به نوع میکروکنترلر می تواند یکی از گزینه های زیر باشد:

LOW LEVEL : در این حالت اعمال یک سطح پایین یا صفر به پایه INTX باعث رخ دادن وقفه برای ورودی وقفه خارجی X می شود.

FALLING : در این حالت اعمال یک لبه پایین رونده به پایه INTX باعث روی دادن وقفه خارجی می شود.

RISING : در این حالت اعمال یک لبه بالا رونده به پایه INTX باعث روی دادن یک وقفه خارجی می شود.

انواع وقفه در میکروکنترلرهای AVR :

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

EXTERNAL INTERRUPTS

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

External interrupt 0

INT0

وقفه خارجی یک

External interrupt 1

INT1

وقفه های خارجی 2 تا 7 برای بعضی از میکروکنترلرها

External interrupt for some chips

INT2 – INT7

وقفه تایمر کانتر صفر

TIMER/COUNTER0 INTERRUPTS

فعال و غیر فعال کننده تمام وقفه های موجود برای T/C0

Enable timer/counter0 interrupts

TIMER0 , COUNTER0

وقفه سرریزی برای T/C0

Timer0 overflow interrupt

OVF0

وقفه تایمر کانتر یک

TIMER/COUNTER1 INTERRUPTS

 

فعال و غیر فعال کننده تمام وقفه های موجود برای T/C1

Enable timer/counter1 interrupts

TIMER1 , COUNTER1

وقفه سرریزی برای T/C1

Timer0 overflow interrupt

OVF1

وقفه ورودی CAPTURE برای T/C1

Input capture timer1 interrupt

CAPTURE1 , ICP1

وقفه تطابق مقایسه مد A برای T/C1

Output capture a interrupt

COMPARE1A , OC1A

وقفه تطابق مقایسه مد B برای T/C1

Output capture b interrupt

COMPARE1B , OC1B

وقفه تایمر کانتر دو

TIMER/COUNTER2 INTERRUPTS

فعال و غیر فعال کننده تمام وقفه های موجود برای T/C2

Enable timer/counter2 interrupts

TIMER2 , COUNTER2

وقفه تطابق مقایسه ای برای T/C2

Timer2 output compare

OC2

وقفه سرریزی برای T/C2

Timer2 overflow interrupt

OVF2

وقفه ارتباط سریال UART

UART INTERRUPTS

وقفه دریافت کامل داده توسط UART

Serial RX complete interrupt

URXC

وقفه خالی بودن رجیستر داده UART

Serial data register empty interrupt

UDRE

وقفه ارسال کامل داده UART

Serial TX complete interrupt

UTXC

فعال و غیر فعال کننده تمام وقفه های UART

Disable URXC , UDRE and UTXC

SERIAL

سایر وقفه ها

OTHERS

وقفه مقایسه کننده آنالوگ

Analog comparator interrupt

ACI

وقفه ارتباط سریال SPI

SPI interrupt

SPI

وقفه ارتباط سریال دو سیمه TOW WIRE

TWI interrupt

TWSI

وقفه آمادگی EEPROM

EEPROM interrupt

ERDY

وقفه اتمام تبدیل توسط واحد ADC

A/D converter interrupt

ADC

 مثال :

Config INT0 = Falling

Enable interrupts

Enable Int0

On Int0 label2

Do

Loop

End

Label2 :

Dim A As Byte

If A > 1 Then

Return

End If

Return

 
بازدید 209367 بار