آنچه در این صفحه می خوانید:
معرفی میکروکنترلر AVR
میکروکنترلر AVR نوعی دستگاه تولید شده توسط Atmel است که دارای مزایای خاصی نسبت به سایر تراشه های معمول است. یک میکروکنترلر را با رایانه خود مقایسه کنید که دارای یک مادربرد در آن است. در این مادربرد، یک ریزپردازنده (تراشه های اینتل، AMD) است که حافظه های هوشمند، حافظه RAM و EEPROM را ارائه می دهد که به بقیه سیستم متصل می شود، مانند پورت های سریال (اغلب پورت های USB در حال حاضر)، درایوهای دیسک و رابط های صفحه نمایش. یک میکروکنترلر دارای تمام یا بیشتر این ویژگی ها در یک تراشه است، بنابراین نیازی به یک مادربرد نیست و بسیاری از اجزای آن، به عنوان مثال LED ها می توانند به طور مستقیم به AVR متصل شوند.
میکروکنترلر AVR که شرکت اتمل آن را روانه بازار کرده است در زمینه اینترنت اشیا بسیار کاربرد دارد. میکروکنترلرهای AVR بسیاری از برنامه ها را به عنوان سیستم های تعبیه شده پیدا می کنند. آنها بخصوص در برنامه های جاسازی شده سرگرمی و آموزشی رایج هستند، که با درج آنها در بسیاری از صفحات آردوینو (Arduino) از تخته های توسعه سخت افزار آزاد محبوبیت دارند.
میکروکنترلر AVR هشت بیتی در سال ۱۹۹۶ توسط شرکت اتمل تولید شد. از خانواده های اصلی AVR می توان به TinyAVR ،megaAVR ،Xmega و FPSLIC نام برد.
ویژگی های میکروکنترلر AVR
AVR ها طیف گسترده ای از ویژگی ها را ارائه می دهند:
- پورت های I / O چند منظوره با مقاومت های قابل تنظیم
- اسیلاتورهای داخلی چندگانه، از جمله اسیلاتور RC بدون قطعات خارجی
- حافظه فلش داخلی و قابل برنامه ریزی داخلی تا 256 KB (384 KB در XMega)
- قابلیت برنامه ریزی در سیستم با استفاده از پورت سریال / موازی اختصاصی ولتاژ کم یا JTAG
- بخش بوت کد اختیاری با بیت های قفل مستقل برای محافظت
- اشکال زدایی روی تراشه (OCD) از طریق JTAG یا debugWIRE در اکثر دستگاه ها پشتیبانی می کند.
- سیگنال های JTAG (TMS ،TDI ،TDO و TCK) در GPIO چند برابر هستند. این پین ها بسته به تنظیم بیت فیوز که می توانند از طریق ISP یا HVSP برنامه ریزی شوند، به عنوان JTAG یا GPIO تنظیم می شوند. بصورت پیش فرض، AVR ها با JTAG با رابط JTAG فعال هستند.
- debugWIRE از پین / RESET به عنوان کانال ارتباطی دو جهته برای دسترسی به مدار اشکال زدایی بر روی تراشه استفاده می کند. این دستگاه در دستگاه هایی با تعداد پین کمتر وجود دارد، زیرا فقط به یک پین نیاز دارد.
- داده های داخلی EEPROM تا 4 KB
- SRAM داخلی تا 16 KB (32 KB در XMega)
- فضای داخلی 64 کیلوبایت خارجی در مدل های خاص از جمله Mega8515 و Mega162.
- فضای داده خارجی با فضای داخلی داده پوشانده شده است، به گونه ای که فضای کامل آدرس 64 KB در گذرگاه خارجی نمایش داده نمی شود.
- در برخی از اعضای سری XMega، فضای داده خارجی برای پشتیبانی از SRAM و SDRAM افزایش یافته است. همچنین، حالت های آدرس دهی گسترش یافته اند تا امکان دسترسی مستقیم به 16 مگابایت حافظه داده فراهم شود.
- تایمرهای 8 بیتی و 16 بیتی
- خروجی PWM (بعضی از دستگاه ها دارای PWM جانبی هستند که شامل یک ژنراتور است)
- ضبط ورودی که یک تمبر زمانی ایجاد می کند که توسط یک لبه سیگنال ایجاد می شود.
- مقایسه کننده آنالوگ
- مبدل A / D 10 یا 12 بیتی، با چند کانال تا 16 کانال
- مبدل های D / A 12 بیتی
- انواع رابط های سریال از جمله
- رابط دو سیم سازگار با I²C (TWI)
- لوازم جانبی سریال همزمان یا ناهمزمان (UART / USART) (مورد استفاده با RS-232، RS-485 و موارد دیگر)
- گذرگاه رابط سریال سریال (SPI)
- رابط سریال جهانی (USI): یک ماژول ارتباطی سخت افزاری چند منظوره که می تواند برای اجرای یک رابط SPI ،I2C یا UART مورد استفاده قرار گیرد.
- تشخیص Brownout
- تایمر تماشاگر (WDT)
- حالت خواب چندگانه صرفه جویی در مصرف برق
- مدل های کنترل کننده نور و کنترل موتور (مخصوص PWM)
- پشتیبانی از کنترلر USB
- کنترلر سخت افزاری و هاب با سرعت کامل (12 مگابیت در ثانیه) و AVR تعبیه شده.
- پشتیبانی از کنترل کننده اترنت
- پشتیبانی از کنترل ال سی دی
- دستگاه های دارای ولتاژ کم تا 1.8 ولت (به 0.7 ولت برای قطعات با پیش ساخته DC-DC داخلی)
- دستگاه های picoPower
- کنترل کننده های DMA و ارتباطات جانبی "سیستم رویداد".
- پشتیبانی سریع رمزنگاری برای AES و DES
معماری میکروکنترلر AVR
معماری دستگاه
Flash ،EEPROM و SRAM همه در یک تراشه واحد ادغام شده و نیاز به حافظه خارجی را در اکثر برنامه ها برطرف می کنند. برخی از دستگاه ها دارای گذرگاه خارجی موازی هستند که امکان اضافه کردن حافظه داده های اضافی یا دستگاه های نقشه برداری شده را فراهم می کنند. تقریباً تمام دستگاه ها (به جز کوچکترین تراشه های TinyAVR) دارای رابط های سریالی هستند که می توان از آنها برای اتصال سریال های بزرگتر EEPROM یا تراشه های فلش استفاده کرد.
حافظه برنامه
دستورالعمل های برنامه در حافظه های فلش غیر فرار ذخیره می شوند. اگرچه MCU 8 بیتی است، اما هر دستورالعمل یک یا دو کلمه 16 بیتی طول می کشد. اندازه حافظه برنامه معمولاً در نامگذاری خود دستگاه مشخص می شود.
هیچ برنامه ای برای حافظه برنامه خارج از تراشه وجود ندارد. تمام کدهای اجرا شده توسط هسته AVR باید در فلاش درون تراشه باشند. اما این محدودیت در مورد تراشه های AT94 FPSLIC AVR / تراشه FPGA صدق نمی کند.
حافظه داده داخلی
فضای آدرس داده ها شامل فایل ثبات، ثبات های I / O و SRAM است. برخی از مدل های کوچک همچنین ROM برنامه را در فضای آدرس داده ها نقشه برداری می کنند، اما مدل های بزرگتر این کار را نمی کنند.
ثبات های داخلی
AVR ها دارای 32 رجیستر تک بایت هستند و به عنوان دستگاه های RISC 8 بیتی طبقه بندی می شوند. در انواع tinyAVR و megaAVR در معماری AVR، ثبت نام های کار شده به عنوان اولین آدرس های حافظه (000016–001F16) ترسیم می شوند و به دنبال آن 64 رجیستر I / O (002016–005F16). در دستگاه های دارای لوازم جانبی بسیاری، این رجیسترها 160 رجیستر "I / O" طولانی دارند که فقط به عنوان I / O با نقشه برداری از حافظه (006016–00FF16) قابل دسترسی هستند.
پورت های GPIO
هر درگاه GPIO روی AVR کوچک یا مگا تا هشت پین حرکت می کند و توسط سه رجیستر 8 بیتی کنترل می شود: DDRx، PORTx و PINx که در آن x شناسه پورت است.
- DDRx: Register Direction Register، پین ها را به عنوان ورودی یا خروجی پیکربندی می کند.
- PORTx: ثبت درگاه خروجی. مقدار خروجی را روی پین های تنظیم شده به عنوان خروجی تنظیم می کند. مقاومت کشش در پین های تنظیم شده به عنوان ورودی را فعال یا غیرفعال می کند.
- PINx: ثبت نام ورودی، برای خواندن سیگنال ورودی استفاده می شود. در برخی از دستگاه ها، از این رجیستر می توان برای ضربات پین استفاده کرد: نوشتن یک منطق یک به بیت PINx، بیت مربوط به PORTx را صرف نظر از تنظیم بیت DDRx می کند.
EEPROM
تقریباً تمام میکروکنترلرهای AVR دارای EEPROM داخلی برای ذخیره سازی داده های نیمه دائمی هستند. مانند حافظه فلش، EEPROM می تواند با حذف برق همچنان از محتویات خود استفاده کند. در اکثر انواع معماری AVR، این حافظه داخلی EEPROM در فضای حافظه آدرس پذیر MCU قرار نمی گیرد. فقط با همان روشی که یک دستگاه جانبی خارجی استفاده می شود، با استفاده از رجیسترهای مخصوص نشانگر و دستورالعمل خواندن و نوشتن قابل دسترسی است و این باعث می شود دسترسی EEPROM بسیار کندتر از سایر رم های داخلی باشد.
با این حال، برخی از دستگاه های خانواده SecureAVR (AT90SC) بسته به پیکربندی، از نقشه برداری ویژه EEPROM به داده یا حافظه برنامه استفاده می کنند. خانواده XMEGA همچنین به EEPROM اجازه می دهد تا در فضای آدرس داده ها نقشه برداری شود.
از آنجا که تعداد نوشتن ها به EEPROM محدود است - Atmel 100،000 چرخه نوشتن را در برگه اطلاعات خود مشخص می کند - یک روال مناسب برای EEPROM که به خوبی طراحی شده است باید محتویات یک آدرس EEPROM را با مطالب مورد نظر مقایسه کند و فقط در صورت نیاز به تغییر، نوشتن را انجام دهد.
توجه داشته باشید که پاک کردن و نوشتن بایت در بسیاری از موارد به طور جداگانه قابل انجام است، همچنین ممکن است به طولانی شدن عمر کمک کند وقتی فقط لازم است که بیت ها روی همه 1 ها تنظیم شوند (پاک کنید) یا به صورت انتخابی در صفرها پاک شوند (بنویسید).