تایمر نگهبان پنجره‌ای در STM32 | قسمت 29 آموزش STM32 با توابع LL

blog
۱۴۰۱-۰۴-۲۵
2 دقیقه

در قسمت قبل در مورد تایمر نگهبان مستقل صحبت کردیم. در این بخش می‌خواهیم تایمر نگهبان پنجره‌ای یا WWDG را بررسی کنیم پس با سیسوگ همراه باشید. در WWDG، یک شرط دیگر نیز برای ریست شدن وجود دارد. برای این تایمر نگهبان علاوه بر مقدار ابتدایی شمارنده، یک مقدار پنجره نیز تعریف می‌شود. درصورتی‌که هنگام بازنشانی شمارنده، مقدار آن بزرگ‌تر از مقدار پنجره باشد، میکروکنترلر ریست خواهد شد. یعنی اینکه برای جلوگیری از ریست توسط WWDG، باید مقدار شمارنده را قبل ازآن‌که از 64 یا 0x40 (در مبنای 16) کمتر شود، و پس از آن‌که از مقدار پنجره کمتر شد، بازنشانی کنیم. بنابراین عمل بازنشانی حتماً باید در یک بازه یا پنجره زمانی مشخص صورت گیرد و به همین دلیل است که به این تایمر نگهبان پنجره‌ای گفته می‌شود.

شمارنده نزولی 7 بیتی واحد WWDG، حداکثر می‌تواند روی عدد 127 تنظیم شود و حداقل مقدار آن نیز مقدار پنجره است. همچنین مقدار Window یا پنجره باید عددی در بازه 64 تا 127 باشد.

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

در ادامه این واحد را در یک پروژه ساده راه‌اندازی می‌کنیم.

 

ایجاد پروژه

مثل بخش قبلی قسمت دیباگ و کلاک و USART1 را تنظیم می‌کنیم. بعدازآن باید پین PB0 را روی ورودی و در حالت pull-up تنظیم کنیم. سپس تایمر نگهبان پنجره‌ای را فعال می‌کنیم و تقسیم‌کننده کلاک آن را روی عدد دلخواه (مثلاً 8) تنظیم می‌کنیم. و مقدار شمارنده آن را 127 و مقدار پنجره را 90 قرار می‌دهیم:

 

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

 

نوشتن کد پروژه

برای این پروژه نیز اعمال مربوط به ریدایرکت را انجام می‌دهیم. همچنین از همان تابع نمایش منبع ریست میکرو استفاده می‌کنیم. مانند پروژه قبل در تابع int main() ابتدا با تابعی که نوشتیم منبع ریست را نمایش می‌دهیم و سپس مثل قبل همه پرچم‌های ریست را پاک می‌کنیم. سپس دو متغیر برای شمارش تعریف می‌کنیم:

برای داشتن معیار دیگری برای دانستن ادامه کار میکرو یا ریست شدن آن، می‌توانیم کد زیر را برای شمارش، در حلقه while(1) بنویسیم:

در همین حلقه while(1)، یک شرط برای بازنشانی مقدار شمارنده‌ی IWDG تعریف می‌کنیم، که در صورت عدم وقوع شمارنده به صفر رسیده و ریست اتفاق بیافتد:

اکنون باید یک کلید یا push-button به پایه PA5 متصل کنیم و برنامه را روی میکرو دانلود کنیم. نتیجه اجرا را در ترمینال سریال میبینیم:

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

 

لینک این پروژه در گیت‌هاب

اطلاعات
0
0
لینک و اشتراک
profile

سیاوش

متخصص الکترونیک

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

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله