U BOARD ir.

ورود به حساب کاربری
مرا بخاطر بسپار
گذرواژه را فراموش کرده اید؟
هنوز ثبت نام نکرده اید؟ تنها سه گزینه برای ثبت نام ثبت نام

U BOARD ir.

ثبت نام
ثبت نام
لطفا تمامی موارد خواسته شده را تکمیل نمایید لطفا ایمیل معتبر وارد نمایید لطفا گذرواژه را بیشتر از 6 کاراکتر وارد نمایید لطفا گذرواژه را مجددا بیشتر از 6 کاراکتر وارد نمایید
چگونه وقفه ها را در میکروکنترلرهای STM32F1 اولویت بندی کنیم؟

راه اندازی وقفه ها و اولویت بندی وقفه ها در میکروکنترلرهای STM32F1، تفاوت اولویت بندی وقفه ها در میکروکنترلرهای STM32F1 و میکروکنترلر LPC1768، اولویت وقفه به صورت Preempt، اولویت وقفه به صورت Sub ، تقسیم بندی چهار بیت NVIC رجیستر AIRCR، تقسیم بندی چهار بیت NVIC توابع CMSIS

چگونه وقفه ها را در میکروکنترلرهای STM32F1 اولویت بندی کنیم؟
data:image/jpeg;base64,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
رضا اسدی ۹۸/۱۱/۲۴ زمان موردنیاز برای مطالعه ۲۰ دقیقه

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

تصویر 1 - اولویت وقفه ها در میکروکنترلر ATmega128  

 

همان طور که در تصویر 1 مشاهده می کنید، میکروکنترلر ATmega128، دارای وقفه هایی است. برای مثال وقفۀ ریست، وقفه های خارجی، وقفه های تایمر و ... که وقفۀ ریست نسبت به وقفۀ تایمر دارای اولویت است و یا وقفۀ خارجی 1 نسبت به وقفۀ خارجی 2 از اولویت برخوردار است و این اولویت ثابت و غیر قابل تغییر است.

وقفه ها در برخی میکروکنترلرها از جمله میکروکنترلرهای STM32، قابل تغییر هستند. اگر به تصویر 2 دقت کنید، خواهید دید که در میکروکنترلرهای STM32F1، سه وقفه دارای اولویت ثابت هستند و مابقی Interruptها قابل تغییر است. تصویر زیر اولویت وقفه ها در میکروکنترلرهای STM32F1 را نشان می دهد.

تصویر 2 – اولویت وقفه ها در میکروکنترلرهای STM32F1

 

مبحث مدیریت منابع وقفه مبحثی است که در میکروکنترلرهای مختلف به اشکال مختلف پیاده سازی می شود. به طور مثال در میکروکنترلرهای با CPU، Cortex-M3 و Cortex-M4، بحثی به نام NVIC یا همان nested vectored interrupt controller وظیفه مدیریت منابع وقفه ها را بر عهده دارد.

 

راه اندازی وقفه ها و اولویت بندی وقفه ها در میکروکنترلرهای STM32F1

برای راه اندازی وقفه ها در میکروکنترلر های STM32F1 نیاز است تا از توابع NVIC استفاده کنیم. به عنوان مثال برای راه اندازی وقفه های خارجی 2 و 3، کد زیر را می نویسیم:

NVIC_EnableIRQ(EXTI2_IRQn);
NVIC_EnableIRQ(EXTI3_IRQn);

 

قابل ذکر است که توابعی که ابتدای نام آن ها با NVIC آغاز می شود، نیاز به کتابخانۀ « core_cm3.h» دارند. کتبخانۀ core_cm3.h توابع رجیستر های مربوط به واحد NVIC و همچنین واحد سیستم کنترل (SCB) را مورد تغییر قرار می دهد.

