ویرگول
ورودثبت نام
آرین خسروی
آرین خسروی
خواندن ۱۵ دقیقه·۳ سال پیش

بررسی معماری میکروکنترلر PIC

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

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

از جمله قابلیت های میکروی PIC می توان به پشتیبانی از ویژگی EMC اشاره کرد که به این ترتیب تاثیر نویز و عوامل ناخواسته خارجی بر روی میکروکنترلر کاهش می یابد.

هم چنین پشتیبانی از معماری Harvard موجب افزایش سرعت پردازش این میکروها گردیده است. در حال حاضر در بسیاری از شرکت های داخلی از این میکرو جهت انجام پروژه های گوناگون استفاده می شود.

میکروکنترلرهای PIC در انواع 8 بیتی، 16 بیتی و 32 بیتی موجود می باشند. مزیت اصلی میکروهای PIC گستره وسیع peripheral-ها و مصرف توان کم آنها است.

چرا این میکروکنترلر؟!

شاید بپرسید چرا باید از میکروهای PIC شروع کنیم؟ به نظر ما و بسیاری از افراد حرفه‌ای در این زمینه، خانواده‌ی میکروهای PIC یک انتخاب مناسب برای شروع پیمودن این راه هستند. چرا که اولا دارای فروم‌های آموزشی و پشتیبانی بسیار زیادی هستند و در ثانی یادگیری مفاهیم آن‌ها مانند پایه‌ای عمل می‌کند که قرار گرفتن بر روی آن ، یادگیری مفاهیم سایر میکروکنترلرها را ساده‌تر می‌کند.

میکرو کنترلر های PIC داری ساختار و معماری پیشرفته ای هستند عملکرد بالایی دارند و از تنوع زیادی بر خوردارند. تنوع در اندازه ، امکانات ، قابلیت ها، و هزینه از مزایای عمده این دسته از میکرو کنترلر هاست.

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

میکروکنترلر PIC قطعه ای کوچک با کاربردهای وسیع است.

آیا کاربردهای متنوع و انواع مختلف این میکروکنترلر ها را می شناسید؟

مزایا و معایب آن ها را چطور؟

یا این که از چه اجزایی تشکیل شده اند؟

پس با من هراه شوید تا در این مقاله به طور کامل با این میکروکنتلر کاربردی آشنا شویم.

ویژگی های میکروکنترلر PIC چیست؟

  • یک مینی کامپیوتر کامل است اما بر خلاف یک کامپیوتر که برای استفاده شخصی طراحی شده ، میکرو کنترلر های PIC برای کار کردن با یک ماشین طراحی شده است
  • میکروکنترلر ها در اکثر وسایل برقی و الکترونیکی وجود دارند و کاربرد گسترده ای در صنعت دارند.
  • بسته به برنامه ای که درون آن ها نوشته می شود، در اجزای مختلف به کار گرفته می شوند.
  • این میکروکنتلر متعلق به شرکت میکروچیپ امریکا است.
  • سرعت کاری میکروکنترلر PIC برابر با 1/4 فرکانس خارجی است.
  • مثلا اگر فرکانس 16 باشد PIC با فرکانس 4 کار می کند.
  • میکروکنترلر های PIC نویز کمی را می پذیرند که یکی از دلایلش همان فرکانس است که تقسیم بر 4 می شود.
  • توان مصرفی این میکروکنترلر ها کم است.
  • زبان برنامه نویسی در PIC، C و یا ++C است.
  • مدل های اولیه PIC دارای حافظه فقط خواندنی (ROM) یا
    (Erasable programmable read only memory ,EPROM) قابل برنامه ریزی بودند،
    که برخی از آن ها امکان پاک کردن حافظه را داشتند.
  • همه مدل های فعلی از حافظه فلش برای ذخیره برنامه استفاده می کنند.
  • مدل های جدیدتر اجازه می دهند که حافظه را دوباره برنامه ریزی کنند.
  • در این مدل ها حافظه داده از حافظه برنامه جدا می شود.
  • حافظه داده ها 8 بیتی، 16 بیتی و در جدیدترین مدل ها تا 32 بیت گستردگی دارد.
  • نرم افزار کامپیوتری جهت توسعه PIC ها، MPLAB نام دارد. MPLAB برنامه خود شرکت مییکرو چیپ است.
  • میکروکنترلر های PIC به دلیل در دسترس بودن و قابلیت برنامه ریزی مجدد فلش مموری، از نظر توسعه دهندگان محبوب می باشند.
  • میکروکنترلر های PIC توسط طراحان هاروارد طراحی شده اند و در دستگاه های مختلف به کار برده می شوند.

