آشنایی با AVR
میکروکنترلرها به عنوان یک ابزارقدرتمند نزد مهندسان برق وکامپیوتر شناخته شده اند با توجه به کاربرد روز افزون میکروکنترلرها در صنعت , شرکت های سازنده زیادی اقدام به تولید آنها می نمایند .
میکروکنترلرهای AVR ساخت شرکت ATMEL از جمله معروف ترین و پرکاربردترین میکروکنترلرهای موجود در بازار ایران می باشند.تنوع این میکرکنترلرها به مهندس طراح این امکان را می دهد که برای هر پروژه از میکرکنترلر بهینه آن استفاده کند . به دلیل مقبولیت این میکروکنترلرها شرکت های زیادی اقدام به نوشتن نرم افزارهایی نموده اند که امکان برنامه نویسی با زبان های سطح بالا را برای کاربر فراهم می کنند .
میکرو کنترلرهای AVR به دسته های TINY و AT90S و ATMEGA تقسیم می شوند . از این میان میکروکنترلرهای نوع سوم قدرتمندتر و پرکاربردتر هستند.با توجه به اینکه نوشتن برنامه به زبان اسمبلی بسیار زمان بر و دشوار است, زبانهای سطح بالا در این زمینه کمک بسیار زیادی کرده اند .
زبان برنامه نویسی BASIC و C بیشترین استفاده در برنامه نویسی میکروها دارند. ولی در اکثر کاربردها کدهای بیشتری را نسبت به زبان برنامه نویسی اسمبلی تولید می کنند. ATMEL ایجاد تحولی در معماری , جهت کاهش کد به مقدار مینیمم درک کرد که نتیجه این تحول میکروکنترلرهای AVR هستند که علاوه بر کاهش و بهینه سازی مقدار کدها به طور واقع عملیات را تنها در کلاک سیکل توسط معماری RISC انجام می دهد .هدف ATMEL طراحی معماری بود که هم برای زبان اسمبلی وهم زبانهای HLL مفید باشد .
AVR ها به عنوان میکروهای RISC با دستورات فراوان طراحی شده اند که باعث می شود حجم کد تولید شده کم و سرعت بالا تری به دست آید .
میکروکنترلرها :
1-0) تفاوت میکروکنترلر و میکروپروسسور :
میکروپرسسورها بر خلاف میکرو کنترلرها فاقد RAM و ROM و پورتهای I/O در درون خود تراشه هستند بنابراین برای اینکه بتوان سیستمی مبتنی بر میکروپرسسور را طراحی کنیم باید RAM و ROM و پورتهای I/O و تایمرها به آن اضافه شود. با توجه به اینکه طراح می تواند روی مقدار RAM و ROM و پورتهای I/O اعمال نظر نماید , این سیستم ها انعطاف پذیری بشتری دارند. وبه آنها سیستمهای چند منظوره می گویند.
میکروکنترلرها شامل یک CPU به همراه مقدار ثابتی از RAM , ROM , پورتهای I/O وتایمر هستند که همگی این اجزا در یک تراشه جای داده شده اند و طراح سیستم نمی تواند یک حافظه , I/O یا تایمر را بدون گسترش لازم از بیرون اضافه کند بنابراین میکروکنترلرها انعطاف پذیری میکروپرسسورها را ندارند .
1-1) کاربرد میکروکنترلرها :
با توجه به آنچه که گفته شد میکروکنترلرها برای کاربردهایی که در آنها مشکل قیمت و حجم سیستم وجود دارد , مناسب است زیرا اضافه کردن حافظه , پورت I/O تایمرها و مدار واسط لازم به میکرپرسسور سبب افزایش قیمت وحجم سیستم می گردد. اما در میکروکنترلر این مشکل وجود ندارد. میکروکنترلرها به طور گستردهای در تولید سیستمهای تک منظوره به کار می روند. منظور از سیستم تک منظوره سیستمی است که از میکروکنترلر یا میکرپروسسور فقط برای یک کار استفاده می کند.مانند پردازنده درون یک موس که تنها به منظور یافتن مکان اشاره گر موس و ارسال آن به PC برنامه ریزی شده است. این سیستم ها در مقابل سیستمهای چند منظوره قرار می گیرند. که نمونه بارز آن یک PC است که می تواند برای کاربردهای متعدد و گوناگونی همچون واژه پردازی , بازی های ویدئویی , سرویس شبکه و ... مورد استفاده قرار گیرد. این توانایی PC در اجرای کارهای گوناگون به دلیل وجود سیستم عاملی است که نرم افزار کاربردی را در RAM بار می کند تا PC بتواند آن را اجرا کند. اما در یک سیستم تک منظوره تنها یک نرم افزار کاربردی موجود است که معمولا درROM نوشته می شود. چند نمونه از وسایلی که در ساخت آنها از میکروکنترلرها استفاده شده است , عبارت اند از : کنترل از راه دور تلویزیون , تلفن , دوربین فیلمبرداری , فاکس , چاپگر , دستگاه فتوکپی ,سیستم های حفاظتی , دزد گیر و سیستم های کنترل صنعتی.
به طور کلی می توان کاربرد میکروکنترلرها را در طراحی مدارهای کنترل و اتوما سیون خلاصه کرد .
1-2) ویژگی های اصلی یک میکروکنترلر :
با توجه به گستردگی میکروکنترلرها و شرکتهای سازنده آنها چگونگی انتخاب یک میکروکنترلر برای کاربردی خاص , از اهمیت فراوانی برخوردار است.بطور کلی ابتدا باید نیازهای سیستم و هزینه آنرا کاملا مشخص کنیم تا به کمک آنها بتوانیم انتخابی بهینه انجام دهیم. برای انتخاب یک میکروکنترلر باید موارد زیر را در نظر بگیریم :
1- تعداد بیتهای باس داده میکروکنترلر که می تواند 8 , 16 , 32 بیت باشد.
2- بیشترین سرعت میکروکنترلر.
3- توان مصرفی میکروکنترلر.
4- نوع بسته بندی میکروکنترلر (DIP , QFP , MLF , PLCC و...)
5- مقدار حافظه RAM و ROM موجود در تراشه وقابل اضافه شدن به آن.
6- امکاناتی که کاربر را در کار با میکروکنترلر یاری می نماید , مانند اسمبلر در دسترس , عیب یاب , کامپایلر زبانهای سطح بالا ( C و BASIC و ... ) , امولاتور وشبیه ساز.
7- قیمت میکروکنترلر و در دسترس بودن آن .
1-3) میکروکنترلر های AVR :
در مباحث بالا با میکروکنترلرها آشنا شدیم حال در این بخش میکروکنترلرهای 8 بیتی شرکت ATMEL را که از ساختار RISC بهره می برند معرفی می کنیم . اما پیش از آن تفاوت های ساختار RISC وساختار CISC را بیان می کنیم .
1-4) ساختار RISC :
تا اوایل دهه 1980 , کلیه پردازنده ها از ساختار CISC استفاده می کردند. در این ساختار چندصد دستور طراحی شده بود که این دستورها کلیه عملیات ممکن راپوشش میداد.این روش طراحی پردستور مشکلاتی همانند تعداد زیاد ترانزستورها , پیچیدگی طراحی و ساخت مدار, زمان بری عملیات و گران بودن تراشه را به همراه داشت0 به همین دلیل در اوایل دهه 80 ساختار جدیدی به نام RISC ابداع شد . برخی از ویژگی های ساختار RISC از این قرارند :
1- اندازه دستورها در RISC بر خلاف CISC ثابت است و این امر کمک می کند که CPU سریعتر دستور ها را دیکد نماید .
2- RISC از روش STORE/LODE استفاده می کند. در این روش انتقال داده فقط از حافظه به رجیستر( LODE ) واز رجیستر به حافظه( STORE ) انجام می شود و انتقال مستقیم از رجیستر به رجیستر و از حافظه به حافظه ممکن نیست .
3- تعداد رجسترها در RISC زیاد است . همه پردازنده ها 32 رجستر 32 بیتی دارند
4- در RISC تعداد دستور ها کم است و فقط دستورهای پایه موجود است و برنامه نویس و کامپایلر باید دستورهای دیگر را با این دستور های پایه بسازند. کم بودن تعداد دستورها باعث دشواری برنامه نویسی به زبان اسمبلی ( نسبت به پردازنده های CISC ) می شود. بنابراین از RISC در محیط های برنامه نویسی به زبانهای سطح بالا مثل C استفاده می شود. کم بودن تعداد دستورها همچنین سبب می شود که برنامه بزرگ شود و حافظه بیشتری را اشغال کند .
5- برتری اصلی RISC در این است که 95 درصد دستورهای آن یک کلاک و بقیه فقط دو کلاک زمان می برند که این امر باعث افزایش سرعت می شود.ضمن اینکه در تعداد ترانزیستورها به دلیل سادگی مدار صرفه جویی می گردد.
6- بر خلاف پردازنده های CISC که باس آدرس و داده در آن مشترک است , در پردازنده های RISC این باس ها جدا جدا هستند :
الف) برای ورود و خروج داده (OPERAND) به CPU.
ب) برای دستیابی و آدرس دهی داده ( OPERAND ).
ج) برای حمل .OPECODE
پ) برای دستیابی و آدرس دهی OPECODE. به این روش ساختار HAVARD گویند .
7- چون CISC تعداد زیادی دستور دارد روش های فراوانی هم برای آدرس دهی دارد که اجرای این روش ها به وسیله ریز دستورهایی انجام می شود . پیاده سازی این ریز دستورها در CPU بیش از %60 ترانزیستورها را مصرف می کند حال آنکه در RISC ریز دستورها با استفاده از روش Harvard توسط کمتر از 10% ترانزیستورها پیاده سازی می شود.
به طور کلی پردازنده هایی که از ساختار RISC ریز دستورها بهره مند هستند در اکثر زمینه ها بر پردازنده های CISC برتری دارند اما مشکل RISC این است که برنامه های MSDOS بر روی آن اجرا نمی شود , بنابراین از پردازنده های CISC برای ساخت PC استفاده می شود. نمونه هایی از پردازنده هایی با ساختار CISC عبارتند از:
میکروپروسسورهای 80X86 ساخت INTEL و 68X0 ساخت Apple Mclntosh . میکروکنترلر 8051 هم از ساختار CISC استفاده می کند .
ویژ گی های میکروکنترکرهای AVR :
1- میکروکتنرلرهای AVR از یک ساختار RISC استفاده می کنند. دستورها در این میکروکتنرلرها به گونه ای طراحی شده است که حجم برنامه کوچک شود حتی اگر به زبان اسمبلی ساخته شده باشد. ساختار RISC با دستورهای فراوان در این میکروکتنرلرها باعث کم شدن حجم برنامه و بالا رفتن سرعت می شود. AVR دارای مجموعه دستورات فراوان با 32 رجیستر عمومی است که همه آنها با ALU در ارتباط هستند که سبب می شود دو رجیستر مستقل در یک دستور به طول یک کلاک در دسترسی باشند. این ساختار منجر به بهینه سازی کد و ده برابر سریعتر شدن آن نسبت به CISC می شود.
2- ساختار بهینه I/O در این میکروکتنرلرها باعث کاهش نیاز به افزودن اجزای خارجی می شود .
3- میکروکتنرلرهای AVR دارای اسیلاتور داخلی , تایمر , UART و SPI درون تراشه هستند .
4- این میکروکتنرلرها دارای مقاومت UP – PULL درونی هستند .
5- AVR از تکنولوژی حافظهVOLATILE – NONوDENSITY HIGH برخوردار است.
6- میکروکتنرلرهای AVR دارای مبدل A/D , مقایسه کننده آنالوگ , تایمر WATCHDOG و قابلیت مدولاسیون عرض پالس هستند .
7- حافظه های FLASH و EEPROM در این میکروکتنرلرها , قابلیت برنامه ریزی شدن در داخل مدار را دارند(ISP ) .
8- حافظه FLASH از دو روش در داخل مدار , برنامه ریزی می گردد. یکی , توسط PROGRAMMER حافظه VOLATILE - NON و از طریق رابطه سریال SPI و دیگری به وسیله اجرای BOOT PROGRAM می تواند از هر مدار واسطی برای ریختن برنامه بر روی حافظه FLASH استفاده کند .
9- ساختار میکروکتنرلرهای AVR به گونه ای طراحی شده است که هم برای زبان اسمبلی وهم زبانهای سطح بالا مفید باشد. بنابراین می توان از زبانهای سطح بالایی مثل C و BASIC هم در برنامه ریزی این میکروکتنرلرها استفاده کرد که این امر برنامه نویسی را برای کاربران آسان می کند .
جهت دانلود نسخه کامل این محصوب به لینک زیر بپیوندید:
http://daneshkadeha.com/downloads/%D8%A2%D8%B4%D9%86%D8%A7%D9%8A%D9%8A-%D8%A8%D8%A7-%D9%85%D9%8A%DA%A9%D8%B1%D9%88-%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1%D9%87%D8%A7%D9%8A-avr/