آموزش AVRآموزش PIC

مقایسه میکروکنترلر های AVR و PIC

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

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

اطلاعات پروژه مانند اندازه پروژه را جمع آوری کنید:

  • تعداد لوازم جانبی و سنسور های استفاده شده
  • توان مورد نیاز
  • بودجه پروژه
  • رابط های مورد نیاز (مانند USB، SPI، I2C، UART و.‌‌..)
  • یک دیاگرام بلوک سخت افزاری اساسی بسازید
  • تعداد GPIO مورد نیاز را فهرست کنید
  • ورودی های آنالوگ به دیجیتال (ADC)
  • PWM ها
  • معماری مناسب مورد نیاز یعنی (8 بیت، 16 بیت، 32 بیت) را انتخاب کنید.
  •  تشخیص حافظه مورد نیاز پروژه (رم، فلش و…)

پارامتر های اصلی انتخاب میکروکنترلر

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

  • فرکانس: سرعتی که میکروکنترلر با آن کار خواهد کرد
  • تعداد پین‌ های ورودی و خروجی: پورت ها و پین‌ های مورد نیاز
  • RAM: تمام متغیر ها و آرایه های اعلام شده (DATA) در اکثر میکروکنترلر ها
  • حافظه فلش: هر کدی که بنویسید پس از کامپایل به اینجا می‌رود
  • رابط های پیشرفته: رابط های پیشرفته مانند USB، CAN و اترنت
  • ولتاژ کاری: ولتاژ کاری میکروکنترلر مانند 5 ولت، 3.3 ولت یا ولتاژ پایین
  • کانکتور های هدف: اتصال دهنده هایی برای سهولت طراحی و اندازه مدار

بسیاری از پارامتر ها در هر دو میکروکنترلر AVR  و PIC مشابه هستند، اما برخی از پارامتر ها وجود دارند که مطمئناً هنگام مقایسه متفاوت خواهند بود‌

ولتاژ کاری

با استفاده از محصولات دارای باتری، PIC و AVR توانسته‌ اند برای کاربرد های ولتاژ پایین بهبود پیدا کنند. AVR برای کار در ولتاژ پایین بیشتر از سری‌ های PIC قدیمی ‌تر مانند PIC16F و PIC18F شناخته می‌ شود، زیرا این سری‌ های PIC از روش پاک‌ سازی تراشه‌ ای استفاده می‌ کنند که حداقل به ولتاژ 4.5 ولت برای کار کردن نیاز دارد و برنامه‌ نویسان PIC زیر 4.5 ولت باید از الگوریتم پاک کردن ردیف استفاده کنند که نمی تواند دستگاه قفل شده را پاک کند. اما در AVR اینطور نیست.

مطلب پیشنهادی:  پروژه اندازه گیری ضربان قلب با PIC (شمارش نبض)

AVR جدیدترین انواع P (pico-power) مانند ATmega328P را که بسیار کم مصرف هستند، بهبود داده و ایجاد کرده است. همچنین ATtiny1634 بهبود یافته است و دارای حالت های خواب برای کاهش مصرف انرژی در هنگام استفاده است که در دستگاه های با باتری بسیار مفید می باشد.

نتیجه این است که AVR قبلاً روی ولتاژ پایین متمرکز بود، اما PIC اکنون برای کار در ولتاژ پایین تغییر یافته است و برخی محصولات را بر اساس picPower راه اندازی کرده است.

کانکتور های هدف

کانکتور های هدف در طراحی و توسعه بسیار مهم هستند. AVR رابط های  6 و 10 طرفه ISP را تعریف کرده است که استفاده از آن را آسان می کند در حالی که PIC آن را ندارد، بنابراین برنامه نویسان PIC دارای اتصال دهنده های flying یا سوکت های RJ11 هستند که به سختی در مدار قرار می گیرند.

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

رابط های پیشرفته

از نظر رابط های پیشرفته، مطمئناً PIC گزینه مناسبی است زیرا با ویژگی های پیشرفته مانند USB، CAN و Ethernet عمل می کند که در AVR چنین نیست.  با این حال می توان از تراشه های خارجی مانند FTDI USB به تراشه های سریال، کنترل کننده های اترنت میکروچیپ یا تراشه های Philips CAN استفاده کرد.

نتیجه‌ گیری این است که PIC مطمئناً رابط‌ های پیشرفته ای را نسبت به AVR دارد.

محیط توسعه

ویژگی های مهم دیگری نیز وجود دارد که هر دو میکروکنترلر را از یکدیگر متمایز می کند. سهولت محیط توسعه بسیار مهم است. در زیر چند پارامتر مهم وجود دارد که سهولت محیط توسعه را توضیح می دهد:

  • توسعه IDE
  • کامپایلر های C
  • اسمبلر ها
  • توسعه IDE