مزایا و معایب PIC ها

مزایا

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

معایب

  • داشتن تنها یک باطری.
  • برای سوییچینگ به بانک رجیستر ها نیازمند دسترسی به کل دستگاه های متصل به رم است.
  • قیمت بالاتر نسبت به برخی میکروکنترلر ها

انواع PIC


میکرو تراشه های PIC در خانواده های مختلف ارائه شده اند.

خانواده های پایه متوسط با گستردگی حافظه داده 8 بیتی و خانواده های سطح بالا از حافظه 16 بیتی استفاده می کنند.

آخرین سری PIC32mz یک میکروکنترلر32 بیتی می باشد.

سری PIC10 ،PIC12

این میکروکنترلر های PIC دارای حافظه ای با اندازه 12 بیت می باشد که
معمولا 7 تا 9 بایت اول رجیستر ها با هدف خاص هستند، بایت های باقی مانده رجیستر ها عمومی هستند.

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

سری PIC17

این PIC هیچ گاه رایج نشد و به زودی معماری PIC18 بعد آن وارد شد.

این سری توصیه نمی شود و ممکن است قابلیت ها را محدود کند.

سری PIC18

در سال 2000 میکروچیپ PIC18 را معرفی کرد که مانند PIC17 نبود و
به زودی استفاده از آن در بین مردم رواج یافت.

یکی از زبان های برنامه نویسی این میکروکنترلر C بود.

سری PIC24 ،ds PIC

این میکروکنترلر ها در سال 2001 توسط میکروچیپ معرفی شدند و تا سال 2004 تولید انبوهی داشتند.

این PIC قابلیت پردازش سیگنال دیجیتال را نیز داشتند.

سری PIC32mx

در ماه نوامبر 2007 میکرو چیپ این میکروکنترلر را معرفی کرد.

خانواده میکروکنترلر های 32 بیتی که با کامپایلر MPLAB برنامه نویسی می شود و بزرگترین حافظه فلش را دارد.

برخی از انواع PIC ها با ++C نیز قابل برنامه نویسی هستند.

تعداد پایه های این ریز تراشه ها به حداقل حدود 8 و حداکثر 100 پایه و بیشتر می رسد.

آشنایی با معماری میکروکنترلر PIC و کاربردهای آن


این خانواده از میکروکنترلرها در سال 1993 توسط شرکت Microchip Technologies ارائه شدند. هدف اولیه از ساخت آن‌ها این بود که به عنوان قطعه‌ای درونی از کامپیوترهای PDP یا Programmed Data Processor استفاده شوند و تمام پریفرال‌های جانبی آن کامپیوترها به واسطه‌ی این قطعه با هم اینترفیس داشته باشند. در واقع نام آن‌ها نیز از همین‌جا گرفته شد: Peripheral Interface Controller یا به اختصار PIC. به مرور و پس از آن شرکت میکروچیپ سری‌های مختلف و متنوع دیگری نیز از این آی سی تازه متولد شده ارائه نمود به گونه‌ای که در موارد بسیاری کاربرد پیدا کردند؛ از پروژه‌های ساده‌ای مانند کنترل روشنایی تا موارد پیچیده‌تر.

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

همان طور که گفته شد پیک ها از معماری هاروارد استفاده می کنند. در مقابل این معماری ، معماری ون نیومن قرار دارد که در اکثر میکروپروسسور های رایج استفاده می شود و گذر گاه حافظه برنامه ، گذر گاه حافظه داده ، I/O ،ثباتها و غیره یکی است.

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


میکروکنترلر PIC16F877A را در نظر بگیرید. این میکرو از یک CPU داخلی، تعدادی پورت I/O، مموری، مبدل‌های A/D (آنالوگ به دیجیتال و بالعکس)، تعدادی تایمر و کانتر، واحد تولید وقفه (interrupts)، درگاه‌های ارتباط سریال، اسیلاتور و ماژول CCP تشکیل شده است و همان‌طور که پیداست در مجموع برای کسانی که می‌خواهند به تازگی وارد این وادی شوند یک IC نسبتا کامل و قدرتمند محسوب می‌شود. بلوک دیاگرام کلی این میکرو PIC را در تصویر زیر ببینید.

واحد پردازش مرکزی

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

