زمان سنج نگهبان در میکروکنترلرها

آموزش زمان سنج نگهبان در میکروکنترلرها

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

این آموزش، چهارمین سری از تایمرهای میکروکنترلرها است که در مورد نگهبانان داخلی صحبت می کند. اولین مقاله، ویژگی های بیشتر انواع تایمرها را شرح می دهد و تایمرهای دوره ای یا تناوبی را پوشش می دهد.

اگر با عملکرد کلی تایمرهای میکروکنترلر آشنایی ندارید، توصیه می کنیم اولین مقاله از آموزش را بخوانید. همچنین در آن آموزش درمورد تایمرهای مدولاسیون پهنا پالس و ساعت زمان – حقیقی در MCU بحث کرده ایم. این آموزش، تایمرهای نگهبان را توصیف می کند که معمولا مخفف آن به صورت WDT است، همچنین به عملیات کامپیوتری که به طور صحیح تایمر(زمان سنج) یا COP هستند، نامیده می شوند.

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

آموزش تایمر نگهبان: (یک آنالوگ غیر قرادادی)

تایمر نگهبان، یک نمونه تایمر تخصصی یافته ای است که، به یک ریز پردازنده برای بهبودی از نقص عملکردی (بد عمل کردن) کمک می کند. اگر یک تایمر نگهبان به پایان دوره حساب خود برسد، کل سیستم پردازنده را مجددا مرتب می کند.

زمان سنج نگهبان در میکروکنترلرها

( در این عکس آموزش نمونه ای از زمان سنج نگهبان را می بینید)

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

برای تصور عملکرد WDT در این آموزش، یک آنالوگ غیر قراردادی برای شما در نظر داریم.

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

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

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

آموزش انواع تایمرهای نگهبان داخلی:

در این آموزش می بینید که دو نوع تایمر نگهبان وجود دارد: بدون پنجره و پنجره دار. اگر سرویس دهی پیشخوان یا شمارنده دیر شود، هر دو نوع تامر باعث تنظیم مجدد می گردند.

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

زمان سنج نگهبان در میکروکنترلرها

( در این آموزش، توالی زمان بندی یک تایمر نگهبان را می بینید )

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

A – اندکی پس از راه اندازی، برنامه اولیه نگهبان با حد بالا برای شمارنده آغاز می کند و شمارش را امکان پذیر می کند. برای یک نگهبان پنجره، حد پایین نیز تعیین شده است.

B و C – این نرم افزار قبل از رسیدن به حد بالا و برای نگهبان پنجره ای، پس از حد پایین، شمارنده را با موفقیت سرویس دهی می کند. بعد از سرویس دهی، شمارنده در ۰ مجددا مرتب سازی می شود و دوباره شروع به شمارش می کند.

D – برنامه به شمارنده سرویس نمی دهد و شمارش به حد بالا می رسد. نگهبان، میکروکنترلر را مجددا مرتب سازی می کند.

D   به E- میکروکنترلر شروع و راه اندازی می شود و نگهبان را توانا می سازد.

E – نگهبان شروع به شمارش می کند.

F   -برنامه قبل از رسیدن به حد بالا و برای نگهبان پنجره ای، بعد از حد پایین، شمارنده را سرویس می دهد. شمارنده در ۰ مجددا مرتب سازی می شود و شمارش را دوباره شروع می کند.

G – برنامه، قبل از اینکه شمارش به حد پایینی برای نگهبان پنجره برسد، شمارنده را سرویس می دهد. برای نگهبان بدون پنجره بدون حد پایین، مرتب سازی مجدد وجود ندارد و شمارنده به ۰ می رود و دوباره شروع به شمارش می کند. برای یک نگهبان پنجره دار، میکروکنترلر مجددا مرتب سازی می شود.

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

آموزش ارزش دهی اولیه نگهبان:

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

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

زمان سنج نگهبان در میکروکنترلرها

( نمونه ای زمان سنج نگهبان )

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

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

آموزش راه انداز پنجره:

در این آموزش به یاد دارید که، نگهبان می تواند بدون پنجره و پنجره دار باشد. یک تایمر واحد با داشتن حد پایین پنجره به عنوان یک گزینه، هر دو نوع را ارائه می دهد، از این نظر چیز رایجی است. اندازه پنجره با نگهبانان مختلف، متفاوت است. حد پایین نگهبانی که در حال حاضر استفاده می کنم در ۷۵٪ از حد بالایی ثابت شده است. یک نگهبان دیگر انتخاب هایی از ۷۵٪ ، ۵۰٪ ، ۳۷٫۵٪ یا ۲۵٪ از حد بالایی را دارد. اما یک نگهبان دیگر حد بالایی و پایینی را به طور مستقل تعیین می کند. همچنین در مورد چگونگی انتخاب حد بالا تنوع زیادی وجود دارد.

آموزش سرویس کردن مرتب سازی مجدد زمان سنج نگهبان AKA:

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

در این آموزش جالب است بدانید، نگهبانی که من در حال حاضر استفاده می کنم برای ثبت خدمات نیاز به دو نوشتن دارد، با مقادیر x550 و xAA0. اگر مقداری غیر از x550 یا xAA0 برای ثبت خدمات نوشته شود، در هر زمان، میکروکنترلر بلافاصله مجددا مرتب سازی می شوند.

مثلا نگهبان دیگر برای نوشتن یک ثبت سرویس، به مقدار xAAAA0 نیاز دارد. به نظر می رسد با شماره های xA0 و x50 و الگوهای بیت متناوب شان از ۱۰۱۰ و ۰۱۰۱، دارای جذابیت خاصی در این آموزش هستند. یک تایمر با نوشتن شماره x57430، مخالف این روند است.

آموزش حالت خواب:

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

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

پاسخ متوالی(پشت سر هم، تدریجی):

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

آموزش استراتژی WDT:

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

سوالات مربوط به استراتژی نگهبان:

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

ما در این آموزش متوجه شدیم که استراتژی نگهبان یک موضوع پیچیده و بسیار وابسته به برنامه است.

قبل از مرتب سازی مجدد میکروکنترلر این آموزش، بیت نگهبان در ثبت وضعیت قرار می گیرد که از مرتب سازی مجدد باقی مانده است. اغلب این بیت به همراه وضعیت مرتب سازی مجدد دیگر، ذخیره می شود. تست بیت تنظیم مجدد نگهبان باید بخشی از استراتژی باشد.

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

DMT در مقابل زمان سنج نگهبان:

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

تفاوت اساسی بین نگهبان و DMT این است که، DMT می تواند در زمان خواب و سایر حالت های ذخیره ای مصرف برق، برای فعال بودن شان زمان صرف می کنند اما تغییری در تعداد دستورالعمل های CPU اجرا شده ایجاد نمی کنند.

نتیجه این آموزش:

تایمرهای دیگری مانند: تایمرهای کم توان، تایمرهای سه گانه PWM ( برای کنترل سه رنگ ال ای دی) و تایمرهایی که من هیبریدی می نامم، وجود دارند که تایمرهای سخت افزاری را با نرم افزار نزدیک به هم وصل می کنند. اگر می خواهید اطلاعات بیشتری درباره تایمرهای میکروکنترلر داشته باشید، نظر خودتان را بگویید.

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

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