با توجه به سرعت بسیار زیاد تکنولوژی در عرصه ی الکترونیک دیجیتال، اهمیت مباحث اتوماسیون صنعتی و در کنار آن حوزه کاری رباتیک بیش از پیش مهم جلوه می کنند، شاید یکی از پایه ای ترین و در دسترس ترین سخت افزارهای مرتبط با این زمینه میکروکنترلرها هستند که آموزش و به کارگیری آنها جایگاه ویژه ای را در صنعت پیدا کرده است. در این میان محصولات شرکت Microchip که با نام تجاری PIC به بازار عرضه می شوند بنا به ادعای شرکت سازنده و آمار ارائه شده از عملکرد آن، گوی سبقت را از دیگر رقبا در محیط های کارگاهی و صنعتی ربوده است.
به همین دلیل میکروکنترلر PIC یکی از گزینه های جذاب برای مهندسین برق و کامپیوتر جهت برنامه نویسی برای کارهای عملگرا می باشد، میکرو کنترلر پی آی سی دارای امکانات متنوعی از قبیل؛ مبدل آنالوگ به دیجیتال، شمارنده و تایمرهای متنوع، مقایسه کننده داخلی، واحد ارتباط سریال، پورت های ورودی و خروجی، واحد کنترل وقفه های داخلی و خارجی و … می باشد.
از جمله قابلیت های میکروی PIC می توان به پشتیبانی از ویژگی EMC اشاره کرد که به این ترتیب تاثیر نویز و عوامل ناخواسته خارجی بر روی میکروکنترلر کاهش می یابد.
هم چنین پشتیبانی از معماری Harvard موجب افزایش سرعت پردازش این میکروها گردیده است. در حال حاضر در بسیاری از شرکت های داخلی از این میکرو جهت انجام پروژه های گوناگون استفاده می شود.
میکروکنترلرهای PIC در انواع 8 بیتی، 16 بیتی و 32 بیتی موجود می باشند. مزیت اصلی میکروهای PIC گستره وسیع peripheral-ها و مصرف توان کم آنها است.
شاید بپرسید چرا باید از میکروهای PIC شروع کنیم؟ به نظر ما و بسیاری از افراد حرفهای در این زمینه، خانوادهی میکروهای PIC یک انتخاب مناسب برای شروع پیمودن این راه هستند. چرا که اولا دارای فرومهای آموزشی و پشتیبانی بسیار زیادی هستند و در ثانی یادگیری مفاهیم آنها مانند پایهای عمل میکند که قرار گرفتن بر روی آن ، یادگیری مفاهیم سایر میکروکنترلرها را سادهتر میکند.
میکرو کنترلر های PIC داری ساختار و معماری پیشرفته ای هستند عملکرد بالایی دارند و از تنوع زیادی بر خوردارند. تنوع در اندازه ، امکانات ، قابلیت ها، و هزینه از مزایای عمده این دسته از میکرو کنترلر هاست.
این میکرو کنترلر ها سازگاری بالا گرا دارند. اگر برگه اطلاعات آنها را مشاهده کنید خواهید دید که یکی از ویژگیهای ذکر شده این است که با کد برنامه میکرو کنترلر های قدیمی تر از خود براحتی کار می کنند.
میکروکنترلر PIC قطعه ای کوچک با کاربردهای وسیع است.
آیا کاربردهای متنوع و انواع مختلف این میکروکنترلر ها را می شناسید؟
مزایا و معایب آن ها را چطور؟
یا این که از چه اجزایی تشکیل شده اند؟
پس با من هراه شوید تا در این مقاله به طور کامل با این میکروکنتلر کاربردی آشنا شویم.
مزایا
معایب
میکرو تراشه های PIC در خانواده های مختلف ارائه شده اند.
خانواده های پایه متوسط با گستردگی حافظه داده 8 بیتی و خانواده های سطح بالا از حافظه 16 بیتی استفاده می کنند.
آخرین سری PIC32mz یک میکروکنترلر32 بیتی می باشد.
این میکروکنترلر های PIC دارای حافظه ای با اندازه 12 بیت می باشد که
معمولا 7 تا 9 بایت اول رجیستر ها با هدف خاص هستند، بایت های باقی مانده رجیستر ها عمومی هستند.
این میکروکنترلر ها با وجود قدیمی بودن به دلیل سادگی و ارزانی هنوز در صنعت جایگاه خود را حفظ کرده اند.
این PIC هیچ گاه رایج نشد و به زودی معماری PIC18 بعد آن وارد شد.
این سری توصیه نمی شود و ممکن است قابلیت ها را محدود کند.
در سال 2000 میکروچیپ PIC18 را معرفی کرد که مانند PIC17 نبود و
به زودی استفاده از آن در بین مردم رواج یافت.
یکی از زبان های برنامه نویسی این میکروکنترلر C بود.
این میکروکنترلر ها در سال 2001 توسط میکروچیپ معرفی شدند و تا سال 2004 تولید انبوهی داشتند.
این PIC قابلیت پردازش سیگنال دیجیتال را نیز داشتند.
در ماه نوامبر 2007 میکرو چیپ این میکروکنترلر را معرفی کرد.
خانواده میکروکنترلر های 32 بیتی که با کامپایلر MPLAB برنامه نویسی می شود و بزرگترین حافظه فلش را دارد.
برخی از انواع PIC ها با ++C نیز قابل برنامه نویسی هستند.
تعداد پایه های این ریز تراشه ها به حداقل حدود 8 و حداکثر 100 پایه و بیشتر می رسد.
این خانواده از میکروکنترلرها در سال 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 و سایز لوازم جانبی میکروکنترلر هماهنگ باشد.
اما در درون خود این واحد پردازشی چه چیزهایی قرار دارد؟
حافظهی رم (Random Access Memory) بخشی است که سرعت میکروکنترلر ما را تعیین میکند. درون این واحد مجموعههایی از رجیسترها وجود دارند که هرکدام وظیفهای بخصوص برعهده دارند و در مجموع میتوان آنها را به دو گروه تقسیمبندی کرد:
همانطور که از نام آنها قابل حدس است، از رجیسترهای GPR برای انجام توابع عمومی مانند جمع، تفریق و امثالهم استفاده میشود. معمولا این عملیاتها در قالبهای 8 بیتی انجام میشوند و تمام رجیسترهایی که در این گروه قرار دارند هم قابلیت خواندن توسط کاربر و هم قابلیت نوشته شدن را دارند. نکتهای که در مورد این رجیسترها وجود دارد این است که موظف به انجام یک تابع مشخص و از پیش تعیین شده نیستند و هرچیزی را که نرمافزار از آنها بخواهد و در محدودهی توابع عمومی باشد انجام میدهند.
در مقابل رجیسترهای SFR هستند که از آنها برای انجام توابع خاص و بعضا پیچیده استفاده میشود. توابعی که ممکن است بعضا به عملیاتهای 16 بیتی نیز نیاز داشته باشند. نکتهی مهم در مورد آنها این است که فقط قابل خواندن هستند و کاربر نمیتواند چیزی بر روی آنها بنویسد. چرا که در زمان ساخت و تولید انجام وظیفه و تابعی مشخص به آنها محول شده است و در حین استفاده از میکرو تنها میتوانند نتایج آن تابع به خصوص و از پیش تعیین شده را برای ما تولید کنند. نتایج این توابع بخصوص به ما کمک خواهند کرد که عملیاتهای دیگرمیکرو را انجام دهیم.
این حافظه جایی است که برنامهی ما در آن ذخیره میشود و تعیین کنندهی حداکثر سایز برنامه نیز هست به همین دلیل به آن حافظهی برنامه (Read Only Memory) نیز میگویند. زمانی که میکروکنترلر در حال کار کردن است، برنامهای که از قبل در حافظهی ROM ریخته و ذخیره شده است، دستور به دستور در کلاک سایکلهای متوالی اجرا میشود. بنابراین کاربر تنها در زمانی میتواند به این حافظه دسترسی داشته و روی آن چیزی بنویسد که در حال برنامه ریختن روی میکرو باشد، در زمان کار، میکرو دیگر در دسترس نیست و به یک حافظهی فقط خواندنی تبدیل میشود.
یـــــــــــــــکی دیگر از واحد های حافظه (Electrically Erasable Programmable Read Only Memory)
است.در حین اجرای برنامه، مقادیر میتوانند در آن نگهداری شوند. تفاوت آن با دیگر مموریها در این است که مقادیر نگهداری شده بر روی آن تنها با دخالت روشهای الکتریکی پاک میشوند و این بدان معناست که در صورتی که دخالت الکتریکی صورت نگرفته باشد، حتی در زمان خاموش شدن و خاموش بودن میکرو نیز این اطلاعات حفظ خواهند شد. این حافظه را معمولا کوچک و با ظرفیتی در مقیاس KB میسازند و مقادیری که در طول اجرای برنامه ممکن است تولید شده و بعدا مورد نیاز باشند را در آن ذخیره میکنند.
این حافظه نیز از نوع PROM، یعنی فقط خواندنی و برنامهپذیر است. تفاوت آن با مورد قبلی در این است که بارها و بارها میتوان به راحتی آن را پاک کرد و اطلاعات جدیدی وارد آن نمود. معمولا میکروهای PIC از این نوع حافظه دارند.
باس (Bus) به مجموعهای از سیمها و وایرها سامان یافته گفته میشود که وظیفه دارند بین CPU،RAM و ورودی/خروجیها ارتباط برقرار کنند.
اگر از نوع Data Bus باشد وظیفهی آن حمل و جابهجایی دادههاست.
و اگر از نوع Address Bus باشد، وظیفهی آن جابهجا کردن آدرسهای حافظه از پریفرالهای مختلف به CPU است.
از طرفی درگاههای ورودی/خروجی نیز با پریفرالهای خارجی اینترفیس دارند. مثلا پروتکلهای UART و USART که هر دو پروتکلهای ارتباط سریال هستند و از آنها برای برقراری ارتباط بین میکرو و ماژولهای خارجیای مانند GSM ،GPS، بلوتوث، IR و … استفاده میشود.
میکروکنترلرهای PIC که توسط شرکت میکروچیپ ساخته میشوند به طور کلی به چهار خانوادهی بزرگ تقسیم میشوند. هرکدام از این خانوادهها قطعات مختلفی در درون خود دارند که باعث شده است ویژگیها متمایزی با سایز گروهها داشته باشند.
اگر به دیتاشیت این میکرو مراجعه کنیم، میبینیم در آن نوشته شده است که این میکرو دارای 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) و رزبری پای به طور کامل دید رو نسبت به میکروکنترلر تغییر دادند.