اما در درون خود این واحد پردازشی چه چیزهایی قرار دارد؟

  • یک ALU یا Arithmetic Logic Unit؛ با کمک آن محاسبات ریاضی و تصمیمات منطقی را انجام می‌دهد.
  • یک MU یا Memory Unit؛ از آن برای ذخیره کردن دستورات پس از انجام شدنشان استفاده می‌کند. طبیعتا ظرفیت این MU تعیین کننده‌ی این خواهد بود که  سایز برنامه‌ای که می‌توان روی آن میکروکنترلر ریخت، چقدر می‌تواند باشد.
  • یک CU یا Control Unit؛ به عنوان یک باس ارتباطی بین CPU و سایر بخش‌های میکرو عمل می‌کند. این باس کمک می‌کند که دستورات و داده‌ها پس از پردازش شدن در رجیسترهای مخصوص بتوانند دریافت (fetch) شوند.

حافظه‌ی RAM

حافظه‌ی رم (Random Access Memory) بخشی است که سرعت میکروکنترلر ما را تعیین می‌کند. درون این واحد مجموعه‌هایی از رجیسترها وجود دارند که هرکدام وظیفه‌ای بخصوص برعهده دارند و در مجموع می‌توان آن‌ها را به دو گروه تقسیم‌بندی کرد:

  • رجیسترهای عمومی یا GPR
  • رجیسترهای خاص منظوره یا SFR

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

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

حافظه‌‌ی ROM

این حافظه جایی است که برنامه‌ی ما در آن ذخیره می‌شود و تعیین کننده‌ی حداکثر سایز برنامه نیز هست به همین دلیل به آن حافظه‌ی برنامه (Read Only Memory) نیز می‌گویند. زمانی که میکروکنترلر در حال کار کردن است، برنامه‌ای که از قبل در حافظه‌ی ROM ریخته و ذخیره شده است، دستور به دستور در کلاک سایکل‌های متوالی اجرا می‌شود. بنابراین کاربر تنها در زمانی می‌تواند به این حافظه دسترسی داشته و روی آن چیزی بنویسد که در حال برنامه ‌ریختن روی میکرو باشد، در زمان کار، میکرو دیگر در دسترس نیست و به یک حافظه‌ی فقط خواندنی تبدیل می‌شود.

حافظه‌‌ی EEPROM

یـــــــــــــــکی دیگر از واحد های حافظه (Electrically Erasable Programmable Read Only Memory)

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

حافظه‌ی فلش

این حافظه نیز از نوع PROM، یعنی فقط خواندنی و برنامه‌پذیر است. تفاوت آن با مورد قبلی در این است که بارها و بارها می‌توان به راحتی آن را پاک کرد و اطلاعات جدیدی وارد آن نمود. معمولا میکروهای PIC از این نوع حافظه دارند.

پورت های ورودی/خروجی

  • مثلا میکروی PIC16F877A که از آن نام بردیم، دارای 5 عدد پورت با نام‌های A ،B ،C ،D و E است.
  • پورت A از نوع 16 بیتی، پورت E از نوع 3 بیتی و بقیه از نوع 8 بیتی هستند.
  • بسته به تنظیمات رجیستر TRIS، هرکدام از این پورت ها می‌توانند به عنوان ورودی یا خروجی (I/O) مورد استفاده قرار گیرند.
  • جدا از اینکه می‌توانند به عنوان ورودی و خروجی استفاده شوند، می‌توان از آن‌ها برای منظورهای خاص مثلا در پروتکل‌ SPI، اعمال توابع وقفه و PWM نیز استفاده کرد.

باس

باس (Bus) به مجموعه‌ای از سیم‌ها و وایرها سامان‌ یافته گفته می‌شود که وظیفه دارند بین CPU،RAM و ورودی/خروجی‌ها ارتباط برقرار کنند.

اگر از نوع Data Bus باشد وظیفه‌ی آن حمل و جابه‌جایی داده‌هاست.

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

از طرفی درگاه‌های ورودی/خروجی نیز با پریفرال‌های خارجی اینترفیس دارند. مثلا پروتکل‌های UART و USART که هر دو پروتکل‌های ارتباط سریال هستند و از آن‌ها برای برقراری ارتباط بین میکرو و ماژول‌های خارجی‌ای مانند GSM  ،GPS، بلوتوث، IR و … استفاده می‌شود.