اگر به دیتاشیت میکروکنترلرهای STM32F1 مراجعه کنید و وارد بخش Interrupt شوید، خواهید دید که هیچ توضیحی دربارۀ رجیسترهای NVIC وجود ندارد. رجیسترهای مربوط به سیستم کنترل در دیتاشیت برخی از میکروکنترلرها وجود دارد، اما در برخی میکروکنترلرهای دیگر از جمله میکروکنترلرهای STM32 وجود ندارد. برای اطلاع از این رجیسترها در اولین صفحۀ دیتاشیت میکروکنترلرهای STM32 و یا در آخر بخش Interrupt همان دیتاشیت، نام فایل هایی ذکر شده است که می توانید شماره آن ها را از این قسمت کپی کرده و در بخش سرچ اینترنت این اسناد را سرچ کرده و دانلود کنید و از آن ها استفاده کنید. به این منظور سند PM0056 را دانلود می کنیم. در این نوشته از این سند بهره می گیریم تا با رجیسترهای مربوط به NVIC و سیستم کنترل بیشتر آشنا شویم. این فایل مربوط به رجیسترهای coretex m3 است و چنین فایلی برای هر میکروکنترلر اهمیت زیادی دارد. این سند توسط شرکت ST ارائه شده است که با مطالعۀ این سند، خیلی از همین موارد به طور مشابه برای میکروکنترلرهای LPC و غیره نیز وجود دارد و در یک سری موارد جزئی با هم تفاوت دارند.

تصویر 3 – فایل PM0056 حاوی اطلاعات رجیسترهای NVIC جهت استفادۀ وقفه در میکروکنترلرهای STM32F1

 

رجیسترهای NVIC و سیستم کنترل از کتابخانۀ core_cm3.h می آیند و توابع مفیدی جهت استفاده هستند. این توابع جزء توابع کتابخانۀ CMSIS هستند در نتیجه حجم زیادی از حافظۀ میکروکنترلر اشغال نمی کنند. به همین دلیل به جای مقداردهی مستقیم به رجیسترهای واحد NVIC و واحد سیستم کنترل و همچنین و برخی واحدهای مربوط به پردازنده ی میکروکنترلر از کتابخانه های core_cm3 و از توابع مفید آن استفاده می کنیم. برای مثال از تابع EnableIRQ برای فعال کردن وقفه و از تابع SetPriority برای اولویت بندی وقفه ها به صورت زیر استفاده می شود:

NVIC_SetPriority(EXTI2_IRQn,15);
NVIC_EnableIRQ(EXTI2_IRQn);
NVIC_SetPriority(EXTI3_IRQn,1);
NVIC_EnableIRQ(EXTI3_IRQn);

 

از نمونه کد نوشته شده خواهید فهمید که قبل از فعال کردن وقفۀ خارجی 2 و 3، اولویت آن ها را مشخص کرده ایم. به طور مثال اولویت وقفۀ خارجی شمارۀ 2 را 15 و اولویت وقفۀ شمارۀ 3 را 1 قرار داده ایم. باید توجه داشت که حداکثر اولویت دهی به این وقفه ها در Cortex-M3، چهار بیت است و این یعنی آخرین اولویت، اولویت شمارۀ 15 خواهد بود. هرچه عدد کوچکتری برای اولویت در نظر گرفته شود، آن وقفه دارای اولویت بیشتری نسبت به بقیه برای اجرا است. به عنوان مثال در نمونه کد نوشته شدۀ بالا، وقفۀ شمارۀ 3 دارای اولویت بالاتری نسبت به وقفۀ شمارۀ 2 در اجرا می باشد.

 

بررسی رجیسترهای NVIC در میکروکنترلرهای STM32F1

تا اینجا دیدیم که می توان از توابع CMSIS جهت اولویت بندی وقفه ها استفاده کرد. همچنین می توان با مقداردهی رجیسترهای مختلف این واحد، از آن استفاده کرد. در ادامه با برخی از رجیسترهای مختلف واحد NVIC آشنا خواهیم شد.

رجیستر set enable

از این رجیستر برای فعال سازی وقفه استفاده می شود. این رجیستر هم خواندنی است و هم نوشتی است. اگر از این رجیستر برای مقداردهی استفاده شود ( نوشتن )، 1 کردن هر کدام از بیت های آن به معنای فعال نمودن وقفۀ آن است. اما اگر از این رجیستر به عنوان یک رجیستر خواندنی استفاده شود، 0 بودن هر بیت به معنای غیرفعال بودن وقفه و 1 بودن هر بیت به معنای فعال بودن وقفۀ مورد نظر می باشد.

تصویر 4 – رجیستر set enable در میکروکنترلرهای STM32F1

 