هر دو میکروکنترلر PIC و AVR دارای IDE های توسعه خودشان هستند. توسعه PIC بر روی MPLAB X انجام می‌ شود، که در مقایسه با AVR Atmel Studio 7 که اندازه بزرگ 750 مگابایتی دارد، IDE پایدار و ساده شناخته شده است و با ویژگی‌ های اضافی‌ تر کمی گیج کننده است که کار را برای علاقه‌ مندان الکترونیکی مبتدی سخت و پیچیده می‌ کند.

PIC را می‌ توان از طریق ابزار های ریزتراشه PicKit3 و MPLAB X برنامه‌ ریزی کرد. AVR با استفاده از ابزار هایی مانند JTAGICE و AtmelStudio7 برنامه‌ ریزی می‌شود. با این حال، کاربران به نسخه‌ های قدیمی ‌تر AVR Studio مانند 4.18 با سرویس pack3 روی می ‌آورند زیرا بسیار سریعتر اجرا می‌ شود و ویژگی‌ های اساسی برای توسعه دارد.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

مقایسه اتمل استودیو و mplabx

نتیجه این است که PIC MPLAB X کمی سریعتر و بهتر از AtmelStudio7 است.

کامپایلر های C

هر دو میکروکنترلر PIC و AVR به ترتیب دارای کامپایلر های XC8 و WINAVR C هستند. PIC Hi-tech را خریداری کرده و کامپایلر XC8 خود را راه اندازی کرده است. این به طور کامل در MPLAB X یکپارچه شده است و عملکرد خوبی دارد. اما WINAVR ANSI C مبتنی بر کامپایلر GCC است که پورت کد و استفاده از کتابخانه های استاندارد را آسان می کند. نسخه محدود 4KB رایگان IAR C کامپایلر، نمونه ای از کامپایلر های حرفه ای را ارائه می دهد که هزینه زیادی دارد. از آنجایی که AVR در ابتدا برای C طراحی شده است، خروجی کد کوچک و سریع است.

مطلب پیشنهادی:  آموزش ساخت ولت متر دیجیتال با AVR در اتمل استودیو

PIC دارای ویژگی های زیادی است که در مقایسه با AVR بهتر است، اما به دلیل ساختار PIC، کد آن بزرگتر می شود. نسخه پولی با بهینه سازی بیشتر در دسترس است، اما نسخه رایگان به خوبی بهینه نشده است.

نتیجه این است که WINAVR از نظر کامپایلر نسبت به PIC XC8 خوب و سریع است.

اسمبلر ها

با سه رجیستر اشاره گر 16 بیتی که عملیات آدرس دهی و کلمه را ساده می کند، زبان اسمبلی AVR، با تعداد زیادی دستورالعمل و توانایی استفاده از تمامی 32 رجیستر به عنوان آکومولاتور بسیار آسان است. در حالی که اسمبلر PIC با همه چیز هایی که مجبور به کار از طریق آکومولاتور می شوند چندان خوب نیست، مجبور می شود همیشه از سوئیچینگ bank برای دسترسی به همه رجیستر های عملکرد اصلی استفاده کند. اگرچه MPLAB شامل میکروکنترلر هایی برای ساده کردن سوئیچینگ bank است، اما خسته کننده و وقت گیر است.

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

نتیجه‌ گیری این است که، اگرچه برخی از میکروکنترلر های PIC سریعتر هستند، اما میکروکنترلر های AVR از نظر اسمبلر بهتر است.

قیمت و در دسترس بودن

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

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

ویژگی های دیگر

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

Atmel Studio 7 فایل های Production ELF را اضافه کرده است که شامل EEPROM، Flash و داده های فیوز در یک فایل است. در حالی که AVR داده های فیوز را در قالب فایل هگز خود ترکیب کرده است، بنابراین فیوز می تواند در کد تنظیم شود.  این امر انتقال پروژه به تولید را برای PIC آسان تر می کند.

نتیجه گیری

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

مطلب پیشنهادی:  معرفی کامل رجیستر های AVR (آموزش AVR #4)

بدون توجه به اینکه کدام‌ یک بهتر است، تقریباً در تمام شاخه های مهندسی، کلمه ای مانند “بهترین” وجود ندارد و “مناسب ترین برای کاربرد” عبارت مناسبی است. همه این ها به نیاز های یک محصول، روش توسعه و فرآیند تولید بستگی دارد. بنابراین بسته به پروژه، می توان میکروکنترلر مناسبی را از بین PIC و AVR انتخاب کرد.

4.7 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

برای ارسال تصاویر از انجمن سایت استفاده کنید.

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

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

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