میکروکنترلرهای PIC که توسط شرکت میکروچیپ ساخته می‌شوند به طور کلی به چهار خانواده‌ی بزرگ تقسیم می‌شوند. هرکدام از این خانواده‌ها قطعات مختلفی در درون خود دارند که باعث شده ‌است ویژگی‌ها متمایزی با سایز گروه‌ها داشته باشند.

  1. خانواده‌ی اول؛ (PIC10 (10FXXX: شناخته شده به عنوان گروه Low End .
  2. خانواده‌ی دوم؛ (PIC12 (PIC12FXXX: گروه Mid-Range (میان رده) نامیده می‌شوند.
  3. خانواده‌ی سوم؛ (16FXXX)PIC16 .
  4. خانواده‌ی چهارم؛ (PIC 17/18 (18FXXX.

اگر به دیتاشیت این میکرو مراجعه کنیم، می‌بینیم در آن نوشته شده است که این میکرو دارای 3 عدد تایمر است. دو تا از این تایمرها از نوع پیش‌تقسیم‌کننده (pre-scaler) 8 بیتی هستند و یکی از نوع 16 بیتی. از این تایمرها می‌تواند برای توابع زمان‌بندی مورد نیاز در برنامه استفاده کرد. هم‌چنین می‌توانند به عنوان کانتر نیز استفاده شوند.

همچنین معلوم می‌شود که این میکرو دارای امکانات Capture Compare and PWM) CCP) نیز هست که باعث می‌شوند میکرو قادر باشد سیگنال PWM نیز بسازد و سیگنال‌های فرکانسی دریافت شده را بخواند، و یا اینکه دراین دیتاشیت قید شده است که همان‌طور که گفتیم، این میکرو برای برقراری ارتباط با دیوایس‌های بیرونی، دارای انواع پروتکل‌های SPI ،I2C ،PSP و USART است.

در بحث موارد امنیتی نیز، ذکر شده است که این میکرو دارای ویژگی Brown-out Reset) BOR) نیز هست که با استفاده از آن می‌توان میکرو را در حین برنامه‌ریزی نیز ریست نمود. دارای ویژگی WDT (Watchdog Timer) نیز هست که یک تایمر مستقل برای ریست کردن میکرو در مواردی است که مورد نیاز باشد.

در بخش ویژگی‌های آنالوگ می‌بینیم که این میکرو دارای ADC ده بیتی 8 کاناله است. معنای این ویژگی این است که این میکرو قادر است مقادیر آنالوگ را با رزولوشن 10 بیت، به مقادیر معادل دیجیتال آن‌ها تبدیل کند و این کار را همزمان از طریق 8 کانال می‌تواند انجام دهد.

همچنین دارای دو واحد مقایسه‌گر (comparator) نیز در درون خود هست که با استفاده از آن‌ها قادر است ولتاژ ورودی را مستقلا و بدون نیاز به خوانده شدن از طریق نرم‌افزار دریافت و مقایسه کند.

سری هم به قسمت ویژگی‌های منحصر به فرد این میکرو بزنیم.

طبق اطلاعات توضیح داده شده، این میکرو دارای 100/000 سیکل پاک‌کردن/نوشتن (erase/write) است. به تعبیر واضح‌تر شما می‌توانید این میکرو را 100/000 بار پروگرم کنید. با استفاده از روش برنامه‌ریزی ICSP، می‌توان این میکرو را با استفاده از PICKIT3 به صورت مستقیم در مدار برنامه‌ریزی کرد. دیباگ کردن آن نیز با روش In-Circuit Debug) ICD) امکان‌پذیراست.

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

مشخصات سخت افزار

ما در اینجا بیشترPIC 16f84 را مورد بررسی قرار می دهیم که دارای 18 پایه می باشد و کاربرد وسیعی را دارد و 13 پایه به عنوان ورودی و خروجی در اختیار ما می گذارد.این تراشه دارای دو پورت A(5 pin) و B(8 pin) می باشد که بر حسب نیاز می توان آن ها را خروجی یا ورودی تعریف کرد. هر کدام از پایه ها بر حسب شماره در زیر معرفی شده اند:

17- بیت اول پورت A : RA0

18- بیت دوم پورت A : RA1

1- بیت سوم پورت A : RA2

2- بیت چهارم پورت A : RA3

3- بیت پنجم پورت A : RA4

6- بیت اول پورت B : RB0

7- بیت دوم پورت B : RB1

8- بیت سوم پورت B : RB2

9- بیت چهارم پورت B : RB3

10- بیت پنجم پورت B : RB4

11- بیت ششم پورت B : RB5

12- بیت هفتم پورت B : RB6

13- بیت هشتم پورت B : RB7

15 و 16- برای اتصال به یک نوسان ساز(مانند کریستال)

نتیجه گیری و جمع بندی

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

هر چند که جدیدا آردوینو (Arduino) و رزبری پای به طور کامل دید رو نسبت به میکروکنترلر تغییر دادند.

بررسی معماری picمعماری پیکآرین خسروی
excellent computer engineering student | swimmer and badmintonistttttt
شاید از این پست‌ها خوشتان بیاید