رجیستر clear enable

از این رجیستر نیز مانند رجیستر set enable برای فعال  سازی یا غیر فعال سازی وقفه ها استفاده می شود، با این تفاوت که در رجیستر set enable، یک بودن هر بیت نشان از فعال بودن وقفه است، اما در رجیستر clear enable، یک بودن هر بیت نشان از غیرفعال بودن همان وقفه است. در واقع در این رجیستر معنای صفر و یک برعکس رجیستر set enable است. این رجیستر نیز هم خواندنی و هم نوشتنی است.

تصویر 5 – رجیستر clear enable در میکروکنترلرهای STM32F1

 

رجیستر priority

هر وقفه دارای یک بخش 4 بیتی برای اولویت بندی است که IPR0 تا IPR16 به آن اختصاص پیدا کرده است. در ادامۀ این نوشته نحوۀ مقداردهی این بیت ها توضیح داده شده است.

تصویر 6  – رجیستر priority در میکروکنترلرهای STM32F1

 

رجیستر set pending

از این رجیستر به منظور نمایش وقفه های در حال انتظار استفاده می شود. در واقع نمایش وقفه هایی که در حالت تعلیق قرار دارند بر عهدۀ این رجیستر می باشد. این رجیستر هم خواندنی و هم نوشتنی است. اگر آن را بخوانیم 0 بودن هر بیت به معنای عدم تعلیق آن وقفه است و 1 بودن همان بیت به معنای وقفۀ در حال انتظار است. اگر همان بیت را خودمان 1 کنیم، یعنی از حالت نوشتن بر روی این رجیستر استفاده کنیم، وقفۀ مورد نظر را از حالت انتظار خارج می کنیم.

تصویر 7 – رجیستر set registers در میکروکنترلرهای STM32F1

 

رجیستر clear pending

این رجیستر دقیقا مانند رجیستر set pending عمل می کند، اما جای صفر و یک با هم جا به جا است. یعنی یک بودن هر بیت نمایش دهندۀ این است که وقفه در حالت انتظار قرار ندارد. این رجیستر نیز هم خواندنی است و هم نوشتنی.

رجیستر active bit

وظیفۀ این رجیستر، فعال کردن وقفه هایی است که قصد داریم از آن ها استفاده کنیم. این رجیستر فقط نوشتنی بوده و یک کردن هر بیت باعث فعال شدن وقفۀ مربوط به آن بیت می شود.

تصویر 8  – رجیستر active bit در میکروکنترلرهای STM32F1

 

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

اگر به تصویر زیر دقت کنید، می بینید که بین دو میکروکنترلر LPC1768 و میکروکنترلرهای STM32F1 در مقداردهی اولویت ها تفاوت وجود دارد. در میکروکنترلر LPC1768 هفت بیت به اولویت بندی وقفه ها اختصاص داده شده است که از این هفت بیت، چهار بیت اول مورد استفاده قرار نمی گیرد. در نتیجه برای مشخص کردن اولویت هر وقفه باید از چهار بیت آخر استفاده کرد. پس در زمان مقدار دهی اولویت وقفه ها در میکروکنترلر LPC1768 باید به این موضوع دقت داشت. اما زمانی که از تابع NVIC استفاده می شود، زمانی که می نویسیم 15، این شیفت به صورت خودکار انجام می شود اما در برخی از مواقع می بایست خودمان عمل شیفت دادن را انجام دهیم.

تصویر 9  – چهار بیت مربوط به NVIC در میکروکنترلر LPC1768

 

در ادامه می خواهیم دربارۀ سه مبحث دیگر که مربوط به اولویت وقفه هاست صحبت کنیم. مبحث Preempt Priority ،  Sub Priority و  Priority Group.

 

اولویت Preempt Priority

مبحث اول Preempt Priority است که مربوط به زمانی می باشد که یک وقفه در حال اجراست و در همان زمان یک وقفه دیگر اتفاق می افتد.به عبارت دیگر در زمان اجرای وقفه ای، وقفۀ دیگری رخ می دهد. اگر وقفۀ اتفاق افتاده، وقفه ای با Preempt Priority بالاتر از وقفۀ در حال اجرا باشد، در همان لحظه برنامه وقفۀ در حال اجرا را رها می کند، وقفۀ دوم که Preempt Priority بالاتری دارد را اجرا می کند و پس از پایان اجرای وقفۀ دوم، مجدد برمیگردد و وقفۀ قبل را ادامه می دهد.

 

اولویت Sub Priority

مبحث دوم Sub Priority است که مربوط به اتفاق افتادن دو وقفه به صورت همزمان است. اگر به تصویر شمارۀ 4 برگردیم، به یاد می آوریم که گفتیم چهار بیت مربوط به اولویت وقفه ها داریم. اما تفکیکی جهت اینکه این چهار بیت مربوط به کدام اولویت وقفه است، یعنی Preempt Priority است یا Sub Priority انجام ندادیم. باید دانست که کل این چهار بیت به صورت پیش فرض مربوط به Preempt Priority بوده و Sub Priority به صورت پیش فرض جایگاهی در این چهار بیت ندارد. پیشنهاد می شود برای جلوگیری از ایجاد سردرگمی از همین حالت پیش فرض استفاده کرده و هر چهار بیت را به Preempt Priority اختصاص دهیم. در این حالت، زمانی که این تابع را فراخوانی می کنیم، چهار بیت را به صورت پیش فرض مورد استفاده قرار می دهیم.

اما می توان به جای استفاده از حالت پیش فرض و اختصاص دادن تمام بیت ها به Preempt Priority، یک یا چند بیت را به Preempt Priority و یک یا چند بیت را به Sub Priority اختصاص داد. بهتر است قبل ادامه دادن دلیل این کار را بررسی کنیم.

اگر وقفه ای در حال اجرا باشد، وقفۀ دوم می تواند در دو حالت نسبت به وقفۀ اول اجرا شود. یا قبل و بعد وقفۀ اول اجرا شود و یا همزمان با وقفۀ اول اجرا شود. در نتیجه گاهی لازم است اولویت وقفه را در هر دو حالت Sub Priority  و Preempt Priority تعیین شود. اما به دلیل اینکه به ندرت امکان اتفاق افتادن وقفه به صورت همزمان وجود دارد و همچنین تقسیم کردن چهار بیت NVIC اکثراً باعث ایجاد سردرگمی در اولویت بندی وقفه ها می شود، اکثراً از همان حالت پیش فرض یعنی صفر بودن تعداد بیت های Sub Priority استفاده می شود.

 حالت های ممکن به این صورت است که می توان سه بیت را به Preempt Priority و یک بیت را به Sub Priority و یا دو بیت را به Preempt Priority و دو بیت را به Sub Priority یا یک بیت را به Preempt Priority و سه بیت را به Sub Priority و یا تماماً چهار بیت را به Sub Priority اختصاص داد. اکنون فرض کنیم که می خواهیم سه بیت را به Preempt Priority و یک بیت را به Sub Priority اختصاص دهیم و چهار بیت را به این صورت تقسیم بندی کنیم.پس نیاز به تنظیماتی داریم که به دو صورت قابلیت پیاده سازی دارد:

  • 1- پیاده سازی با استفاده از رجیستر AIRCR
  • 2- پیاده سازی با استفاده از توابع CMSIS

تقسیم بندی NVIC با رجیستر AIRCR در میکروکنترلرهای STM32F1

رجیستر AIRCR کوتاه شدۀ عبارت application interrupt reset control register. این رجیستر در زمرۀ رجیسترهای سیستم کنترل می باشد. با استفاده از این رجیستر می توان تنظیمات مورد نیاز را انجام داد. اگر به این رجیستر در دیتاشیت دانلود شده مراجعه کنیم، خواهیم دید که بیت های شمارۀ 8 و 9 و 10 مربوط به Priority group است. قرار است تعیین کنیم که این Priority group چه مقداری داشته باشد و در نتیجۀ آن چند بیت برای Sub Priority و چند بیت برای Preempt Priority  در نظر گرفته شده باشد. همان طور که دیدیم به پنج حالت می توان این تقسیم بندی را انجام داد. پس با توجه به تعداد بیت های فرض شده برای اختصاص به Sub Priority و Preempt Priority، بیت ها 8 تا 10 این رجیستر را مقدار دهی می کنیم. برای اینکه بدانیم چه اعدادی باید در این بیت ها قرار گیرد، لازم است تا از جدول 45 دیتاشیت واقع در صفحۀ 134 استفاده کنیم.

