ریزکنترل‌گر ای‌وی‌آر

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از ای وی آر)
Atmel AVR ATmega8 PDIP

اِی‌وی‌آر (به انگلیسی: AVR)،یا میکروکنترلر AVR خانواده‌ای از ریزکنترل‌گرهای جدید است که شرکت اتمل، آن را روانهٔ بازار الکترونیک کرده‌است. این ریزکنترل‌گرهای هشت بیتی به خاطر دارا بودن قابلیت برنامه‌نویسی توسط کامپایلر زبان‌های برنامه‌نویسی سطح بالا، مورد توجه قرار می‌گیرند. این ریزکنترل‌گرها از معماری ریسک برخوردارند. همچنین شرکت اتمل کوشیده‌است تا با استفاده از معماری پیشرفته و دستورهای بهینه، حجم کد تولید شده را پایین آورده و سرعت اجرای برنامه را بالا ببرد. یکی از مشخصات این نوع ریزکنترل‌گرها دارا بودن ۳۲ ثبات همه منظوره است. همچنین در این ریزکنترل‌گرها، از حافظه‌های کم مصرف و غیر فرار فلش و ای‌ای‌پی‌رام استفاده می‌شود.

کامپایلرهایی به زبان بیسیک و C که زبان‌هایی پرکاربردی در دنیا محسوب می‌شوند، برای این نوع ریزکنترل‌گرها طراحی شده‌است. البته در حال حاضر استفاده از کامپایلر بسکام BAScom که نسبت به زبان c بسیار راحت‌تر و سریع تر عمل می‌کند جایگزین زبان c شده‌است. همچنین زبان اسمبلی را نیز می‌توان برای برنامه‌نویسی به کار برد. برای نمونه کامپایلر بسکام با زبان بیسیک برای برنامه‌نویسی این نوع از ریزکنترل‌گرها می‌تواند به کار رود. همچنین نرم‌افزار CodeVision، برای برنامه‌نویسی به زبان C (سازگار با این ریزکنترل‌گرها) بسیار رایج است (البته این برنامه بیشتر میان کاربران ایرانی رواج دارد، در میان کاربرهای خارجی کمتر دیده شده و بیشتر از برنامهٔ رسمی شرکت Atmel استفاده می‌شود).

پیشینه[ویرایش]

میکروکنترلر ای‌وی‌آر در سال ۱۹۹۶ توسط شرکت اتمل ساخته‌شد. معماری ریزکنترل‌گر توسط Alf-Egil Bogen و Vegard Wollan دانشجویان دانشگاه صنعتی نروژ طراحی شد.[۱] واحد میکروکنترل‌گر اصلی ای‌وی‌آر در خانه ASIC محلی تروندهایم نروژ که Nordic VLSI نامیده می‌شد (اکنون Nordic Semiconductor) جایی که Vegard و Bogan به عنوان دانشجو فعالیت می‌کردند طراحی گردید.

