ARM, STM, STM8, آموزش, توصیه شده, مقاله

آموزش میکروکنترلر STM8 قسمت 15: تایمر نگهبان محدوده ای (WWDG)

STM8_Window Watchdog

آموزش میکروکنترلر STM8 – قسمت پانزدهم ;

سیسوگ در قسمت چهاردهم آموزش میکروکنترلر STM8  تایمر نگهبان (IWDG) را که در اکثر میکروکنترلرها وجود دارد آموزش داد و اجرای برنامه آن‌ را روی STM8 با هم مشاهده کردیم. در این قسمت از مجموعه مقالات آموزش میکروکنترلر STM8  قصد دارد تایمر نگهبان محدوده ای (WWDG) را به شما آموزش دهد.

 

تایمر نگهبان محدوده ای (WWDG)

WWDG یک تایمر نگهبان پیشرفته است. برخلاف تایمر نگهبان (IWDG) در اینجا اگر شمارنده از یک محدوده زمانی از پیش تعیین شده بالاتر یا پایین تر برود فرمان ریست صادر می‌شود. این نوع تایمر بیشتر در میکروکنترلرهای پیشرفته مانند ARM ، ATXMEGA و میکروپروسسورهای اخیر دیده می‌شود. وقتی چنین ویژگی‌هایی را بررسی می‌کنیم مشاهده می‌شود که STM8s در مقایسه با دیگر میکروکنترلرهای 8 بیتی مقرون به صرفه‌تر است.

بلوک دیاگرام WWDG در STM8

WWDG با مقایسه مقادیر شمارنده معکوس در یک محدوده زمانی کار می‌کند. این شمارنده تنها زمانی که مقدار آن بزرگتر از 0x7F  و یا کمتر از مقدار تعیین شده محدوده باشد می‌تواند رفرش شود. اگر شمارنده به 0x7F برسد فرمان ریست سیستم صادر می‌شود. برنامه‌نویس باید در زمان مناسب شمارنده را رفرش کند. توجه داشته باشید که برخلاف IWDG، در اینجا WWDG به کلاک اصلی وابسته است.

نمودار WWDG در STM8

 

با استفاده از فرمول زیر می توان وقفه WWDG را محاسبه کرد. tWWDG بر اساس ms است:

فرمول وقفه WWDG

TCPU کلاک داخلی سیستم و بر اساس ms است.

 

اتصالات سخت افزاری

اتصالات سخت افزاری WWDG در STM8

نمونه کد

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

 

 

توضیحات

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

 

برای WWDG، فقط باید مقدار شمارنده معکوس و محدوده پنجره را تنظیم کنیم.

ما باید روی WWDG نظارت کنیم تا در زمان مناسب شمارنده را رفرش کنیم.

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

 

تایمر نگهبان محدوده ای

 

در قسمت شانزدهم آموزش میکروکنترلر STM8 سیسوگ قصد دارد اصول اولیه تایمرها را بیان کند. همچنان سیسوگ را همراهی کنید.

منبع

نوشته های مشابه

10 دیدگاه در “آموزش میکروکنترلر STM8 قسمت 15: تایمر نگهبان محدوده ای (WWDG)

  1. Amin گفت:

    با سلام؛ به نظرتون کپی کردن مطالب دیگران بدون ذکر منبع کار درستیه؟؟

    1. زئوس Zeus زئوس Zeus گفت:

      سلام
      قطعا کار ناپسندی است و به شدت محکوم میکنیم !
      تمام مطالب سایت سیسوگ در صورت وجود منبع ؛ حتما منبع انها ذکر میشه ؛ اگر منظورتون این مطلبه ، همین مطلب هم منبعش ذکر شده اخر پست رو ببینید.

  2. آشودرما گفت:

    سلام
    روزتون بخیر می خواستم بدونم 0x3F رو از کجا آوردین ؟
    if((GPIO_ReadInputPin(GPIOB, GPIO_PIN_7) == FALSE)
    و
    GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
    توی آخرین قسمت برنامه اشتباه چاپ شده 7و0
    توی برنامه اصلی درسته.
    دوست گرامی واقعا بابت این همه تلاش خالصانتون برای آموزش آدم های تازه کاری مثل ما ممنونیم . خدا هواتونو داشته باشه !

    1. زئوس Zeus زئوس Zeus گفت:

      عدد 3F اشتباه تایپ شده و در واقع 7ّF باید باشه چون کانتر 7 بیتی است.
      قسمت دوم هم اصلاح شده ؛
      متشکر از شما دوست عزیز برای دقت و تذکر 🙂

    2. آشودرما گفت:

      موفق باشین!

  3. سروش گفت:

    با سلام و احترام
    بابت این آموزش خیلی خیلی ممنون . مفهوم WWDG رو نمی فهمیدم حالا کاملا برام روشن شد.
    انشالله همواره موفق باشید.

    1. N H N H گفت:

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

  4. علی کریمی گفت:

    سلام و خسته نباشید
    قیمت میکروهای stm8 در مقایسه با سری stm32f0 چندان جذاب نیست و 32 بیتی هاارزانتر هم هستند
    اینجور که دیدم stm8 زیر 10هزار تومن نیست ولی سری stm32f0 از 6 تومن شروع میشه
    من لزوم کار با این میکروها را نمیفهمم
    به نظرم بجای این اموزش اگر زیر و بم stm32 کامل اموزش داده بشه خیلی بهتره
    در هر صورت بابت مطالب اموزنده و تجارب ارزشمندتون خیلی ممنونم

    1. N H N H گفت:

      سلام دوست عزیز
      در حال حاضر مجموعه آموزش میکروکنترلر STM32 به صورت هفتگی در سایت متشر میشه و احتمالا در آینده مجموعه آموزشی دیگری هم برای این میکروکنترلر داشته باشیم.
      موفق باشید.

    2. زئوس Zeus زئوس Zeus گفت:

      دوست عزیز ؛ همیشه قیمت ملاک نیست ! میکروکنترلرهایی هستند که خیلی خیلی ارزان تر هم هستند ! ولی مساله مهم اینه که باید در نظر داشته باشیم هر میکروکنترلری برای پوشش نیازی خاص تولید میشه و نمیشه گفت وقتی ARM سی و دو بیتی هست چرا کسی میره سراغ AVR !
      سری دوم STM32 هم توی راه هست و به زودی با اتمام این سری ؛ شروع خواهد شد.

دیدگاهتان را بنویسید

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