تصویر 10  – نمایش رجیستر AIRCR در میکروکنترلرهای STM32F1

 

تصویر 11  – جدول مورد نیاز برای مقدار دهی بخش prigroup در رجیستر AIRCR در میکروکنترلرهای STM32F1

 

تقسیم بندی NVIC با توابع CMSIS در میکروکنترلرهای STM32F1

در این روش با استفاده از تابع SetPriorityGrouping می توان تعداد بیت های مربوط به Sub Priority را مشخص کرد. در حالت پیش فرض  اگر Priority group را 0 مقداردهی کنیم، هر چهار بیت NVIC به Preempt Priority اختصاص می یابد. با اضافه کردن مقدار این عدد، به همان میزان به تعداد بیت های مربوط به Sub Priority اضافه می شود و از تعداد بیت های مربوط به Preempt Priority کم می شود. پس اگر بنویسیم :

NVIC_SetPriorityGrouping(2);

 

این یعنی دو بیت از NVIC مربوط به Sub Priority و دو بیت دیگر مربوط به Preempt Priority خواهد بود.

اکنون اگر از تابع SetPriority استفاده کنیم و اولویت وقفه را با مشخص کردن یک عدد مثلا 15 تعیین کنیم باید این عدد باینری شده، دو بیت آن مربوط به Preempt Priority و دو بیت دیگر آن مربوط به Sub Priority خواهد بود و این کار ممکن است شما را دچار سردرگمی کند. می توان به جای این تابع، از تابع EncodePriority، برای تخصیص Preempt Priority و Sub Priority استفاده کرد. ابتدا شماره و نام وقفۀ مورد نظر را می نویسیم، سپس مقدار Preempt Priority و Sub Priority را به ترتیب مشخص می کنیم.

NVIC_EncodePriority(EXTI2_IRQn,1,0);

 

اگر مقدار SetPriorityGroupig ما صفر باشد، می توان به راحتی از SetPriority استفاده کرد.

 

از روش اولویت بندی وقفه ها در میکروکنترلرهای STM32 نتیجه می گیریم:

  • 1- از تابع NVIC از کتابخانۀ CMSIS، برای اولویت بندی وقفه ها استفاده می شود.
  • 2- به تفاوت مقدار دهی بیت های NVIC در اولویت بندی وقفه ها بین میکروکنترلر LPC1768 و میکروکنترلرهای STM32F1 دقت شود. چهار بیت NVIC در میکروکنترلرهای LPC1768 از بیت 3 تا 7 است.
  • 3- Preempt Priority مربوط به زمانی می باشد که یک وقفه در حال اجراست و در همان زمان یک وقفۀ دیگر اتفاق می افتد.
  • 4- Sub Priority مربوط به اتفاق افتادن دو وقفه به صورت همزمان است.
  • 5- به دلیل ایجاد سردرگمی در تقسیم بندی NVIC، بهتر است تعداد بیت های Sub Priority صفر باشد و چهار بیت NVIC تماماً به Preempt Priority اختصاص یابد.
  • 6- اگر از Sub Priority برای تعیین اولویت وقفه استفاده شود، باید با توجه به تعداد بیت های اختصاص یافته به Sub Priority و Preempt Priority، به صورت دستی اعداد مربوط به این 2 بخش تعیین شود.
  • 7- با استفاده از تابع EncodePriority، می توان مستقیم مقدار Sub Priority و Preempt Priority را برای وقفۀ مورد نظر تعیین کرد.

 

برای دریافت نسخۀ PDF این نوشته، فایل پیوست را دانلود نمایید.

 

 

data:image/jpeg;base64,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
رضا اسدی
مدیر یوبرد، طراح و تولید کنندۀ محصولات مبتنی بر میکروکنترلرها، مجری پروژه و مدرس آموزش برنامه نویسی میکروکنترلرها و برد مدار چاپی PCB، فعال در طراحی خودروهای الکتریکی
اگر دیدگاهی دارید میتوانید از طریق فرم زیر دیدگاه خود را در سایت درج کنید.
فرم پاسخ به دیدگاه