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

اِی‌وی‌آر (به انگلیسی: 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

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

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

درگاه‌ها ورودی / خروجی (I/O )به سیگنال‌های دیجیتال بیرونی امکان می‌دهند که با میکرو کنترلر ارتباط پیدا کند. درگاه‌های I/O معمولاً به صورت گروه‌های 8 بیتی دسته‌بندی می‌شوند و به هر گروه نیز نام خاصی اطلاق می‌شود. به عنوان مثال، میکروکنترلر 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 را خوانده و در عددی که برای ان مشخص شده ضرب می‌کند که طبق جدول بالا این عدد مقدارش ۱ می‌باشد  در نتیجه مقدار خوانده شده از ورودی که صفر است ( به دلیل وصل کردن این پایه به صفر ولت ) را در ۱ ضرب می‌کند و جواب صفر می‌شود. برای بقیه پایه نیز این عمل را انجام می هد و سپس در مرحله اخر تمامی جواب‌ها را با هم جمع می‌کند.

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

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

رابط‌های برنامه‌ریزی

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

ISP

روش برنامه‌ریزی درون مجموعه (به انگلیسی: In-system programming) (مخفف انگلیسی: ISP) توسط پروتکل گذرگاه ارتباط جانبی سریال به علاوه کمی وررفتن با پین RESET کار می‌کند و پر استفاده‌ترین روش است. تا هنگامی که پین‌های SPI میکروکنترلر به چیزی که اختلال وارد کند وصل نشده، ریزپردازنده AVR می‌تواند سرجای خود روی PCB باقی بماند. تنها چیزی که نیاز داریم یک کانکتور ۶-پایه و مبدل برنامه‌ریزی است.
مبدل Atmel AVR ISP mkII به درگاه USB متصل به گذرگاه سری یا مستقیم به گذرگاه سری رایانه وصل شده و توسط نرم‌افزار ATMEL Studio از پروتکل ISP قطعه را پروگرم می‌کند.
همچنین نرم‌افزارAVRDUDE (مخفف AVR Downloader/UploaDEr) که روی سیستم عامل‌های لینوکس، فری بی اس دی، ویندوز و Mac OS X اجرا می‌شود، برای مبدل‌های گوناگون رسمی و غیررسمی (DIY) کار می‌کند.

PDI

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

کامپایلر ها

کامپایلر های متفاوتی برای این میکروکنترلر منتشر شده است که از محبوبت ترین ان ها در ایران کدویژن ، بسکام و آردوینو میباشد.