شرکت اتمل می‌گوید نام ای‌وی‌آر یک مخفف نیست به نام خاصی اشاره نمی‌کند. سازندگان ای‌وی‌آر پاسخ مشخصی به این پرسش ندادند. اما به هر صورت به نظر می‌رسد که این نام مخفف (به انگلیسی: Alf (Egil Bogen) and Vegard (Wollan)'s RISC processor) است[نیازمند منبع].

انواع ریزکنترل‌گرهای AVR[ویرایش]

میکروکنترلرهای خانواده AVR بر اساس معماری ماشین تعدیل شدهٔ هاروارد (Modified Harvard) می‌باشد، جایی که برنامه اصلی میکروکنترلر و اطلاعات ذخیره می‌گردد در فضایی جداگانه و با آدرس‌های جدا از همدیگر می‌باشند اما میکروکنترلرهای آی وی آر قابلیت خواندن اطلاعات را از حافظه برنامه با استفاده از دستوارت مخصوصی دارا می‌باشد.

خانواده‌های اصلی AVR[ویرایش]

  • TinyAVR - سری ATtiny
    • ۰٫۵–۱۶ کیلوبایت حافظه برنامه
    • بسته‌بندی ۶–۳۲ پایه
    • لوازم جانبی محدودتر
  • megaAVR - سری ATmega
    • ۴–۲۵۶ کیلوبایت حافظه برنامه
    • بسته‌بندی ۲۸–۱۰۰ پایه
    • راهنماهای بیشتر
    • لوازم بیشتر
  • classic AVR (از نظر امکانات بین دو گروه بالا) مثل AT90S8535
  • Xmega - سری ATxmega
    • ۸–۳۸۴ کیلوبایت حافظه برنامه
    • بسته‌بندی ۳۲-۴۴-۶۴-۱۰۰ پایه
    • بهبود کارکرد
    • لوازم جانبی زیاد به دلیل وجود ADCها
  • AVR کاربرد خاص
    • مانند سری MegaAVR اما با ویژگی‌های افزوده مانند کنترلر کنترلر ال سی دی، کنترلر USB و ...
  • FPSLIC (اِی وی آر همراه با مدار مجتمع دیجیتال برنامه‌پذیر)
    • مدار مجتمع دیجیتال برنامه‌پذیر ۵هزار تا ۴۰هزار گِیت
    • حافظه SRAM برای کد برنامه اِی وی آر
    • هسته اِی وی آر تا ۵۰ مگاهرتس[۲]
  • AVR 32 بیت

در سال ۲۰۰۶ شرکت اتمل میکرو کنترلرهایی را ارائه نمود که اساس معماری آن‌ها ۳۲ بیتی (AVR32) بود، که این سری از میکروکنترلرها شامل یک دستور چند داده(SIMD) و پردازشگر سیگنال دیجیتال(DSP) بود که به تنهایی قادر به پردازش صدا و تصویر می‌باشند. این میکروکنترلرهای ۳۲ بیتی به منظور رقابت با ریزپردازنده‌های بر اساس معماری ARM تولید شد، دستورالعمل‌های این میکرو بر اساس معماری هسته‌های RISC می‌باشد، در حالی که به هیچ وجه دستوارت میکروکنترلرها AVR32 و هیچ‌کدام از میکروهای ARM یکی نمی‌باشد.

ساختار و بخش‌های میکروکنترلرهای AVR[ویرایش]

در تمامی میکرو کنترهای AVR بخش‌های Flash و SRAM و EEPROM همگی در یک چیپ آی سی قرار دارند و برای انتخاب و اتصال حافظه‌های خارجی نیازمند برنامه‌نویسی می‌باشد. بعضی از شماره‌های میکروکنترلرها دارای یک تعداد پایه خروجی به عنوان BUS برای اتصال موازی حافظه خارجی به میکرو کنترلر می‌باشند. همچنین اکثر میکروهای AVR (به غیر از بعضی شماره‌های ATtiny) دارای رابط سریال می‌باشند که از آن‌ها می‌توان برای اتصال میکرو به EEPROM یا حافظه خارجی سریال با ظرفیت بیشتر استفاده نمود.

حافظه برنامه پذیر(FLASH)[ویرایش]

حافظهٔ اطلاعات داخلی (SRAM)[ویرایش]

ریجیسترهای داخلی جهت برنامه‌ریزی[ویرایش]

پورت‌های ورودی و خروجی GPIO[ویرایش]

درگاه‌ها ورودی / خروجی (I/O )به سیگنال‌های دیجیتال بیرونی امکان می‌دهند که با میکرو کنترلر ارتباط پیدا کند. درگاه‌های I/O معمولاً به صورت گروه‌های هشت بیتی دسته‌بندی می‌شوند و به هر گروه نیز نام خاصی داده می‌شود. به عنوان مثال، میکروکنترلر mega32 دارای 32 درگاه ورودی / خروجی می‌باشد که PB, PA, PD, PC نامیده می‌شوند. در تعدادی از میکرو کنترلرها، جهت خطوط درگاه I/O قابل برنامه‌ریزی می‌باشد . لذا بیت‌های مختلف یک درگاه را می‌توان به صورت ورودی یا خروجی برنامه‌ریزی نمود. در برخی دیگر از میکروکنترلرها (از جمله میکروکنترلرهای AVR) درگاه‌های I/O به صورت دو طرفه می‌باشند. هر خط از درگاه I/O این گونه میکرو کنترلرها را می‌توان به صورت ورودی یا خروجی مورد استفاده قرار داد . معمولاً، این گونه خطوط خروجی، به همراه مقاومتهای بالا کش بیرونی به کار برده می‌شوند.

یک پورت از ۸ عدد پین تشکیل شده‌است که هر کدام از این پین‌ها دارای یک مقدار مشخص شده می‌باشد . مثلاً Portb میکرو کنترلر avr از ۸ عدد پین که هر کدام دارای مقدار مشخص می‌باشد . مثلاً پورت B در میکرو از ۸ پایه تشکیل شده‌است که برای هر پایه نامی مشخص شده‌است.

به پایه شماره ۱ از پورت PB0 گفته می‌شود.

به پایه شماره ۲ از پورت PB1 گفته می‌شود.

به پایه شماره ۳ از پورت PB2 گفته می‌شود.

به پایه شماره ۴ از پورت PB3 گفته می‌شود.

به پایه شماره ۵ از پورت PB4 گفته می‌شود.

به پایه شماره ۶ از پورت PB5 گفته می‌شود.

به پایه شماره ۷ از پورت PB6 گفته می‌شود.

به پایه شماره ۸ از پورت PB7 گفته می‌شود.

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

مثلاً:اگر شما به همه ۸ تا پین‌های پورت، صفر منطقی (صفر ولت ) وصل نمایید مقدار خوانده شده میکرو از این پورت ۰ است. به این صورت که میکرو ابتدا مقدار پایه PB0 را خوانده و در عددی که برای ان مشخص شده ضرب می‌کند که طبق جدول بالا این عدد مقدارش ۱ می‌باشد در نتیجه مقدار خوانده شده از ورودی که صفر است ( به دلیل وصل کردن این پایه به صفر ولت ) را در ۱ ضرب می‌کند و جواب صفر می‌شود. برای بقیه پایه نیز این عمل را انجام می دهد و سپس در مرحله اخر تمامی جواب‌ها را با هم جمع می‌کند.

حافظه EEPROM[ویرایش]

سرعت پردازنده میکروکنترلر MUC SPEED[ویرایش]

سرعت پردازنده میکروکنترلرها به صورت معمول بین ۰تا۱۶ مگاهرتز می‌باشد همچنین در بعضی قابلیت افزایش تا ۲۰ مگاهرتز و در بعضی خانواده‌ها تا ۳۲ مگاهرتز را دارا می‌باشد.

رابط‌های برنامه‌ریزی[ویرایش]

راه‌های زیادی برای برنامه‌ریزی و اشکال زدایی یا عیب یابی کردن میکروکنترلرهای AVR وجود دارد و هر خانواده روش خاص خود را دارد:

ISP[ویرایش]

هدر های 6 پایه و 10 پایه پایانه ISP

روش برنامه‌ریزی درون مجموعه (به انگلیسی: In-system programming) (مخفف انگلیسی: ISP) توسط پروتکل گذرگاه ارتباط جانبی سریال به علاوه ارسال سیگنال با لبه بالا رونده یا پایین رونده به پایه RESET کار می‌کند و پر استفاده‌ترین روش برنامه ریزی است. تا هنگامی که پایه های SPI ریزکنترل‌گر به چیزی که اختلال وارد کند وصل نشده، ریزکنترل‌گر AVR می‌تواند سرجای خود روی برد مدار چاپی باقی بماند. تنها چیزی که نیاز داریم یک پایانه ۶ پایه و مبدل برنامه‌ریزی است.

انواع پروگرامر با رابط ISP[ویرایش]

مبدل Atmel AVR ISP mkII به درگاه USB متصل به گذرگاه سری یا مستقیم به گذرگاه سری رایانه وصل شده و توسط نرم‌افزار ATMEL Studio از طریق رابط ISP قطعه را برنامه ریزی می‌کند.

همچنین نرم‌افزارAVRDUDE (مخفف AVR Downloader/UploaDEr) که روی سیستم عامل‌های لینوکس، فری بی اس دی، ویندوز و Mac OS X اجرا می‌شود، برای مبدل‌های گوناگون رسمی و غیررسمی (DIY) کار می‌کند [۳].

PDI[ویرایش]

رابط اشکال زدایی و برنامه ریزی.
رابط اشکال زدایی و برنامه ریزی (PDI).

رابط برنامه‌ریزی و اشکال زدایی میکرو کنترلرها (به انگلیسی: The Program and Debug Interface) (مخفف انگلیسی: PDI) که یکی از خصوصیات میکروهای AVR برای برنامه‌ریزی به وسیله ابزارهای خارجی و اشکال زدایی و عیب یابی بر روی برد می‌باشد این واحد با بخش JTAG متفاوت می باشد و برای دستگاه های خانواده XMEGA می باشد.

برنامه ریزی ولتاژ بالای سریال High Voltage Serial Programmer[ویرایش]

برنامه ریزی ولتاژ بالای سریال
برنامه ریزی ولتاژ بالای سریال (HVSP)

برنامه ریزی ولتاژ بالا سریال (به انگلیسی: HIGH VOLTAGE SERIAL PROGRAMER) (مخفف انگلیسی: HVSP) بیشتر حالت پشتیبان گیری در AVR های کوچکتر است. یک تراشه 8 پین بسیاری از ترکیبات منحصر به فرد سیگنال را برای قرار دادن AVR در حالت برنامه نویسی باقی نمی گذارد. با این حال، AVR فقط در زمان برنامه نویسی و هرگز در زمان کار عادی نباید در ولتاژ ۱۲ مشاهده شود. حالت ولتاژ بالا همچنین در برخی از دستگاه هایی که پایه تنظیم مجدد توسط فیوز غیرفعال شده است، قابل استفاده است.

برنامه ریزی ولتاژ بالای موازی High Voltage Parallel Programmer[ویرایش]

در این روش اطلاعات به صورت ۸ بیت مجزا توسط یک پورت انتقال داده میشوند. طبق دستور العمل شرکت سازنده میبایست ولتاژ ۱۲ ولت به پایه RESET اعمال شود. از این روش در مواقع محدود شدن دسترسی تراشه از spi و jtag کاربر مجبور به استفاده از این روش برای برنامه ریزی ریز پردازشگر می شود.بر خلاف سند spi که برای برنامه ریزی در کل به ۶ رشته کابل نیاز است ؛ در این روش تقریبا تمام پایه های تراشه مورد نظر به کار گرفته میشود. از مزیت های این روش فقط می توان به سرعت بالا و دسترسی کامل به تراشه اشاره نمود. تنها برنامه‌ریز هایی مانند STK500HV از این روش پشتیبانی میکنند.

بوت لودر BOOT LOADER[ویرایش]

ROM[ویرایش]

aWire[ویرایش]

محیط های توسعه یکپارچه[ویرایش]

محیط های توسعه یکپارچه (IDE) متفاوتی برای این خانواده از میکروکنترلرها منتشر شده است. این نرم افزارها برای کامپایل و اشکال‌زدایی نیازمند نصب زنجیره ابزار (Toolchain) جداگانه هستند.

اتمل استودیو Atmel Studio[ویرایش]

اتمل استودیو نسخه 4 - اتمل در این نسخه از برنامه خود حتما به به عنوان ابزار کمکی نیاز دارد.
اتمل استودیو نسخه 4 - اتمل در این نسخه از برنامه خود حتما به کامپایلر WinAVR به عنوان ابزار کمکی نیاز دارد.

اتمل استودیو (به انگلیسی: Atmel Studio) (با نام کنونی میکروچیپ استودیو) یک پلتفرم توسعه یکپارچه(IDP) می باشد که با استفاده از آن می توانید برنامه میکروکنترلرهای AVR و ARM را عیب یابی یا اشکال زدایی کرده و توسعه دهید. این نرم افزار با استفاده از پوسته ویژوال استودیو ساخته شده است. به صورت رایگان از سایت میکروچیپ [۴] قابل دانلود می باشد. علاوه بر میکروکنترلرهای AVR این کامپایلر توانایی برنامه ریزی میکروکنترلرهای ARM را نیز داراست [۵]. این نرم افزار از کامپایلر و زنجیره ابزار AVR-GCC استفاده می کند.

IAR Embedded Workbench AVR[ویرایش]

"IAR" (به سوئدی: Ingenjörsfirman Anders Rundgren) است که به معنای شرکت مهندسی اندرس روندگرن است. IAR Systems یک شرکت نرم افزاری کامپیوتر سوئدی است که ابزارهای توسعه سیستم های تعبیه شده را ارائه می دهد. از کامپایلرهای قدرتمند در برنامه نویسی میکروکنترلرها نرم افزار قدرتمند IAR است. این کامپایلر از بیشتر میکروکنترلرهای موجود در بازار پشتیبانی می کند. سازندگان میکروکنترلرها معمولاً مثال هایی که در کد منبع هایشان دارند به این زبان است. معمولاً منابع زیادی در اینترنت برای این محیط برنامه نویسی موجود نیست و شاید به همین دلیل است که سراغ آن نمی روند. قیمت این نرم افزار مثلاً برای AVR به صورت متغیر بین ۹۰۰ تا ۳۰۰۰ دلار است [۶]. این نرم افزار از کامپایلر و زنجیره ابزار IAR C/C++ Compiler™ for AVR MCUs استفاده می کند.

کدویژن CodeVisionAVR C Compiler[ویرایش]

این كامپایلر محصولی از شرکت Hp InfoTech می باشد. زبانی که این كامپایلر پشتیبانی می كند زبان C می باشد. شركت Hp InfoTech انواع مختلفی از این كامپایلر را روانه بازار کرده است. نسخه رایگان این كامپایلر می تواند تا ۲ كیلو بایت را كامپایل كند. نسخه های دیگر نوع پیشرفته  و حرفه ای را شامل می شود. سایت سازنده تفاوت بین این نسخه ها را به طور کامل توضیح داده است [۷] [۸]. این نرم افزار از کامپایلر و زنجیره ابزار AVR-GCC استفاده می کند.

WinAVR[ویرایش]

یكی از قدرتمندترین محیط های توسعه برای میکروکنترلرهای AVR می باشد و طرفداران بسیاری را در دنیا دارد وكاملا رایگان است. این نرم افزار از کامپایلر و زنجیره ابزار AVR-GCC استفاده می کند. در حالت كلی می توان گفت كه بیشتر برنامه نویسان حرفه ایی میکروکنترلرهای AVR از این كامپایلر استفاده می كنند. این كامپایلر به دلیل اینكه كد HEX كمتری تولید می كند در آخر برنامه بهینه و سریع تری را نتیجه می دهد [۹].

آردوینو Arduino IDE[ویرایش]

نرم افزار منبع باز آردوینو، کدنویسی و بارگذاری کد بر روی مدار را آسان می سازد. این نرم افزار برای سیستم عامل های ویندوز، Mac OS X و لینوکس قابل اجرا می باشد. همچنین نرم افزار آردوینو با تمامی بردهای آردوینو سازگاری داشته و می توان از این نرم افزار آردوینو بر روی تمامی بردهای آردوینو استفاده کرد. این محیط برنامه نویسی با استفاده از زبان جاوا و بر پایه پراسسینگ، avr-gcc و سایر نرم افزارهای منبع باز تولید شده است [۱۰] [۱۱]. اصول برنامه نویسی در نرم افزار آردوینو، تا حد زیادی مشابه برنامه نویسی به زبان C و ++C است؛ اگرچه در برخی از دستورها، فرمان ها، تابع ها، کتابخانه ها و غیره تغییراتی مختص آردوینو ایجاد شده است. روند کلی کار با نرم افزار آردوینو به این صورت است که ابتدا دستورها در پنجره ویرایش متن نوشته می شوند. سپس کامپایل شده و بر روی میکرو کنترلر بورد آردوینو بارگذاری می شوند. قبل از شروع بارگذاری، لازم است بورد آردوینو از طریق درگاه USB یا درگاه سریال، به رایانه متصل شده باشد. [۱۲].

MPLAB XC8 IDE[ویرایش]

این محیط توسعه محصول شرکت Microchip است

بسکام BASCOM[ویرایش]

این كامپایلر محصولی از شرکت MCS Electronics در هلند است كه زبان QBASIC را پشتیبانی می كند . نسخه "آزمایشی" این كامپایلر را می توان از سایت رسمی این شركت دانلود كرد. با این نسخه حداكثر می توان ۴ كیلو بایت را كامپایل كرد كه برای چیپ هایی مثل Atmega48 و سری TinyAVR بسیار مناسب می باشد. نسخه تجاری این كامپایلر قابلیت این را دارا می باشد كه تا ۱۲۸ كیلو بایت را كامپایل كند. در ایران به دلیل نبود قانون کپی رایت این نرم افزار به صورت گسترده مورد استفاده قرار گرفته است و کتابهایی نیز با استفاده از این زبان برای AVR نوشته شده است [۱۳] [۱۴].

پیوند به بیرون[ویرایش]

DATASHEET

پانویس[ویرایش]

  1. "AVR Microcontroller" (به انگلیسی). Engineers Garage. Retrieved 25 شهریور 1392. {{cite web}}: Check date values in: |تاریخ بازبینی= (help)
  2. «Field Programmable System Level Integrated Circuit». بایگانی‌شده از اصلی در ۲۷ نوامبر ۲۰۱۲. دریافت‌شده در ۲۲ ژوئن ۲۰۱۴.
  3. http://www.cnn.com
  4. میکرو چیپ https://www.microchip.com/mplab/avr-support/atmel-studio-7 بایگانی‌شده در ۶ ژانویه ۲۰۲۰ توسط Wayback Machine
  5. شرکت میکروچیپ https://www.microchip.com/
  6. https://www.iar.com
  7. http://www.hpinfotech.ro/
  8. http://www.micromadar.ir/
  9. http://winavr.sourceforge.net/
  10. http://arduino.ir/Software/
  11. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۲۹ اكتبر ۲۰۱۹. دریافت‌شده در ۲۹ اكتبر ۲۰۱۹. تاریخ وارد شده در |بازبینی=،|archive-date= را بررسی کنید (کمک)
  12. کلید آردوینو.
  13. https://www.mcselec.com
  14. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۲۹ اکتبر ۲۰۱۹. دریافت‌شده در ۲۹ اکتبر ۲۰۱۹.

منابع[ویرایش]