جستجو برای:
سبد خرید 0
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در privacy policy ما شرح داده می شود مورد استفاده قرار می گیرد.

آموزش تکنولوژِی با رهنوتک
  • خانه
  • وبلاگ
  • کتاب
  • محصولات
    • برنامه نویسی میکروکنترلرها با پایتون
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آموزش تکنولوژِی با رهنوتک > اخبار > میکروکنترلر > وقفه چیست؟ – Interrupt

وقفه چیست؟ – Interrupt

2 مرداد 1403
ارسال شده توسط اساتید رهنوتک
میکروکنترلر

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

وقفه چیست؟

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

به احتمال بسیار زیاد مطالعه را متوقف کرده به تلفن همراهتان جواب می‌دهید و پس از پایان مکالمه، از همان جایی که مطالعه را قطع کرده بودید به ادامه مطالعه می‌پردازید. سیستم وقفه (Interrupt) هم دقیقا به همین شکل است. در مثال ذکر شده شما نقش پروسسور را دارید، مطالعه کتاب نقش کاری که پروسسور مشغول به انجام آن است را دارد و زنگ خوردن تلفن همراه همان رخداد وقفه است.

در ساده‌ترین حالت، هنگامی که یک سیگنال وقفه می‌آ‌ید پروسسور تسک جاری را متوقف کرده، اطلاعات مربوط به اینکه تا کجای تسک را انجام داده در پشته (stack) ذخیره می‌کند و به اجرای روتین وقفه می‌پردازد. پس از اتمام روتین وقفه با استفاده از اطلاعات ذخیره شده در پشته، از جایی که تسک متوقف شده بود به ادامه تسک می‌پردازد. البته ممکن است این سناریو بر اساس اولویت تسکی که در حال انجام است و اولویت وقفه‌ای که آمده تغییر کند.

وقفه چیست

وقفه خارجی (External Interrupt) چیست؟

در بحث میکروکنترلرها، وقفه خارجی (External Interrupt) وقفه ای است که از دنیای خارج میکروکنترلر (از طریق پین‌ها) می‌آید. اگر در مورد پین‌های میکروکنترلر (GPIO) به اطلاعات بیشتری نیاز دارید می‌توانید به مقاله GPIO چیست مراجعه کنید.

درون خود میکروکنترلر منابع وقفه متعددی وجود دارد. به عنوان مثال وقفه تایمر، می‌تواند در پریودهای زمانی مشخصی به پروسسور اعلام وقفه کند. تایمر درون خود میکروکنترلر است و وقفه آن داخلی محسوب می‌شود. پریفرال‌های متعددی درون میکروکنترلر وجود دارد که بسیاری از آن‌ها امکان ایجاد وقفه را دارند مانند وقفه UART، وقفه SPI، وقفه I2C، وقفه ADC و .. که همگی از وقفه‌های داخلی محسوب می‌شوند.

وقفه تودرتو (Nested Interrupts)

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

اگر واحد وقفه این امکان را فراهم کند که سیگنال یک وقفه اجازه داشته باشد روند اجرای وقفه قبلی را متوقف کند اصطلاحا می‌گویند از وقفه تودرتو پشتیبانی می‌کند.

nested interrupts

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

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

اولویت بندی در وقفه چیست (Priority of Interrupts)

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

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

کاربرد وقفه (Interrupt)

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

وقفه دقیقا کار همان تماس را برای پروسسورانجام می‌دهد. پروسسور می‌تواند به انجام تسک‌های خود بپردازد و هرگاه اتفاق مورد نظر رخ دهد یک سیگنال وقفه به پروسسور ارسال می‌شود.

به عنوان یک مثال فنی بسیاری از سنسورهایی که خروجی دیجیتال دارند و یا ADCها، یک پین اینتراپت در خروجی خود دارند. هرگاه سنسور یک نمونه جدید را آماده کرده باشد حالت این پین را تغییر می‌دهد و شما مدت زمان محدودی برای خواندن داده‌ها دارید چون پس از آماده شدن داده بعدی داده فعلی از بین خواهد رفت. شما با اتصال این پین به یک پین ورودی میکروکنترلر و فعال کردن وقفه خارجی روی آن، می‌توانید از آماده شدن دیتای جدید مطلع شوید و آن دیتا را بخوانید بدون آنکه پروسسور خود را مشغول چک کردن دائم آن پین کرده باشید.

در انتها

در این مقاله در مورد این‌که وقفه چیست، وقفه‌ تودرتو یعنی چه، اولویت بندی وقفه چیست و این‌که وقفه چه کاربردهایی دارد صحبت کردیم. اگر نیاز به اطلاعات بیشتری در مورد وقفه‌ها دارید می‌توانید به منابعی مانند interrupt-wikipedia مراجعه کنید. از شما دعوت می‌کنیم نظرات خود راجع به این مقاله و یا تجربیات ارزشمندان در مورد کار با وقفه‌ها را در بخش نظرات این نوشته با ما و دیگر دوستانتان به اشتراک بگذارید.

قبلی راه اندازی پایه های رزبری پای پیکو - Raspberry Pi Pico GPIO
بعدی راه اندازی وقفه خارجی رزبری پای پیکو - Raspberry Pi Pico External Interrupt

پست های مرتبط

what is micropython

5 دی 1403

میکروپایتون چیست؟ what is micropython

اساتید رهنوتک
ادامه مطلب
what is pio

3 دی 1403

PIO چیست؟

اساتید رهنوتک
ادامه مطلب
rpi pico adc pot

1 دی 1403

راه اندازی ADC رزبری پای پیکو – Raspberry Pi Pico ADC

اساتید رهنوتک
ادامه مطلب
spi

4 مرداد 1403

SPI چیست؟

اساتید رهنوتک
ادامه مطلب
pwm signal

4 مرداد 1403

PWM چیست؟

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

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • RPI pico
  • پروتکل‌های ارتباطی
  • میکروکنترلر
برچسب‌ها
adc micropython pio raspberrypi pico رزبری پای پیکو میکروپایتون
در باره ما

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

هدف ما از یک سو ایجاد پلی میان دانشجویان با بازار کار و از طرف دیگر ارتقای مهندسین شاغل در حوزه تکنولوژی است.

دسترسی سریع
  • دوره ها
  • اخبار
  • تماس با ما
© 1403 - آموزشگاه آفلاین رهنوتک