در قسمت پنجم آموزش های PIC درباره سازماندهی حافظه در میکروکنترلرهای PIC صحبت کردیم و در این قسمت قصد داریم تنظیم بیت های پیکرهبندی میکروکنترلر PIC16F877A را به شما عزیزان جویای علم آموزش دهیم
بیت های پیکرهبندی
برخی بیتهای خاص که فقط در زمان برنامهنویسی قابل اصلاح هستند بیتهای پیکرهبندی نامیده میشوند. بیت های پیکرهبندی برخی از حالتهای عملکرد میکروکنترلر را مشخص میکنند. این بیتها در هنگام ریست “خوانده میشوند” و ویژگیهای سختافزاری میکروکنترلر را فعال یا غیرفعال میکنند.
تنظیم بیت های پیکرهبندی PIC16F877A
کاربران MikroC میتوانند با ویرایش تنظیمات پروژه، این بیت های پیکرهبندی را ویرایش کنند:
Project >> Edit Project
کاربران MPLAB میتوانند با استفاده از ابزار Configuration Bits این بیت های پیکرهبندی را ویرایش کنند.
Windows>> PIC Memory Views>> Configuration Bits
اکنون تنظیمات باز خواهند شد:
نام MCU را به P16F877A تغییر دهید.
فرکانس ساعت MCU تا 8.00 مگاهرتز
ویژگی های کنترل شده توسط بیت های پیکرهبندی عبارتند از:
- Clock Source
- Watchdog Timer
- Power-up Timer
- Brown-out Reset
- Low-Voltage (Single-Supply)
- Data EEPROM Memory Code Protection
- Flash Program Memory Write
- In-Circuit Debugger Mode
- Flash Memory Code Protection
اسیلاتور
یک شکل موج تناوبی ونوسانی (موج سینوسی یا موج مربعی) ایجاد میکند. اسیلاتورها بهطور عمده DC را از منبع تغذیه به سیگنال AC تبدیل میکنند. اسیلاتور با فرکانس مشخصی کار میکند که معمولاً توسط کریستال کوارتز تعیین میشود. وقتی یک جریان مستقیم به کریستال اعمال میشود، با فرکانسی که به ضخامت آن بستگی دارد و به روش برش آن از سنگ معدنی اصلی، ارتعاش میکند.
برای PIC16F877A، اسیلاتورها دارای 4 حالت مختلف هستند:
حالتهای کلاک LP،XT و HS برای اتصال به میکروکنترلر نیاز به کریستال خارجی یا رزوناتور دارند. حالت کلاک RC برای تنظیم فرکانس اسیلاتور به یک مقاومت و خازن خارجی نیاز دارد. هر حالت برای یک دامنه فرکانس متفاوت بهینهشده است. اینکه کدام حالت انتخاب شود، همه به بیت های پیکرهبندی خروجی دلخواه بستگی دارد.
LP:
- کمترین میزان بهره را برای تقویتکننده داخلی اینورتر انتخاب میکند.
- کمترین میزان مصرف جریان از سه حالت.
- برای درایو با کریستال 32.768 کیلوهرتز طراحیشده است.
XT:
- بهره متوسط را برای تقویتکننده داخلی اینورتر انتخاب میکند.
- معمولاً برای کریستالها در محدوده 4 مگاهرتز یا کمتر انتخاب میشود.
HS:
- بیشترین تنظیمات افزایش را برای تقویتکننده داخلی اینورتر انتخاب میکند.
- بالاترین حالت جریان
- بهطورمعمول با کریستالهای بالاتر از محدوده 4 مگاهرتز استفاده میشود.
عملکرد:
اگر فرکانس موردنظر را بهعنوانمثال 8MHz انتخاب کنیم، اسیلاتور باید HS باشد. کریستال به پایههای میکروکنترلر OSC1 و OSC2 متصل است. همچنین به خازنهایی در هر پایه در بازه 15pf-30pf نیاز دارد.
تایمر WATCHDOG
میتوانیم با شرایطی روبرو شویم که میکروکنترلر بهدرستی کار نمیکند. در این حالت، ما بیشتر میکروکنترلر را با دکمه ریست، ریست میکنیم. اما هر بار استفاده از دکمه ریست برای حل آن خوب نیست. برای غلبه بر این وضعیت، ما از یک تایمر Watchdog استفاده میکنیم. تایمر Watchdog یک تایمر الکترونیکی است که در میکروکنترلرها جاسازیشده است و برای شناسایی و بازیابی مشکلات فوق استفاده میشود. اینیک شمارنده ساده است که برای راهاندازی مجدد واحد میکروکنترلر پالس میدهد. خروجی تایمر Watchdog مستقیماً به سیگنال ریست میکروکنترلر داده میشود. درواقع یک شمارنده فری رانی است که برنامه ما در هر بار اجرای صحیح باید درون شمارنده صفر بنویسد. اگر برنامه گیر کند، صفر نوشته نمیشود و شمارنده با دستیابی به حداکثر مقدار، میکروکنترلر را ریست میکند.
عملکرد:
تایمر Watchdog (WDT)، در صورت فعال بودن، پردازشگر بهطور خودکار بازنشانی میشود.
1 = WDT فعال
0 = WDT غیرفعال
تایمر POWER-UP
هنگام ریست، راهاندازی سریع مجدد میکروکنترلر میتواند مشکلاتی ایجاد کند. برای جلوگیری از چنین شرایطی، تأخیر راهاندازی ثابت 72 میلیثانیه توسط این تایمر فراهمشده است. این تایمر میکروکنترلر PIC را به تأخیر میاندازد تا ولتاژ کار VDD به مقدار کامل برسد. بنابراین، این روند تضمین میکند که ولتاژ منبع تغذیه قبل از شروع کلاک پایدار است.
عملکرد:
تایمر Power-up (PWT)، در صورت فعال بودن، تأخیر را زمانی که دستگاه در حالت ریست قرار دارد ایجاد میکند.
1 = PWT غیرفعال
0 = PWT فعال
BROWN-OUT RESET (BOR)
با افت ولتاژ یا ولتاژ کمتر از ولتاژ آستانه، ممکن است حافظه RAM خراب شود و دستگاه بهدرستی کار نکند، این حالت Brown out نامیده میشود.
عملکرد:
زمانی که Brown-out Reset فعال است، اگر ولتاژ تغذیه VDD برای زمان طولانی بیشتر از TBOR به زیر VBOR برسد، دستگاه ریست میشود. تا زمانی که VDD از VBOR بالاتر نرود، دستگاه در تنظیم مجدد Brown-out باقی میماند.
VBOR حدود 4 ولت
TBOR حدود 100 میکروثانیه
1= فعال BOR
0= غیرفعال BOR
LOW-VOLTAGE (SINGLE-SUPPLY)
این میکروکنترلرها میتوانند بهصورت سریال برنامهریزی شوند. این به مشتریان امکان میدهد میکروکنترلر را قبل از ارسال محصول برنامهریزی کنند. هنگام استفاده از ICSP (برنامهریزی سریال در مدار)، باید با ولتاژ 4.5 ولت تا 5.5 ولت تأمین شود. (معمولاً ولتاژهای بالاتر = 8 ولت)
بیت پیکرهبندی LVP (برنامهریزی ولتاژ پایین)، برنامهنویسی ICSP با ولتاژ پایین را امکانپذیر میکند. این به میکروکنترلر اجازه میدهد تا با استفاده از منبع VDD در محدوده ولتاژ کار، ICSP را برنامهریزی کند. بنابراین بهطور خلاصه میتوان گفت که VDD نیازی به ولتاژ بالا ندارد.
عملکرد:
در این حالت، پین RB3 / PGM به عملکرد برنامهنویسی اختصاصیافته است. در حین برنامهنویسی، VDD روی پین MCLR اعمال میشود. برای ورود به حالت برنامهنویسی، VDD باید روی RB3 / PGM اعمال شود بهشرط تنظیم بیت LVP. بهطور پیشفرض از کارخانه بیت LVP روی 1 تنظیمشده است. اگر از حالت برنامهنویسی ولتاژ پایین استفاده نشود، بیت LVP میتواند با ‘0’ برنامهریزی شود.
1 = LVP فعال
0 = LVP غیرفعال
DATA EEPROM MEMORY CODE PROTECTION BIT (CPD)
PIC 16F877A دارای داده EEPROM داخلی است. دو بیت، CPD و WRTD، از کل دادههای EEPROM محافظت میکنند. خواندن و نوشتن اطلاعات خارجی توسط EEPROM توسط CPD کنترل میشود. CPD Configuration Bit از این منطقه از حافظه در برابر خواندن و ضبطهای خارجی محافظت میکند.
عمل:
1 = محافظت از داده EEPROM خاموش (غیرفعال)
0 = داده EEPROM با کد محافظتشده (فعال)
FLASH PROGRAM MEMORY WRITE
این بیتها با استفاده از EECON امکان نوشتن در حافظه فلش را فراهم میکنند. ما میتوانیم توسط سیستمعامل دستگاه مستقیماً دادهها را در حافظه Flash بنویسیم. بهسادگی، میتوان گفت که بخشهای موردنظر ما میتوانند برای ضبط دادهها یا برای برنامهنویسی سریال در مدار انتخاب شوند.
IN-CIRCUIT DEBUGGER MODE
روند اشکالزدایی امکان اجرا و پیگیری کد را فراهم میکند، این فرآیند گامبهگام متغیرها و اجرا را میخواند. از پینهای RB6 و RB7 میتوان بهعنوان پایههای رفع اشکال در مدار استفاده کرد.
عملکرد:
1 = اشکالزدایی در مدار غیرفعال است
0 = اشکالزدایی در مدار فعال است (RB6 و RB7 به دیباگر اختصاص دادهشده است)
وقتی فعال است >> فرایند اشکالزدایی
وقتی غیرفعال است >> اجازه میدهد تا بهعنوان ورودی و خروجی دیجیتال استفاده شود
FLASH MEMORY CODE PROTECTION
اگر برنامه در حافظه فلش ذخیرهشده باشد، این بیت وظیفه فعال کردن محافظت از کد را بر عهده دارد.
عملکرد:
پس از فعال شدن، حافظه Flash (حافظه برنامه) کپی و محافظت میشود. پس نمیتوان آن را خواند.
1 = کد محافظت خاموش (CP غیرفعال)
0 = همه کد حافظه برنامه محافظتشده است (CP فعال است)
منبع: سیسوگ