آموزش میکروکنترلر PICآموزش هامیکروکنترلر ها

راه اندازی میکروکنترلر PIC – بخش دوم

Setting up a PIC microcontroller – Part 2

آنچه در این مقاله خواهید خواند :

 

آشنایی با اصول استفاده از کلید ها و مفهوم Bounce

Debouncing با استفاده از گیت اشمیت تریگر Schmitt Trigger

فرایند ریست در میکروکنترلر های PIC

 


آشنایی با اصول استفاده از کلید ها و مفهوم Bounce

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

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

Debouncing با استفاده از گیت اشمیت تریگر Schmitt Trigger :

اشمیت تریگر یکی از انواع گیت های دیجیتال است که به منظور بازسازی شکل موج های آنالوگ به دیجیتال طراحی شده است ، اشمیت تریگر در واقع یک مقایسه کننده با دو حد آستانه می باشد ، یکی حد آستانه بالا یا Upper Threshold و دیگری حد آستانه پایین یا Lower Threshold است ، همچنین اشمیت تریگر دارای Hysteresis یا پسماند می باشد که درواقع وضعیت قبلی را به حافظه می سپارد.

برای روشن تر شدن و درک بهتر موضوع ، مسئله را با یک مثال مورد بررسی قرار می دهیم :

در شکل با یک سیگنال آنالوگ به ورودی اشمیت تریگر وارد می نماییم ، همانطور که مشاهده می کنید ، سیگنال حاوی Bounce بسیار زیادی است ، گیت اشمیت تریگر دارای 2 آستانه می باشد ، آستانه بالا یا Upper Threshold و آستانه پایین یا Lower Threshold.

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

فرایند ریست در میکروکنترلر های PIC :

در برخی موارد ممکن است بخواهیم میکروکنترلر را ریست نماییم و در واقع بخواهیم برنامه از ابتدا شروع به اجرا شود ، از همین روی در میکروکنترلرهای خانواده PIC یک پایه برای این منظور تعبیه شده است که بصورت سخت افزاری امکان ریست نمودن میکروکنترلر را فراهم می نماید ، نام این پایه MCLR است که مخفف Master Clear می باشد.

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

  1. ریست خارجی پورت MCLR
  2. ریست افت ولتاژ
  3. ریست هنگام روشن شدن میکروکنترلر
  4. ریست بر اساس رخداد Watchdog Timer
  5. ریست سرریز حافظه پشته
  6. ریست بر اساس خواندن حافظه پشته به مقدار بیش از 31 مرتبه و عدم نوشتن در آن

1- ریست خارجی پورت MCLR

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

توجه :

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

از همین روی برای راه اندازی میکروکنترلر های PIC باید پایه MCLR را در وضعیت یک منطقی قرار دهیم تا میکروکنترلر ناخواسته در وضعیت ریست قرار نگیرد.

در زیرشماتیک مدار مناسب و بهینه برای عملیات ریست میکروکنترلر های خانواده PIC قرار دارد :

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

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

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

هشت + 14 =

دکمه بازگشت به بالا