میکروکنترلرهای AVR، شاهکار 8 بیتی Atmel

توسط | 12 اردیبهشت, 1399 | AVR, میکروکنترلر, وبلاگ | 40 دیدگاه ها

میکروکنترلرهای-avr

آموزش AVR یوبرد

شاهکار 8بیتی اتمل

آموزش های رایگان AVR

فیلم های آموزش AVR

آموزش خصوصی AVR

اخبار جدید یوبرد در اینستاگرام

میکروکنترلرهای AVR یک خانواده از میکروکنترلرها هستند که از سال 1996 توسط شرکت Atmel توسعه داده شده اند. این میکروکنترلرها امروزه نیز در بسیاری از پروژه ها و آموزش ها استفاده می شوند. میکروکنترلرهای AVR می توانند کنترل کنندۀ تعبیه شده در بسیاری از کاربردها با سیستم های تعبیه شده باشند. همچنین بردهای توسعه مبتنی بر این میکروکنترلرها امروزه با هدف آموزش و سرگرمی به صورت انبوه تولید می شوند. این که میکروکنترلرهای AVR را شاهکار می دانیم، چند دلیل دارد. یکی از دلایل آن، تولید بی وقفۀ این میکروکنترلرهاست. میکروکنترلرهای AVR که تراشه های پر استفادۀ آنها فرکانس حداکثر 16 مگاهرتزی دارند، امروزه نیز در زمانی که میکروکنترلرهایی با فرکانس 1 گیگاهرتز نیز وجود دارند، به صورت بی وقفه تولید می شوند. یکی دیگر از دلایل این است که میکروکنترلرهای AVR نخستین میکروکنترلرهایی بودند که از حافظۀ Flash داخلی به عنوان حافظۀ برنامه استفاده کردند. در آن زمان میکروکنترلرهای دیگر از حافظه های  EPROM یا EEPROM استفاده می کردند. دلیل دیگر این است که بردهای متن باز آردوینو که از محبوب ترین بردهای متن باز دنیا هستند، هنوز از میکروکنترلرهای AVR در ساختار خود استفاده می کنند. دلایل ذکر شده کافی است تا این میکروکنترلرها را شاهکار بدانیم. در نوشته های پیشین دربارۀ میکروکنترلر صحبت کرده ایم. در این نوشته می خواهیم به صورت مختصر و جامع به معرفی میکروکنترلرهای AVR بپردازیم. برای یافتن پاسخ سؤال «میکروکنترلر AVR چیست؟» با ما همراه باشید.

آموزش AVR

میکروکنترلرهای-atmel-8-bit

تصویر 1 – چند میکروکنترلر AVR

تاریخچه میکروکنترلرهای AVR

معماری AVR توسط دو دانشجوی دانشگاه علم و فناوری نروژ ابداع شده است. نام این دو دانشجو Alf-Egil Bogen و Vegard Wollan بود. میکروکنترلر AVR اصلی در شرکت Nordic Semiconductor (با نام قدیم Nordic VLSI) واقع در شهر تروندهایم نروژ ساخته شد. هنگامی که این تکنولوژی از Nordic VLSI به Atmel فروخته شد، Bogen و Wollan معماری آن را در Atmel نروژ (یک شرکت تابع Atmel) توسعه دادند. طراحان AVR با نویسندگان کامپایلر در IAR Systems برای اطمینان از این که دستور العمل های AVR تدوین کارآمد زبان های سطح بالا را ارائه دهند، کار کردند. طبق گفته های Atmel، کلمۀ AVR مخفف هیچ عبارتی نیست و Atmel پاسخ مشخصی برای انتخاب کلمۀ AVR نداده است. با این حال برخی تصور می کنند که AVR مخفف کلمات Alf and Vegard’s RISC processor است. برخی نیز بر این باورند که AVR مخفف عبارت Advanced Virtual RISC است. معماری AVR در سال 1997 معرفی شد. اولین میکروکنترلر با معماری AVR میکروکنترلر AT90S8515 نام داشت. اما میکروکنترلر AT90S1200 نخستین میکروکنترلر AVR بود که در سال 1997 به صورت تجاری عرضه شد. Atmel تا سال 2003 تعداد پانصد میلیون از میکروکنترلرهای AVR را عرضه کرد. در سال 2005 نیز پلتفرم Arduino با هدف ساخت پروژه های ساده، بر پایۀ میکروکنترلر AVR ATmega8 منتشر شد (آموزش آردوینو). در  4 آوریل 2016 شرکت Microchip Technology اعلام کرد که خرید و مالکیت شرکت Atmel را به اتمام رسانده است. از سال 2016 تاکنون این میکروکنترلرها توسط Microchip Technology تولید شده اند.

سازندگان-wollan-bogen

تصویر 2 – از راست: Alf-Egil Bogen و Vegard Wollan

معماری میکروکنترلرهای AVR

پردازندۀ AVR دارای معماری RISC بهبود یافته است. همچنین در این میکروکنترلرها برای حافظه از معماری Harvard استفاده شده است. به این صورت که حافظۀ برنامه (حافظۀ Flash) و حافظۀ داده (حافظۀ SRAM) و باس آنها از یکدیگر جدا هستند. میکروکنترلرهای AVR نخستین میکروکنترلرهایی هستند که در آنها از حافظۀ Flash به عنوان حافظۀ برنامه استفاده شده است. در این میکروکنترلرها حافظه های Flash و SRAM و EEPROM در یک تراشۀ واحد در کنار هم قرار گرفته اند. بنابراین در اغلب کاربردها نیازی به حافظه های خارجی نیست. در برخی میکروکنترلرهای AVR امکان اتصال حافظۀ SRAM خارجی وجود دارد (مثل میکروکنترلر ATmega128). در برخی نیزحافظۀ EEPROM وجود ندارد. اما اغلب میکروکنترلرهای AVR دارای پروتکل های ارتباطی سریال هستند. و با استفاده از این ارتباطات سریال می توان حافظه های Flash و EEPROM خارجی به میکروکنترلر متصل کرد. در تصویر زیر CPU میکروکنترلر AVR ATmega16 مشخص شده است. شمارندۀ برنامه، اشاره گر پشته، رجیستر دستور، آشکار ساز دستور، رجیستر وضعیت، ALU و رجیسترهای عمومی اجزای CPU هستند.

بلوک-دیاگرام-cpu-میکروکنترلر

تصویر 3 – CPU در بلوک دیاگرام میکروکنترلر AVR ATmega16

انواع میکروکنترلرهای AVR، خانواده های AVR

این میکروکنترلرها به پنج دستۀ اصلی زیر تقسیم می شوند:

  • خانوادۀ Classic AVR (یا خانواده AT90S): این خانواده اولین خانوادۀ میکروکنترلرهای AVR است. اولین تراشۀ این خانواده که به بازار راه یافت، AT90S1200 بود. این خانواده از لحاظ امکانات، بین خانوادۀ mega AVR و tiny AVR قرار می گیرد. میکروکنترلرهای خانوادۀ AT90S در جدول زیر آمده اند.
AT90S1200 AT90S2333 AT90S4433 AT90S8535
AT90S2313 AT90S2343 AT90S4434 AT90S8534
AT90S2323 AT90S4414 AT90S8515

جدول 1 – میکروکنترلرهای خانوادۀ Classic AVR

  • خانوادۀ tiny AVR: این خانوده از لحاظ امکانات در پایین ترین سطح در بین میکروکنترلرهای AVR قرار دارند. البته این موضوع بدین معنا نیست که میکروکنترلرهای این خانواده قدرتمند نیستند. میکروکنترلرهای خانوادۀ tiny AVR با وجود امکانات داخلی کم، دارای CPU قدرتمند، حافظۀ Flash، حافظۀ SRAM و EEPROM هستند. این خانواده در جاهایی که حجم کم و کارایی بالا و عملیات ساده نیاز باشد، کاربرد دارد. از این خانواده می توانATtiny26 وATtiny2313  و ATtiny13 و ATtiny11 و ATtiny28 و … را نام برد.
  • خانوادۀ mega AVR: میکروکنترلرهای این خانواده دارای امکانات متوسط هستند. همچنین نسبت به دو خانوادۀ tiny AVR و Classic AVR دارای امکانات بیشتری هستند. از این خانواده می توان به میکروکنترلرهای ATmega8 و ATmega48 و ATmega16 و ATmega32 و ATmega128 و … اشاره کرد.
  • خانوادۀ xmega: این خانواده نسبت به سه خانوادۀ قبلی جدیدتر و امکانات آن از خانواده های قبلی بیشتر است. ATxmega32 و ATxmega64 و ATxmega128 و … از این خانواده اند.
  • خانوادۀ 32 بیتی AVR: نام میکروکنترلرهای 32 بیتی AVR با AT32 یا ATU شروع می شود. میکروکنترلرهای 32 بیتی AVR در سال 2006 منتشر شدند. معماری این میکروکنترلرها با میکروکنترلرهای 8 بیتی AVR (چهار خانوادۀ قبلی) متفاوت است.

خانواده-های-ساخت-میکروچیپ-microchip

تصویر 4 – میکروکنترلرهای AVR ساخت Microchip Technology از خانواده های مختلف

در سایت شرکت Microchip Technology دسته بندی هایی نیز برای برخی خانواده های AVR صورت گرفته است. برای مثال خانوادۀ ATtiny1607، خانوادۀ ATtiny3217 و خانوادۀ ATmega4809. که هر کدام از این خانواده ها دارای تعدادی میکروکنترلر هستند. همچنین خانوادۀ AVR-DA در گروه میکروکنترلرهای 8 بیتی در این سایت موجود است. برای مثال میکروکنترلر AVR128DA48 و AVR32DA28 از خانوادۀ AVR-DA هستند. در این نوشته منظور ما از میکروکنترلرهای AVR، فقط میکروکنترلرهای 8 بیتی خانواده های tiny و mega و xmega و Classic است.

نام میکروکنترلرهای AVR و مقدار حافظۀ Flash

نام این میکروکنترلرها با AT شروع می شود که بیانگر نام شرکت سازندۀ آن یعنی Atmel است. نام میکروکنترلرهای خانوادۀ Classic AVR با AT90S شروع می شود. نام میکروکنترلرهای خانوادۀ tiny AVR و mega AVR به ترتیب با ATtiny و ATmega شروع می شود. همچنین نام میکروکنترلرهای خانوادۀ xmega با ATxmega آغاز می شود. اعداد مضرب 2n که بعد از ابتدای نام این میکروکنترلرها قرار دارد، ظرفیت حافظۀ Flash برحسب کیلو بایت است. مثلاً ATmega32 دارای 32 کیلو بایت حافظۀ Flash و ATmega128 دارای 128 کیلو بایت حافظۀ Flash است. به همین ترتیب:

  • میکروکنترلرهای ATmega88 و ATmega8515 دارای حافظۀ Flash به اندازۀ 8 کیلو بایت
  • میکروکنترلرهای ATmega164 و ATmega168 دارای حافظۀ Flash به مقدار 16 کیلو بایت
  • میکروکنترلر ATmega48 دارای حافظۀ Flash به مقدار 4 کیلو بایت
  • میکروکنترلرهای ATmega644و ATmega64دارای حافظۀ Flash به مقدار 64 کیلو بایت
  • میکروکنترلر ATmega3250 دارای حافظۀ Flash به اندازۀ 32 کیلو بایت
  • میکروکنترلر ATmega2561 دارای حافظۀ Flash به مقدار 256 کیلو بایت
  • میکروکنترلرهای ATtiny26 و ATtiny2313 دارای حافظۀ Flash به اندازۀ 2 کیلو بایت
  • میکروکنترلر ATxmega128 دارای حافظۀ Flash به اندازۀ 128 کیلو بایت
  • میکروکنترلر ATxmega64دارای حافظۀ Flash به اندازۀ 64 کیلو بایت

هستند.

نام-میکروکنترلر-atmega32a

تصویر 5 – نام میکروکنترلرهای AVR، میکروکنترلر ATmega32A

معنی پسوندها در نام میکروکنترلرهای AVR

بعد از نام این میکروکنترلرها ممکن است یک پسوند وجود داشته باشد. مثلاً ATmega64A، ATmega32L و … . این پسوندها در صورت وجود، بیانگر محدوده ولتاژ کاری و حداکثر فرکانس کاری میکروکنترلر هستند:

  • بدون پسوند: محدودۀ تغدیه با تغییرات کم (5 v ~ 5.5 v) و فرکانس کلاک حداکثر 16 مگاهرتز؛
  • پسوند L: محدودۀ تغدیه با تغییرات متوسط (7 v ~ 5.5 v) و فرکانس کلاک تا 8 مگاهرتز؛
  • پسوند A: مزیت های هر دو مورد قبلی را دارد؛
  • پسوند V: محدودۀ ولتاژ 1.8 ولت تا 5.5 ولت و فرکانس تا 4 مگاهرتز.
پسوند محدودۀ ولتاژ کاری (V) محدودۀ فرکانس کاری (MHz)
بدون پسوند 4.5 ~ 5.5 0 ~ 16
L 2.7 ~ 5.5 0 ~ 8
A 2.7 ~ 5.5 0 ~ 16
V 1.8 ~ 5.5 0 ~ 4

جدول 2 – پسوندها در نام میکروکنترلر AVR

بعد از این پسوندها پسوندهای دیگری نیز می آیند. برای مثال ATmega32A-AU یا ATmega32A-MU. برای شرح این پسوندها ATmega32A-XY را در نظر بگیرید. حرف X بیانگر پکیج میکروکنترلر است که در بخش پکیج های میکروکنترلر AVR توضیح داده می شود. حرف Y بیانگر دمای کاری میکروکنترلر AVR است. به جای حرف Y، حروف U و N می تواند قرار بگیرد. حرف U به معنای محدودۀ دمای کاری 40- تا 85 درجۀ سانتیگراد است. حرف N نیز به معنی محدودۀ دمای کاری بین 40- تا 105 درجۀ سانتیگراد است.

برخی میکروکنترلرهای AVR پسوند P بعد از شمارۀ میکروکنترلر دارند. برای مثال میکروکنترلرهای ATmega328P و ATmega48P. حرف P بیانگر PicoPower و به معنی مصرف توان خیلی کم میکروکنترلر است. همچنین میکروکنترلرهای جدیدی با نامی شبیه میکروکنترلر قبلی ساخته می شوند. برای مثال میکروکنترلر ATmega328PB با این که از لحاظ نام، ساختار و عملکرد خیلی شبیه به میکروکنترلر ATmega328 است، یک میکروکنترلر جدید است. میکروکنترلر ATmega16M1 نیز به همین صورت است.

نام-میکروکنترلر-atmega328p

تصویر 6 – میکروکنترلر ATmega328P-PU

پکیج میکروکنترلرهای AVR

میکروکنترلرهای AVR در پکیج DIP و SMD عرضه می شوند. برخی از آنها مانند ATmega128 فقط پکیج SMD دارد. خانوادۀ tiny AVR بین 6 تا 32 و خانوادۀ mega AVR بین 28 تا 100 پایه دارند. همچنین تعداد پایه های خانوادۀ xmega بین 32 تا 100 و خانوادۀ 32 بیتی AVR بین 48 تا 144 است. در بخش معنی پسوندها در نام میکروکنترلرهای AVR گفتیم در میکروکنترلر ATmega32A-XY، حرف X بیانگر پکیج میکروکنترلر است. به جای حرف X حروفی مانند A و P و M قرار می گیرد. حرف A به پکیج TQFP، حرف P به پکیج PDIP و حرف M به پکیج QFN/MLF اشاره دارد. همچنین حروف S و J و Y نیز می توانند به جای حرف X قرار بگیرند. که به ترتیب بیان گر پکیج های SOIC و PLCC و SSOP هستند. از جمله پکیج هایی که برای این میکروکنترلرها وجود دارند، می توان به موارد زیر اشاره کرد.

SOT-23 SPDIP UQFN TQFP UFBGA TSSOP
SOIC UDFN WQFN LQFP VFBGA SOIJ
PDIP VDFN VQFN WLCSP TFBGA PLCC

جدول 3 – پکیج های میکروکنترلرهای AVR ساخت Microchip Technology (تا تاریخ 26 فروردین 1399)

میکروکنترلر-atmega16-پکیج

تصویر 7 – میکروکنترلر ATmega16 در سه پکیج مختلف

واحدهای داخلی میکروکنترلرهای AVR، ارتباط با دنیای بیرون

هر میکروکنترلر یک کامپیوتر کوچک است. یک کامپیوتر با ورودی ها، خروجی ها، CPU و حافظه روی یک تراشه (Computer on a chip). میکروکنترلر نیز مانند هر کامپیوتری برای ارتباط با دنیای خارج نیاز به ورودی ها و خروجی ها دارد. حال سوال اینجاست که ارتباط میکروکنترلر با دنیای خارج چه نتیجه ای دارد؟ میکروکنترلر برای انجام وظیفۀ اصلی خود در یک سیستم، باید با دنیای بیرون به طریقی ارتباط داشته باشد. حتی اگر این وظیفه تنها روشن و خاموش کردن یک LED باشد. هدف اصلی استفاده از میکروکنترلرها در یک سیستم، کنترل و پردازش پارامترهای سیستم و پارامترهای در ارتباط با سیستم است. بدین گونه که پارامترهای ورودی تحت پردازش قرار می گیرند و نتیجۀ پردازش در خروجی نمایش داده می شود.

یک سیستم کنترل دمای محیط را در نظر بگیرید. این سیستم دارای یک سنسور دما، یک میکروکنترلر، یک نمایشگر LCD و دو رله است. دو دمای حداقل و حداکثر در حافظۀ میکروکنترلر ذخیره شده است. هر گاه دما بین مقدار حداقل و حداکثر باشد، سیستم خنک کننده و سیستم گرمایشی خاموش هستند. هرگاه دمای محیط بیشتر از دمای حداکثر شود، سیستم خنک کننده با رلۀ مربوط روشن می شود. هر گاه دمای محیط کمتر از دمای حداقل شود، سیستم گرمایشی با رلۀ مربوط روشن می شود. از طرفی یک LCD وجود دارد که دما را نمایش می دهد. بنابراین این سیستم کنترل دما دارای ورودی سنسور دما و خروجی های رله و نمایشگر است. میکروکنترلر نیز روی داده های سنسور دما پردازش انجام می دهد. و نتیجه را در خروجی به شکل نمایش در LCD و قطع و وصل کردن رله ها درمی آورد. و هدف اصلی این سیستم که کنترل دمای محیط است، محقق می شود. برای ارتباط میکروکنترلر با دنیای بیرون، دریافت ورودی ها و دادن خروجی ها، واحدهایی در درون میکروکنترلر تعبیه شده اند.

سیستم-کنترل-دما-با-atmega8

تصویر 8 – یک سیستم کنترل دما با میکروکنترلر

واحد پورت های IO، راه انداز رله، LCD و سون سگمنت

در این بخش به صورت مختصر به معرفی پورت IO در AVR می پردازیم. منظور از پورت IO (یا Input/Output Port) پایه های ورودی و خروجی در حالت کاربری پیش فرض است. در این حالت اگر پایه ها ورودی باشند، مقدار 0 یا 1 قرار گرفته روی آنها می تواند خوانده شود. و در حالتی که خروجی باشند می توان مقادیر 0 یا 1 را روی پایۀ مورد نظر ایجاد کرد. پورت های ورودی/خروجی در AVR با حروف انگلیسی A و B و C و D و E و F و … نام گذاری می شوند. در میکروکنترلرهای AVR هر پورت دارای حداکثر 8 پایه است. برای مثال میکروکنترلر ATmega128 دارای 53 پایۀ پورت IO است. پورت های A و B و C و D و E و F هر کدام دارای 8 پایه و پورت G دارای 5 پایه است. این پایه ها در صورتی که توسط واحد های دیگر به کار گرفته شوند، دیگر پورت IO نیستند. مثلاً اگر در میکروکنترلر ATmega128 واحد SPI فعال شود، پایه های PB0 تا PB3 پورت IO نیستند. حالت کاربری این پایه ها اکنون ورودی و خروجی های واحد SPI است. در تصویر زیر پورت های IO میکروکنترلر ATmega32A  را می بینید.

همان طور که در تصویر زیر می بینید، پایه های پورت A تا پورت D به صورت Pxy نمایش داده شده اند. که x می تواند A تا D و y می تواند 0 تا 7 باشد. پایه های پورت IO علاوه بر این که پورت IO هستند، حالات کاربری دیگری نیز دارند. که در صورتی که ار این حالات کاربری استفاده شود، این پایه ها دیگر پورت IO به حساب نمی آیند. پورت های IO کاربردهایی مانند راه اندازی LCD و سون سگمنت، اتصال رله به میکروکنترلر و … دارد. راه اندازی سون سگمنت با AVR را ببینید.

پورت-io-میکروکنترلر-atmega32a

تصویر 9 – پایه های پورت IO میکروکنترلر ATmega32A در دو پکیج DIP و SMD

واحد وقفۀ خارجی، کاهش بار پردازشی CPU

در میکروکنترلرهای AVR این امکان وجود دارد که از وقفه های داخلی و خارجی استفاده کرد. با اتفاق افتادن این وقفه ها تحت شرایط تعیین شده برنامۀ در حال اجرا متوقف می شود و برنامه ای که در زیرروال وقفۀ مربوط نوشته شده اجرا می شود. پس از اتمام زیرروال وقفه، اجرای برنامۀ قبلی ادامه پیدا می کند. وقفه های خارجی (External Interrupts) نیز به همین شکل است. ولی وقفه های خارجی با تحریک برخی پایه های میکروکنترلر که ورودی هستند، به وقوع می پیوندند. پایه های مربوط به وقفه های خارجی در میکروکنترلرهای مختلف متفاوت است. در تصویر 7 می بینیم که در میکروکنترلر ATmega32A، پایه های وقفۀ خارجی با پایه های PD2 و PD3 و PB2 مشترک هستند. این پایه ها به صورت INT0 و INT1 و INT2 نام گذاری می شوند. هرگاه یکی از این پایه ها برای وقفۀ خارجی تنظیم شوند، نوع تحریک آن نیز مشخص می شود. انواع تحریک وقفۀ خارجی در میکروکنترلرهای AVR تحریک با یکی از موارد زیر است.

  • لبۀ بالا روندۀ سیگنال ورودی؛
  • لبۀ پایین روندۀ سیگنال ورودی؛
  • هر دو لبۀ بالا رونده و پایین روندۀ سیگنال ورودی؛
  • سطح منطقی صفر سیگنال ورودی.

حال اگر  پایۀ وقفۀ خارجی با یکی از موارد گفته شده تحریک شود، برنامۀ در حال اجرا رها و زیرروال وقفۀ خارجی اجرا می شود. پس از پایان زیرروال وقفۀ خارجی دوباره ادامۀ برنامۀ قبلی اجرا می شود. کاربرد وقفۀ خارجی، اطلاع پیدا کردن CPU از وقایع (تغییر سطح ولتاژ) خارج از میکروکنترلر است. وقفه های خارجی، بدون این که نیاز باشد CPU درگیر خواندن سطح از پایه های ورودی شود، CPU را از وقایع خارج از میکروکنترلر مطلع می کنند. بنابراین بار پردازشی خواندن سطح پایه ها، از CPU به واحد وقفه های خارجی منتقل می شود.

پایه-وقفه-خارجی-میکروکنترلر-atmega128

تصویر 10 – پایه های وقفۀ خارجی در میکروکنترلر ATmega128 و ATmega64

واحد مبدل آنالوگ به دیجیتال ADC، خواندن مقادیر آنالوگ

ADC مخفف Analog to Digital Converter به معنای مبدل آنالوگ به دیجیتال است. میکروکنترلر برای پردازش سیگنال های آنالوگ باید ابتدا آنها را به مقادیر دیجیتال تبدیل کند. برای تبدیل آنالوگ به دیجیتال روش های متعددی وجود دارد. روش ADC در AVR، روش تقریب متوالی است. اغلب این میکروکنترلرها یک واحد ADC دارند. برخی از آنها واحد ADC ندارند (مثل میکروکنترلر ATmega16U2). برخی دو واحد ADC دارند (مثل میکروکنترلر ATtiny1616). همچنین حداکثر رزولوشون ADC در برخی از آنها برابر 12 بیت و در اغلب آنها برابر 10 بیت است. تعداد کانال (پایه)های ورودی ADC نیز اغلب 8 کانال است. تعداد کانال های ADC در برخی میکروکنترلرهای AVR برابر 12 یا 16 یا 5 یا 4 یا 20 کانال است. یعنی برخی 12 کانال ADC دارند، برخی 16 کانال و … . حداکثر فرکانس نمونه برداری ADC در اغلب میکروکنترلرهای AVR برابر 15 KSPS، در برخی 115 KSPS و در برخی دیگر 375 KSPS است. خروجی ADC یک مقدار دیجیتال بین صفر تا 2n-1 است، که n برابر رزولوشن ADC است. هرگاه ولتاژ ورودی ADC بین صفر تا Vref ولت تغییر کند، خروجی ADC بین صفر تا 2n-1 تغییر می کند. کاربرد مبدل آنالوگ به دیجیتال، اندازه گیری خروجی سنسورهای آنالوگ، ولتاژ و اندازه گیری و پردازش هر سیگنال آنالوگ است. برای مثال می توان با راه اندازی ADC در AVR، خروجی سنسور دمای LM35 را خواند. و یا می توان یک ولت متر، آمپرمتر یا یک اسیلوسکوپ با ADC ساخت. همچنین می توان با ADC یک دستگاه ضبط صوت ساخت. ADC در صنعت نیز کاربردهای فراوانی دارد. از جمله: اندازه گیری دما، شدت نور، ولتاژ جریان، فشار، رطوبت و … .

واحد-adc-در-میکروکنترلر

تصویر 11 – ورودی آنالوگ و خروجی دیجیتال در ADC

واحد مقایسه کننده آنالوگ، تشخیص سیگنال بزرگتر

واحد مقایسه کننده آنالوگ در AVR ولتاژهای آنالوگ ورودی روی پایه های AIN0 (ورودی مثبت) و AIN1 (ورودی منفی) را با هم مقایسه می کند. هر گاه مقدار ولتاژ AIN0 از ولتاژ AIN1 بیشتر باشد، خروجی این مقایسه کننده 1 می شود. در میکروکنترلر ATmega128، این خروجی علاوه بر وقفه ای که می دهد، می تواند منبع تحریک Capture تایمر 1 باشد. علاوه بر ولتاژ خارجی می توان از یک ولتاژ مرجع داخلی Bandgap که مقدار آن 1.22 ولت است، استفاده کرد. در صورتی که واحد ADC غیر فعال باشد، می توان ورودی آن (ADC0 تا ADC7) را برای ورودی منفی یعنی AIN1 به کار برد. در برخی میکروکنترلرهای AVR سه واحد مقایسه کننده و در اغلب آنها یک واحد مقایسه کننده وجود دارد. برخی کاربردهای دیگر مقایسه کننده آنالوگ در میکروکنترلرها عبارتند از: ساخت ADC، ساخت خازن سنج، اندازه گیری عرض پالس و Duty Cycle، مانیتورینگ ولتاژ یا جریان، ساخت موج PWM و … .

واحد-مقایسه-کننده-آنالوگ-میکروکنترلر

تصویر 12 – عملکرد مقایسه کننده

واحد های تایمر/کانتر، زمان سنجی، زمان سازی و شمارش

واحدهای تایمر/کانتر (Timer/Counter Blocks) از مهم ترین واحد های یک میکروکنترلر هستند. تایمر به معنای زمان سنج و کانتر به معنای شمارنده است. ما می گوییم هر گاه این واحد پالس های کلاک CPU را بشمارد یک تایمر است. هر وقت هم تعداد صفر و یک شدن یک سیگنال خروجی را بشمارد در کاربرد کانتر است. از جمله کاربردهای مهم واحد تایمر/کانتر می توان به ساخت موج PWM، کنترل دور موتور، اندازه گیری Duty Cycle یک شکل موج مربعی، فرکانس متر، ساعت و همچنین ساخت زمان هایی دقیق برای اجرای برنامه هاست. که برنامه ها در زمان های خاص و با فواصل زمانی مساوی اجرا شوند. بنابراین از کار CPU کاسته می شود و به  نظر می رسد که اجرای برنامه های نوشته شده همزمان است. برای درک این کاربرد نوشتۀ «آموزش روش حذف کتابخانۀ delay از پروژه های میکروکنترلری» را مطالعه نمایید.

در میکروکنترلرهای AVR تایمر/کانترهای 8 بیتی و 16 بیتی وجود دارد (تایمرهای AVR). امکانات برخی از این تایمر/کانترها عبارتند از: واحد Capture، خروجی PWM، وقفه های سرریز و مقایسه، رجیسترهای مقایسه و عملکرد آسنکرون. مدهای نرمال و Fast PWM، Phase Correct PWM، Phase and Frequency Correct PWM و CTC نیز از مدهای تایمر در AVR هستند. کلاک واحدهای تایمر این میکروکنترلرها می تواند از کلاک CPU با ضریب تقسیم و یا بدون ضریب تقسیم باشد. همچنین در برخی تایمرها می توان کلاک تایمر را از یک کریستال ساعت خارجی تأمین کرد. نوشته های مرتبط با آموزش ها و کاربردهای تایمر/کانتر AVR:

آموزش تایمر کانتر میکروکنترلرهای AVR تایمر صفر در ATmega128A

آموزش تایمر کانتر میکروکنترلرهای AVR تایمر کانتر 2 در ATmega128A

آموزش تایمر کانتر میکروکنترلرهای AVR تایمر کانتر 1 و 3 در ATmega128A

روش کنترل دور موتور DC با PWM و Capture تایمر میکروکنترلر AVR

ساخت موج PWM با Duty Cycle و فرکانس متغیر با تایمر میکروکنترلر AVR

pwm-با-تایمر-کانتر

تصویر 13 – موج PWM با تایمر میکروکنترلر AVR ATmega64A

واحد SPI، تبادل داده با میکروکنترلرها و سنسورها

SPI (مخفف Serial Peripheral Interface) یک پروتکل ارتباطی سه سیمۀ سریال 8 بیتی است. SPI در خیلی از قطعات الکترونیکی مانند سنسورها، آی سی های ADC، میکروکنترلرها، حافظه های SD و … وجود دارد. همچنین برای ارتباط با حافظه های SD و برخی ماژول های فرستنده و گیرندۀ رادیویی از SPI می شود. در SPI یک Master و یک Slave داریم. هرگاه کلاک SPI توسط یک میکروکنترلر (یا قطعۀ دیگری) تولید شود، آن میکروکنترلر (یا قطعۀ دیگر) Master است . در این صورت بقیۀ میکروکنترلرها (یا قطعات دیگر) که با Master ارتباط برقرا می کنند، Slave هستند. نحوۀ ارتباط به این گونه است که ابتدا Slave مورد نظر توسط Master آمادۀ دریافت می شود. سپس دادۀ Master یک بیت یک بیت به Slave ارسال می شود. در همین حین دادۀ Slave نیز یک بیت یک بیت به Master منتقل می شود. در SPI می توان چند Slave داشت، اما در یک زمان نمی توان چند Master داشت. در اغلب میکروکنترلرهای AVR یک واحد SPI وجود دارد (SPI در AVR). در برخی دیگر دو واحد و در برخی نیز سه واحد SPI وجود دارد. SPI در ارتباط بین میکروکنترلر و وسایل جانبی دیگر (که از SPI پشتیبانی می کنند) مانند حافظه های SD، سنسورها، ADC های خارجی، نمایشگرها، ماژول های فرستنده و گیرندۀ رادیویی و …، در فواصل نزدیک کاربرد دارد. در ارتباط SPI  دو طرفه چهار پایه استفاده می شود. این چهار پایه عبارتند از: SCK و MOSI و MISO و SS. در تصویر زیر یک شبکۀ SPI را با چهار Slave می بینید.

شبکه-spi-میکروکنترلر

تصویر 14 – یک شبکۀ SPI

واحد USART، ارتباط میکروکنترلرهای AVR با کامپیوتر و بسیاری از ماژول ها

USART مخفف عبارت Universal Synchronous/Asynchronous Receiver/Transmitter است. این عبارت به معنی فرستنده/گیرندۀ سنکرون/آسنکرون سراسری است. USART یکی از مهمترین پروتکل های ارتباط سریال در میکروکنترلرها، آی سی ها و همچنین بسیاری از ماژول ها است. ارتباط USART می تواند به صورت سنکرون باشد. در این صورت بین فرستنده و گیرنده یک خط کلاک هم وجود خواهد داشت. اگر این ارتباط به صورت آسنکرون باشد، به آن UART گفته می شود. در این صورت اگر ارتباط دو طرفه باشد، بین فرستنده و گیرنده دو خط (به جز زمین) وجود خواهد داشت. اگر هم ارتباط یک طرفه باشد، بین فرستنده و گیرنده یک خط (به جز زمین) نیاز است.

تعداد بیت های داده در ارتباط USART میکروکنترلرهای AVR می تواند متغیر و بین 5 تا 9 بیت باشد. خیلی از این میکروکنترلرها یک واحد USART دارند. میکروکنترلرهای AVRی هستند که تعداد واحدهای USART آنها بیشتر است. برخی از آنها دو و برخی سه و برخی نیز چهار واحد USART دارند. برای مثال میکروکنترلر ATmega1609 دارای چهار واحد USART است.میکروکنترلر Atmega128 دارای دو ارتباط USART است که هر دو می توانند به صورت سنکرون یا آسنکرون کار کنند. با استفاده از قابلیت MPCM (مخفف Multi-processor Communication Mode) می توان یک شبکۀ USART ایجاد کرد. اما پروتکل USART اغلب بین تنها یک فرستنده و گیرنده پیاده سازی می شود. ارتباط USART در میکروکنترلرها می تواند کاربردهای متنوعی داشته باشد. ارتباط با کامپیوتر یکی از این کاربردهاست. همچنین ماژول های مختلفی وجود دارند که می توان با آنها از طریق USART به تبادل داده پرداخت. ماژول های SIM800 (آموزش ماژول های SIM800) و ماژول های وای فای ESP8266 دارای ارتباط سریال USART هستند.

ماژول-esp-روی-برد-atmega64pin

تصویر 15 – ماژول ESP8266 روی برد توسعۀ AVR ATmega64pin یوبرد

واحد TWI، اتصال EEPROM و RTC به میکروکنترلرهای AVR

TWI مخفف عبارت Two-Wire Interface است. این واحد در دیتاشیت میکروکنترلرهای AVR با نام Two-wire Serial Interface آمده است. همان طور که از نامش مشخص است یک ارتباط سریال دو سیمه است. ارتباط TWI در میکروکنترلرهای AVR با این نام مشخص می شود. در میکروکنترلرهای دیگر مانند STM32 نام این ارتباط، I2C است. اما در میکروکنترلرهای AVR ارتباط I2C نیز وجود دارد. پس تفاوت TWI و I2C در AVR چیست؟ پاسخ این است که ارتباط TWI در میکروکنترلرهای AVR به صورت سخت افزاری وجود دارد. اما اگر این ارتباط به صورت نرم افزاری و با پورت های IO پیاده شود، نام آن I2C می شود. در نرم افزار کدویژن برای راه اندازی این ارتباط دو سیمه، دو بخش وجود دارد. یک بخش TWI (یا Two Wire Interface) و یک بخش Bit-Banged I2C Bus Interface. بخش TWI برای فعال کردن واحد TWI سخت افزاری و بخش Bit-Banged I2C Bus Interface برای راه اندازی این ارتباط به صورت نرم افزاری و با پورت های IO است. از پروتکل TWI می توان برای ارتباط میکروکنترلر با ادوات جانبی و ارتباط با میکروکنترلرهای دیگر استفاده کرد. دو المان خیلی مهم وجود دارد که وجود آنها در پروژه های میکروکنترلری الزامی است. این دو المان حافظه های EEPROM خارجی و آی سی RTC خارجی هستند. با استفاده از پروتکل ارتباطی TWI (یا I2C) می توان بین میکروکنترلرها و این دو المان ارتباط برقرار کرد. در تصویر زیر دو آی سی EEPROM و RTC خارجی را روی برد توسعۀ ATmega64pin یوبرد می بینید.

rtc-eeprom-روی-برد-atmega64pin

تصویر 16 – آی سی EEPROM و RTC روی برد توسعۀ ATmega64pin یوبرد

واحد مبدل دیجیتال به آنالوگ DAC، ساخت سیگنال آنالوگ

DAC مخفف Digital to Analog Converter و به معنای مبدل دیجیتال به آنالوگ است. عملکرد DAC عکس عملکرد ADC است و در DAC داده های دیجیتال به سیگنال آنالوگ تبدیل می شوند. در اغلب میکروکنترلرهای AVR واحد DAC وجود ندارد. در برخی از آنها یک و در برخی دیگر سه واحد DAC وجود دارد. برای مثال در میکروکنترلر ATtiny412 یک واحد DAC با رزولوشن 8 بیت وجود دارد. در میکروکنترلر ATtiny3217 نیز سه واحد DAC با رزولوشن 8 بیتی وجود دارد. کاربرد DAC ساخت سیگنال های آنالوگ است. برای مثال می توان با استفاده از تایمر و DAC، شکل موج سینوسی، مثلثی، دندانه اره ای و … ساخت. آی سی های فانکشن ژنراتور DDS مثل AD9833 به همین طریق عمل می کنند. همچنین یکی از کاربردهای DAC در میکروکنترلرهای AVRی که سه واحد DAC دارند، ساخت موج سینوسی سه فاز است. از کاربردهای دیگر DAC، ساخت منبع تغذیۀ دیجیتال، مدولاسیون FM و AM، کنترل دور موتور و … هستند. در تصویر زیر بلوک دیاگرام واحد DAC میکروکنترلر ATtiny412 را مشاهده می کنید.

واحد-dac-میکروکنترلر-attiny412

تصویر 17 – بلوک دیاگرام واحد DAC در میکروکنترلرهای AVR

برخی واحدهای مهم دیگر در میکروکنترلرهای AVR

در میکروکنترلرهای AVR واحدهای دیگری وجود دارد که به صورت مختصر آنها را توضیح می دهیم.

  • تایمر Watchdog: تایمر Watchdog یک تایمر با کلاک مستقل از کلاک CPU است. این تایمر در صورتی که فعال شود، شروع به شمارش می کند. و مقدار آن تا زمانی از پیش تعریف شده زیاد می شود. وقتی زمان از پیش تعریف شده سپری می شود، تایمر Watchdog باعث Reset میکروکنترلر می شود. کاربرد تایمر Watchdog جلوگیری از هنگ کردن میکروکنترلر است. بدین صورت که در جاهای مختلفی از برنامه آن را بازنشانی می کنیم. حال اگر میکروکنترلر هنگ کند و تایمر Watchdog بازنشانی نشود، زمان تعیین شده سپری می شود. بنابراین فرمان Reset میکروکنترلر صادر و میکروکنترلر Reset می شود.
  • واحد PTC (یا Peripheral Touch Controller): این واحد برای راه اندازی سنسورهای لمسی خازنی استفاده می شود. در برخی میکروکنترلرهای AVR مثل میکروکنترلر ATmega328PB این واحد وجود دارد.
  • واحد Brown-out Detection: در این واحد یک مقایسه کننده وجود دارد. این مقایسه کننده ولتاژ تغذیۀ میکروکنترلر را با یک ولتاژ مرجع داخلی مقایسه می کند. در صورتی که ولتاژ تغذیۀ میکروکنترلر از ولتاژ مرجع کمتر شود، میکروکنترلر Reset می شود.
  • واحد LCD Controller: برخی میکروکنترلرهای AVR یک واحد راه انداز (کنترل کنندۀ) LCD به صورت داخلی دارند. در میکروکنترلر ATmega169PA یک واحد LCD Controller داخلی وجود دارد. در برد توسعۀ AVR Butterfly از این میکروکنترلر برای راه اندازی LCD استفاده شده است.

برد-توسعه-butterfly

تصویر 18 – برد توسعۀ AVR Butterfly

برخی امکانات دیگر میکروکنترلرهای AVR

در این بخش چند امکان و قابلیت مهم دیگر در این میکروکنترلرها را نام می بریم. برخی از این امکانات و قابلیت ها در همۀ میکروکنترلرهای AVR وجود ندارند. این قابلیت ها عبارتند از:

  • ولتاژهای رفرنس چندگانه: در برخی میکروکنترلرهای AVR می توان چند ولتاژ مرجع برای ADC و مقایسه کننده آنالوگ داشت. به طور مثال در میکروکنترلر ATtiny807 هر یک از ولتاژهای 0.55 ولت، 1.1 ولت، 1.5 ولت، 2.5 ولت و 4.3 ولت را می توان به عنوان ولتاژ مرجع داخلی انتخاب کرد.
  • ماژول ارتباطی مادون قرمز (IRCOM) در USART برخی میکروکنترلرهای AVR و استفاده از پروتکل ارتباطی IrDA در انتقال داده ها. این قابلیت در میکروکنترلر ATtiny807 و ATtiny1607 و … وجود دارد.
  • قابلیت I/O Multiplexing and Consideration: با استفاده از این امکان می توان پایه های مربوط به واحد های داخلی را از یک پورت به پورت دیگر منتقل کرد. مثلاً در میکروکنترلر ATmega808 پایۀ فرستندۀ USART0 را هم می توان روی پایۀ PA4 داشت و هم روی پایۀ PA0. و یا پایه های SPI را هم می توان روی پورت A داشت و هم روی پورت C.
  • Bootloader برنامه ای است که در بخش Boot حافظۀ Flash قرار می گیرد و وظیفۀ آن پروگرام کردن میکروکنترلر است. Bootloader با استفاده از پروتکل های ارتباطی میکروکنترلر مثل USART، برنامۀ نوشته شده برای میکروکنترلر را دریافت می کند و آن را در بخش Application حافظۀ Flash ذخیره می کند.
  • در برخی میکروکنترلرهای AVR مانند میکروکنترلر ATtiny25 یک PLL برای افزایش فرکانس کلاک وجود دارد.
  • قابلیت Power-on Reset: این قابلیت باعث می شود میکروکنترلر در هنگام وصل شدن ولتاژ تغذیه، Reset شود.
  • رابط JTAG و قابلیت دیباگ: با استفاده از رابط JTAG می توان میکروکنترلر را برنامه ریزی و دیباگ کرد. در تصویر زیر چند پروگرامر و دیباگر AVR JTAG ICE را مشاهده می کنید.

پروگرامر-jtag-ice

تصویر 19 – پروگرامر و دیباگر AVR JTAG ICE

فیوزبیت ها در میکروکنترلرهای AVR، تنظیمات بدون تغییر

در میکروکنترلرهای AVR برخی امکانات با استفاده از فیوزبیت ها تنظیم می شوند. برای مثال قابلیت Brown-out Detection، انتخاب منبع کلاک و … توسط فیوزبیت ها تعیین می شوند. فیوزبیت ها بخشی از حافظۀ Flash هستند و با مقدار صفر فعال و با مقدار 1 غیر فعال می شوند. در برخی از این میکروکنترلرها سه بایت و در برخی دیگر دو بایت فیوز بیت وجود دارد. نام فیوزبیت ها ممکن است در میکروکنترلرهای AVR مختلف متفاوت باشد، اما عملکرد آنها شبیه هم است. فیوزبیت ها حین اجرای برنامه قابل تغییر نیستند و تنها هنگام پروگرام کردن میکروکنترلر قابل تغییرند. از جمله تنظیماتی که با فیوزبیت ها تعیین می شوند می توان به موارد زیر اشاره کرد:

  • فعال و غیر فعال کردن دیباگ توسط JTAG؛
  • فعال و غیر فعال کردن قابلیت پروگرام شدن از طریق SPI؛
  • محافظت از داده های حافظۀ EEPROM هنگام پروگرام شدن؛
  • تعیین مقدار حافظۀ BOOT؛
  • تعیین مقدار ولتاژ Brown-out Detection؛
  • تعیین محدودۀ فرکانس و منبع کلاک میکروکنترلر؛
  • تعیین زمان Start-up میکروکنترلر؛
  • روشن یا خاموش کردن تایمر Watchdog؛

فیوز-بیت-progisp

تصویر 20 – فیوزبیت های میکروکنترلر ATmega64A در نرم افزار ProgISP

منابع کلاک در میکروکنترلرهای AVR، نبض میکروکنترلر

در میکروکنترلرهای AVR می توان کلاک را از منابع مختلف تهیه کرد. منبع کلاک توسط تنظیم فیوزبیت ها در هنگام پروگرم کردن تعیین می شود. منابع کلاک میکروکنترلرهای AVR عبارتند از:

  • اسیلاتور داخلی با کریستال کوارتز یا رزوناتور سرامیکی خارجی: این منبع کلاک فرکانس خود را از یک کریستال کوارتز یا رزوناتور سرامیکی خارجی متصل به پایه های XTAL1 و XATL2 دریافت می کند.
  • اسیلاتور داخلی با کریستال فرکانس پایین خارجی: این منبع همانند منبع قبلی است. با این تفاوت که به جای کریستال با فرکانس های بالا، می توان از کریستال ساعت استفاده کرد. کریستال ساعت دارای فرکانس 32768 هرتز است.
  • اسیلاتور RC خارجی: یکی دیگر از منابع کلاک، اسیلاتور RC خارجی است. این اسیلاتور با استفاده از یک خازن و یک مقاومت ساخته می شود. خروجی این اسیلاتور به پایۀ XTAL1 متصل می شود و پایۀ XTAL2 بدون استفاده رها می شود.
  • اسیلاتور RC کالیبره شدۀ داخلی: میکروکنترلرهای AVR دارای اسیلاتور داخلی با فرکانس های ثابت 1 مگاهرتز، 2 مگاهرتز، 4 مگاهرتز و 8 مگاهرتز هستند. منبع کلاک پیش فرض در این میکروکنترلرها، اسیلاتور RC داخلی با فرکانس 1 مگاهرتز است.
  • کلاک خارجی: به جای این که کریستال یا رزوناتور یا مدار RC به صورت خارجی به پایه های XTAL1 و XTAL2 وصل کرد، می توان از یک کلاک خارجی استفاده کرد. به این صورت که سیگنال کلاک به پایۀ XTAL1 متصل می شود. این سیگنال کلاک می تواند خروجی یک مدار اسیلاتور و یا یک سیگنال ژنراتور و … باشد.

در تصویر زیر کریستال کوارتز 11.0592 مگاهرتز روی برد توسعۀ ATmega64pin مشخص شده است.

منبع-کلاک-کریستال-خارجی

تصویر 21 – کریستال کوارتز به عنوان منبع کلاک AVR

برخی مشخصات الکتریکی و دمای کاری میکروکنترلرهای AVR

ولتاژ تغذیۀ میکروکنترلرهای AVR بین 1.8 ولت تا 5.5 ولت متغیر است. محدودۀ ولتاژ برخی از این میکروکنترلرها بین 2.7 ولت تا 5.5 ولت و برخی دیگر بین 1.8 ولت تا 5.5 ولت است. برای مثال محدودۀ ولتاژ کاری میکروکنترلر ATmega128A بین 2.7 ولت تا 5.5 ولت است. محدودۀ ولتاژ کاری میکروکنترلر ATmega324PA بین 1.8 ولت تا 5.5 ولت است. حداکثر ولتاژ تغذیۀ میکروکنترلرهای AVR نیز برابر 6 ولت است.

جریانی که میکروکنترلر می کشد، بسته به این که کدام واحد داخلی فعال و چه تنظیماتی دارد، متفاوت است. در دیتاشیت میکروکنترلرهای AVR در بخش Electrical Characteristics محدودۀ جریان مشخص شده است. برای مثال در میکروکنترلر ATmega169PA حداکثر جریانی که می تواند از پایه های VCC و GND عبور کند، 400 میلی آمپر است. همچنین حداکثر جریانی که از هر پایۀ ورودی/خروجی عبور می کند، برابر 40 میلی آمپر است.

دمای کاری میکروکنترلرهای AVR متفاوت است. محدودۀ دمای کاری برخی بین 40- تا 85 و برخی دیگر بین 40- تا 125 درجۀ سانتیگراد است. محدوده های دمای دیگری نیز وجود دارند. برای مثال محدودۀ دمای کاری میکروکنترلر ATmega128A بین 55- تا 125 درجۀ سانتیگراد است.

حداکثر فرکانس CPU میکروکنترلرهای AVR نیز در میکروکنترلرهای مختلف متفاوت است. در برخی میکروکنترلرهای AVR تا 12 مگاهرتز، برخی تا 16 مگاهرتز و برخی نیز تا 20 مگاهرتز می تواند باشد. برای مثال حداکثر فرکانس CPU میکروکنترلر ATtiny102 برابر 12 مگاهرتز است. حداکثر فرکانس CPU به ولتاژ تغذیه بستگی دارد. در تصویر زیر رابطۀ حداکثر فرکانس CPU با ولتاژ تغذیه را برای میکروکنترلر ATmega128A می بینید.

حداکثر-فرکانس-cpu-با-ولتاژ

تصویر 22 – رابطۀ حداکثر فرکانس کلاک CPU با ولتاژ تغذیه میکروکنترلر AVR

توان ورودی میکروکنترلرهای AVR

حداکثر توان مصرفی میکروکنترلرهای AVR با توجه به حداکثر جریان قابل قبول آن و ولتاژ تغذیه محاسبه می شود. اگر فرض کنیم ولتاژ تغذیه برابر 5.5 ولت است و حداکثر جریان هم 400 میلی آمپر، در این صورت میکروکنترلرهای AVR می توانند حداکثر 2.2 وات در ورودی دریافت کنند. البته این مقدار به صورت تئوری است و ممکن است شرایط در عمل متفاوت باشد. مقدار جریانی که میکروکنترلر می کشد، در شرایط مختلف، متفاوت است. بنابراین توان ورودی به آنها نیز در شرایط گوناگون، فرق دارد. لازم به ذکر است که هیچ سیستمی وجود ندارد که بازدهی آن 100% باشد. میکروکنترلرها نیز از این قاعده مستثنا نیستند. بخشی از توانی که در ورودی میکروکنترلر دریافت می شود، به صورت گرما در درون میکروکنترلر مصرف می شود. یکی از راه های کم کردن توان مصرفی، استفاده از مدهای Sleep است. در میکروکنترلرهای AVR مدهای Sleep برای کم کردن توان مصرفی استفاده می شود. همچنین در صورت استفاده از مدهای Sleep، عمر میکروکنترلر افزایش می یابد. در میکروکنترلرهای AVR چند مد Sleep وجود دارد که برخی از آنها عبارتند از: مد Idle، مد Power Down، مد Standby، مد Power Save. لازم به ذکر است که برخی از این میکروکنترلرها تنها چند مد از مدهای Sleep را دارند. در تصویر زیر مقدار جریانی که میکروکنترلر ATmega128A در مد Active (سمت چپ) و مد Idle (سمت راست) در فرکانس ها و ولتاژهای مختلف از پایه های VCC می کشد، نمایش داده شده است.

مصرف-توان-مد-active-idle

تصویر 23 – جریان گذرنده از پایه های VCC میکروکنترلر ATmega128A

نرم افزارهای مرتبط، برنامه نویسی و برنامه ریزی میکروکنترلرهای AVR

هر میکروکنترلر برای این که به کار گرفته شود، نیاز به یک برنامه دارد. این برنامه در نرم افزارهایی تحت عنوان IDE نوشته می شود. از جمله IDEهای میکروکنترلرهای AVR می توان به نرم افزار اتمل استودیو (Atmel Studio)، نرم افزار کدویژن یا CodeVisionAVR و نرم افزار mikroC PRO for AVR و … اشاره کرد. از میان نرم افزارهای گفته شده، Atmel Studio که ساخت شرکت Atmel است، رایگان است. این نرم افزارها دارای یک محیط ویرایشگر هستند که می توان در آن به زبان C یا C++ برنامه نوشت. همچنین یک کامپایلر دارند که برنامۀ نوشته شده را به کد ماشین (کد HEX) تبدیل می کند. برخی از این IDEها مثل Atmel Studio، دیباگر نیز دارند و کاربر می تواند برنامۀ میکروکنترلر را اشکال زدایی کند. اما IDEها تنها دارای کامپایلر، ویرایشگر کد و دیباگر نیستند. این نرم افزارها قابلیت های دیگری نیز دارند که در مجموع عبارتند از:

  • جادوگر کد: این قابلیت تحت عنوان CodeWizardAVR در نرم افزار کدویژن وجود دارد؛
  • پروگرامر: هم در اتمل استودیو و هم در کدویژن وجود دارد؛
  • کتابخانه ها: کتابخانه هایی برای راه اندازی ماژول ها، آی سی ها و نمایشگرهای LCD در نرم افزار کدویژن وجود دارد. البته نرم افزار اتمل استودیو نیز دارای کتابخانه هایی نظیر delay و stdio و … است.
  • توابع راه اندازی واحدهای داخلی: در نرم افزار mikroC PRO for AVR کتابخانه ها و توابع مختلفی برای راه اندازی واحدهای داخلی وجود دارد.

گفتنی است نرم افزارهای پروگرامر تنها در IDEها نیستند. نرم افزارهایی وجود دارند که تنها پروگرامر هستند. برای مثال نرم افزار ProgISP که برای کار با پروگرامر USBasp استفاده می شود.

توصیه می کنیم برای عملکرد هر چه بهتر برنامۀ نوشته شده و مطمئن بودن از صحیح کامپایل شدن آن، از نرم افزار Atmel Studio استفاده کنید.

ویدئوی 1 – کار با اتمل استودیو

نرم افزار Proteus، شبیه سازی میکروکنترلرهای AVR

نرم افزار پروتئوس یک شبیه ساز برای مدارات الکتریکی و الکترونیکی است. در این نرم افزار امکان شبیه سازی میکروکنترلرها نیز وجود دارد. نرم افزار پروتئوس از برخی میکروکنترلرهای شرکت Microchip Technology و NXP Semiconductor و STMicroelectronics و … پشتیبانی می کند. همچنین امکان شبیه سازی برخی میکروکنترلرهای AVR نیز در این نرم افزار وجود دارد. نرم افزار پروتئوس توسط Labcenter Electronics توسعه داده شده است. این نرم افزار دو بخش کلی دارد. بخش Schematic Capture برای طراحی و شبیه سازی مدارات الکتریکی و الکترونیکی است. بخش PCB Layout نیز برای طراحی PCB است. در نرم افزار پروتئوس امکان استفاده از برخی LCDهای کاراکتری و گرافیکی، کیپد، ترمینال های مجازی سریال، اسیلوسکوپ، فانکشن ژنراتور، انواع سنسورها و … وجود دارد. وجود داشتن چنین امکانتاتی باعث شده پروتئوس یکی از نرم افزارهای مناسب برای شبیه سازی میکروکنترلر AVR باشد. در تصویر زیر دو میکروکنترلر ATmega128 را می بینید که با ارتباط I2C به یکدیگر متصل شده اند. همچنین به هر کدام از آنها یک LCD کاراکتری 16*2 متصل شده است.

ساخت پروژه در پروتئوس

میکروکنترلر-atmega128-proteus

تصویر 24 – میکروکنترلر ATmega128 در پروتئوس

پروگرامرهای AVR، انتقال کدهای برنامه به حافظۀ Flash

برای این که بتوانیم برنامۀ نوشته شده را به حافظۀ برنامۀ میکروکنترلر انتقال دهیم، علاوه بر نرم افزارهای پروگرامر، باید از سخت افزار پروگرامر نیز استفاده کنیم. برخی پروگرامرهای میکروکنترلرهای AVR عبارتند از:

  • پروگرامر STK500: این پروگرامر در انواع و اقسام مختلف ساخته می شود. این پروگرامر را هم می توان با نرم افزار Atmel Studio و هم با نرم افزار CodeVisionAVR به کار گرفت.
  • پروگرامر و دیباگر Atmel-ICE: این پروگرامر و دیباگر برای برنامه ریزی و دیباگ میکروکنترلرهای SAM و AVR به کار می رود. برنامه ریزی و دیباگ OCD، ارتباط JTAG و aWire و ارتباط دو سیمۀ PDI و ارتباط UPDI و پشتیبانی از تمام خانواده های AVR از جمله میکروکنترلرهای 32 بیتی AVR، برخی قابلیت های Atmel-ICE هستند.
  • پروگرامر MK2 یا AVRISP MKII: این پروگرامر می تواند میکروکنترلرهای 8 بیتی AVR را به صورت ISP و PDI و TPI پروگرام کند. این پروگرامر از خانوادۀ xmega نیز پشتیبانی می کند.
  • پروگرامر و دیباگر AVR JTAG ICE: می تواند تمام میکروکنترلرهای 8 بیتی AVR را با ارتباط JTAG پروگرام و دیباگ کرد.
  • پروگرامر USBasp: این پروگرامر ساده از میکروکنترلر ATmega8 یا ATmega88 برای برنامه ریزی میکروکنترلرهای AVR استفاده می کند.

ویدئوی 2 – معرفی چند پروگرامر میکروکنترلرهای AVR

بردهای توسعه و بردهای آموزشی، شروع کار با میکروکنترلرها

می توان گفت تمام شرکت هایی که میکروکنترلر تولید می کنند، بردهای توسعه ای نیز برای آنها می سازند. برای میکروکنترلرهای AVR نیز بردهای توسعۀ فراوانی ساخته شده است. از جمله بردهای توسعۀ ساخته شده برای میکروکنترلرهای AVR می توان بردهای زیر را نام برد:

AT90USBKEY ATmega4809 Curiosity Nano AVR Parrot
ATAVRSB200 ATmega4809 Xplained Pro AVR Xplain
ATAVRSB202 ATtiny104 Xplained Nano Evaluation Kit MEGA-1284P Xplained
ATmega168PB Xplained Mini ATtiny1607 Curiosity Nano Evaluation Kit XMEGA A1U Xplained Pro Evaluation Kit
ATmega256RFR2 Xplained Pro Evaluation Kit ATtiny3217 Curiosity Nano Evaluation Kit XMEGA-A1 Xplained
ATmega256RFR2 Xplained Pro Starter Kit ATtiny3217 Xplained Pro XMEGA-A3BU Xplained
ATmega256RFR2 ZigBit Xplained Pro Extension ATtiny416 Xplained Nano XMEGA-B1 Xplained
ATmega324PB Xplained Pro ATtiny817 Xplained Pro XMEGA-C3 Xplained
ATmega328P Xplained Mini AVR Butterfly XMEGA-E5 Xplained
ATmega328PB Xplained Mini AVR P4

جدول 4 – بردهای توسعۀ میکروکنترلرهای AVR در سایت شرکت Microchip Technology

هر یک از بردهای توسعه ممکن است با هدف خاصی تولید شده باشند. در این راستا برای تحقق آسان تر هدف یادگیری کار با میکروکنترلرهای AVR، یوبرد نیز برد توسعۀ ATmega64pin را برای میکروکنترلرهای ATmega64 و ATmega128 تولید کرده است. تصاویر بخش هایی از این برد را در طول نوشته آوردیم. نمای کامل تر این برد را در تصویر زیر می بینید.

برد-توسعه-atmega64pin-یوبرد

تصویر 25 – برد توسعه ATmega64pin یوبرد

نتایج میکروکنترلرهای AVR، شاهکار 8 بیتی Atmel

  1. معماری میکروکنترلر AVR توسط دو دانشجو به نام های Alf-Egil Bogen و Vegard Wollan ابداع شده است.
  2. AVR مخفف هیچ عبارتی نیست و شرکت Atmel پاسخی مشخص دربارۀ نام AVR نداده است.
  3. در سال 1997اولین میکروکنترلر AVR به صورت تجاری عرضه شد. نام این میکروکنترلر AT90S1200 بود.
  4. پردازندۀ AVR دارای معماری RISC بهبود یافته است. برای حافظۀ آن نیز از معماری Harvard استفاده شده است.
  5. AVRها نخستین میکروکنترلرهایی هستند که در آنها از حافظۀ Flash به عنوان حافظۀ برنامه استفاده شده است.
  6. برخی خانواده های AVR عبارتند از: Classic AVR و tiny AVR و mega AVR و xmega AVR.
  7. در نام این میکروکنترلرها اعداد مضرب 2n بیانگر ظرفیت حافظۀ Flash است. مثلاً ATmega16 دارای 16 کیلو بایت حافظۀ Flash است.
  8. در نام میکروکنترلر ATmega32X-YZ، حرف X بیانگر محدودۀ ولتاژ و فرکانس، حرف Y بیانگر پکیج و حرف Z بیانگر محدودۀ دمای کاری میکروکنترلر است.
  9. میکروکنترلرها برای ارتباط با دنیای خارج نیاز به ورودی ها و خروجی ها دارند. بنابراین واحدهایی در میکروکنترلرها تعبیه شده است. برخی از این واحدها عبارتند از: واحد پورت های IO، واحد وقفه های خارجی، واحد ADC، واحد DAC، واحدهای ارتباط سریال (SPI و USART و I2C و …)، واحدهای تایمر/کانتر و … .
  10. فیوزبیت ها در AVR تعیین کنندۀ تنظیماتی مانند محدودۀ فرکانس و نوع کلاک میکروکنترلر، محافظت از داده های EEPROM هنگام پروگرام کردن، تعیین مقدار حافظۀ BOOT و … هستند. فیوزبیت ها تنها هنگام پروگرام کردن قابل تغییر هستند و حین اجرای برنامه قابل تغییر نیستند.
  11. در AVR می توان از چند منبع، کلاک سیستم را فراهم کرد. این منابع عبارتند از: اسیلاتور داخلی با کریستال کوارتز یا رزوناتور سرامیکی خارجی، اسلاتور داخلی با کریستال فرکانس پایین خارجی، اسیلاتور RC خارجی، اسیلاتور RC کالیبره شدۀ داخلی و کلاک خارجی.
  12. محدودۀ ولتاژ کاری در AVR در میکروکنترلرهای مختلف متفاوت است. در این میکروکنترلرها ولتاژ تغذیه بین 1.8 ولت تا 5.5 ولت متغیر است.
  13. استفاده از مدهای Sleep علاوه بر کاهش مصرف توان، باعث طولانی شدن عمر میکروکنترلر می شود.
  14. مقدار جریانی که میکروکنترلر می کشد، با فرکانس رابطۀ مستقیم دارد.
  15. نرم افزارهای Atmel Studio علاوه بر داشتن محیط ویرایش کد و کامپایلر، پروگرامر و دیباگر نیز دارد.
  16. برای AVR پروگرامرهای متنوعی وجود دارد که برخی از آنها عبارتند از: پروگرامر STK500، پروگرامر Atmel-ICE و پروگرامر USBasp.
  17. بردهای توسعه اغلب اهداف آموزشی ساخته می شوند. می توان گفت همۀ شرکت هایی که میکروکنترلر می سازند، برای آنها بردهای توسعه نیز می سازند.

آموزش های یوبرد مرتبط با این نوشته:

رضا بداغی

رضا بداغی

عضو هیئت مدیره یوبرد، طراح و برنامه نویس سیستم های دیجیتال مبتنی بر میکروکنترلر، طراح PCB و مدرس آموزش های میکروکنترلر، طراحی PCB و برنامه نویسی میکروکنترلر

سفارش پروژه میکروکنترلر یوبرد

زیرساخت مطمئن صنعت

جدیدترین تاپیک های AVR

برنامه-نویسی-میکروکنترلر-ویژوال-استودیو

برنامه نویسی میکروکنترلرها با ویژوال استودیو

نصب VisualGDB روی ویژوال استودیو، ساخت پروژه برای برنامه نویسی میکروکنترلرها با ویژوال استودیو، ساخت پروژه برای STM32 در ویژوال استودیو، کدنویسی STM32 در ویژوال استودیو، ساخت پروژه برای AVR در ویژوال استودیو، ساخت پروژه برای LPC در ویژوال استودیو، ساخت پروژۀ آردوینو در ویژوال استودیو

رله-relay

رله، سوییچ تحریک پذیر

تعریف رله، تاریخچه، طرز کار رلۀ الکترومکانیکی، اصطلاحات، انواع الکترومکانیکی، رلۀ حالت جامد، رلۀ هیبریدی، رلۀ حرارتی و انواع تحریک شونده با عوامل غیر الکتریکی، انواع موجود در صنعت برق و برق صنعتی، رلۀ ایمنی و برخی انواع حفاظتی، رلۀ دیجیتال، لزوم استفاده و راه اندازی رله، مشخصات الکتریکی

پروتکل-i2c-protocol

پروتکل I2C، ادغامی از USART و SPI توسط Philips

پروتکل I2C، تاریخچه I2C، ویژگی ها و کاربردهای I2C، عبارات و اصطلاحات I2C، باس، اتصالات و گسترش شبکه I2C، سیگنال های I2C، قالب داده و آدرس در I2C، انتقال داده در I2C، آدرس دهی 10 بیتی، قابلیت Multi-master، حکمیت، مشخصات الکتریکی و زمانی، مقدار مقاومت های پول آپ، Clock Stretching

سون-سگمنت-seven-segment

سون سگمنت، نمایشگر هفت قسمتی

سون سگمنت چیست؟ انواع 7-segment، تاریخچه 7-segment، ساختار 7-segment و نمایش در آن، تعداد ارقام و 7-segmentهای مالتی پلکس، کاربردها، انواع اندازه ها و رنگ ها و مدار راه اندازی 7-segment، بایاس 7-segment، مقدار مقاومت در راه اندازی 7-segment، درایور سون سگمنت، پایه های 7-segment

40 دیدگاه ها

  1. سلام. همه چی رو خوب و کامل گفتید به غیر از توضیحاتی برای افرادی که میخوان تازه شروع کنن به کار با میکروکنترلرا. الان من بخوام مثلا یه دماسنج بسازم که دما رو اندازه بگیره و اونو روی lcd نمایش بده چه مراحلی رو باید طی کنم؟ منظورم از اول تا آخر نرم افزارا و سخت افزاره. ممنون

    پاسخ
    • سلام. ممنون لطف دارید. بله درست می فرمایید. شما باید اول اون مباحثی از میکروکنترلر رو که مربوط به خوندن دما از سنسور هست رو یاد بگیرید. مثلاً سنسور دمایی که دارید خروجیش آنالوگه و شما باید ADC رو یاد بگیرید. و همچنین میخواید نتیجه رو روی LCD نمایش بدید. در این صورت باید اطلاعاتی دربارۀ نحوه نمایش اعداد و کاراکترها روی LCD کسب کنید. بعد از اون باید میکروکنترلر مورد استفاده تون رو انتخاب کنید. یعنی الزامات پروژه رو در نظر بگیرید و ببینید که چه میکروکنترلری برای کاری که میخواید انجام بدید کافیه. حالا شما میدونید چطوری به رجیسترهای ADC مقدار بدید و تا حدی هم با روش راه اندازی LCD اشنا هستید. تو مرحلۀ بعدی باید برنامۀ پروژه رو بنویسید. که یا توی اتمل استودیو یا کدویژن این کار رو انجام میدید. این مرحله هم لازمه ش آشنایی با برنامه نویسی به زبان C یا C++ هستش. شبیه سازی با پروتئوس هم میتونه یکی از مراحل باشه. هر بار که برنامه رو تا جایی رسوندید، اون رو شبیه سازی می کنید و از صحت عملکرد اون مطمئن میشید. بعد از برنامه نویسی شما باید با یک پروگرمر فایل Hex برنامه رو به حافظۀ میکروکنترلر منتقل کنید. این مرحله هم به این صورته که میکروکنترلر رو روی پروگرمر قرار میدید و پروگرمر رو به کامپیوتر متصل می کنید. بعد یه نرم افزار پروگرمر رو باز میکنید و فایل Hex رو Browse می کنید. یه سری تنظیمات وجود داره که باید انجام بدید. مثلاً تنظیمات مربوط به فیوزبیت های میکروکنترلر. که باید قبل از تنظیم اونا، درباره شون مطالعه کرده باشید. بعد از این تنظیمات میکروکنترلر رو پروگرم می کنید. بعد از این که میکروکنترلر رو پروگرم کردید، باید مدار پروژه رو ببندید و اون رو تست کنید. اگه میخواید برای پروژه تون هم برد مدار چاپی بزنید، میتونید با یکی از نرم افزارهای طراحی PCB، یه برد طراحی کنید. که برای تهیه PCB یا خودتون می تونید اقدام کنید یا میتونید بدید شرکتای سازندۀ PCB براتون PCB رو بسازن. مرحلۀ آخر هم مونتاژ کردن قطعات روی PCB هستش.

      در کل مراحل انجام یه پروژۀ میکروکنترلری رو میشه به صورت زیر خلاصه کرد:

      1- مطالعۀ مباحث مربوط به واحدهای داخلی میکروکنترلر که با پروژۀ حاضر در ارتباط هستند.

      2- نوشتن برنامه در یکی از IDEهای موجود.

      3- شبیه سازی و تست برنامه نوشته شده در حین نوشتن آن.

      4- پروگرم کردن میکروکنترلر.

      5- پیاده سازی سخت افزار.

      البته این مراحل صرفاً درست نیستن. همه چی بستگی به پروژه داره. مثلاً شما یه پروژه دارید که قراره از یه میکروکنترلر SMD استفاده کنید. و روی بردتون هم قراره یه سوکت IDC بذارید برای پروگرم کردن میکروکنترلر. پس شما باید اول سخت افزار رو پیاده کنید، بعد پروگرم کنید. یعنی جای مرحلۀ 4 و 5 با هم عوض میشه. یا اصلاً برنامه طوریه که نمیتونید اونو شبیه سازی کنید. مطالبی که اینجا توضیح دادم فعلاً برای ایجاد یه ذهنیت از مراحل بود. مراحل انجام دادن پروژه ممکنه برای افراد با توجه به دیدگاه ها و تجربیاتی که دارن متفاوت باشه.

      حالا نرم افزارها و سخت افزارهایی که توی مراحل انجام چنین پروژه ای نیاز دارید به این صورته:

      نرم افزارها: اتمل استودیو، کدویژن یا … برای نوشته برنامه، نرم افزار پروگرمر که میتونه توی خود IDE باشه، نرم افزار شبیه سازی که میتونه پروتئوس باشه، نرم افزار طراحی PCB مثلاً Altium designer.

      سخت افزار: المان های اصلی پروژه شامل میکروکنترلر و سنسور دما و LCD و مقاومت و خازن و سلف و منبع تغذیه و …، پروگرمر، PCB (در صورت نیاز) و همچنین ابزارهای مونتاژ روی PCB مثل هویه و قلع و روغن لحیم و …

      موفق باشید

      پاسخ
      • سلام جناب مهندس خدا خیرت بده که مشکلات مردمو حل میکنید جناب مهندس بنده دستگاهی دارم که با ای سی اتمگا ال8_۸پی یو کارمیکنه براثر یه اتصال ولتاژ بیشتراز توان ای سی وارد ای سی شده وپایه های ولتاژ که تو دیتاشیت برا راه اندازی مشخص شده ظاهرا اتصال شده ایا میشه ازپایه های دیگه برای راه اندازی مجدد استفاده کرد یا روشی هست که برنامه رو از ای سی برداشت وروی ای سی دیگه کپی کرد پروگرامر ها ای سی رو نمیشناسه دستگاهم ایرانی نیست که برنامشو گیر بیارم ممنون میشم اگه راهی نشون بدید

        پاسخ
        • سلام وقت بخیر. خواهش میکنم نظر لطفتونه.
          به نظر یک مرتبه شارژ قلع کنید و مجددا امتحان کنید.
          همچنین برای برداشتن کد میکروکنترلر و کپی کردن روی یک میکروکنترلر دیگه، پروگرمرهایی هستند که این کار رو میکنند. مثل پروگرمر TNM یا مدل های دیگه. اگر میکروکنترلر شما قفل نشده باشه، میتونید اون رو کپی کنید. اگر قفل شده باشه، با استفاده از پروگرمر نمیتونید کد اون رو بخونید و باید اون رو به شرکتهای خارجی بسپارید که با استفاده از روشهای خاص این کار رو بکنن.
          همچنین احتمال داره که مشکل از میکروکنترلر نباشه و المان دیگه ای روی برد سوخته باشه. به نظر اول مطمئن بشید که مشکل از میکروکنترلر هست.

          پاسخ
  2. سلام جناب مهندس. چه جوری میشه با مقایسه کننده میکروکنترلرا adc ساخت؟ ممنون

    پاسخ
    • سلام. به صورت تئوری میشه مقایسه کننده رو یه ADC یک بیتی در نظر گرفت. اما منظور از چیزی که توی متن هست اینه که با مقایسه کننده و DAC، یه ADC با روش تقریب متوالی ساخت. فرض کنید یه میکروکنترلر دارید که DAC هم داره. اون وقت از صفر تا یه مقداری رو به DAC میدید که مقدار خروجیش بالا بره. همزمان خروجی DAC رو با ورودی آنالوگ به وسیلۀ مقایسه کنندۀ آنالوگ، مقایسه می کنید. وقتی مقدار خروجی DAC از مقدار ولتاژ آنالوگ ورودی بیشتر شد، اضافه کردن مقدار دیجیتال ورودی DAC رو متوقف می کنید. اون وقت آخرین مقدار دیجیتالی که به ورودی DAC داده بودید میشه مقدار دیجیتال اون سیگنال آنالوگ ورودی. البته این استفاده اغلب جنبۀ آموزشی داره و ساخت این ADC برای کاربردهای معمولی بعیده.

      پاسخ
  3. سلام. وقتتون بخیر. به خاطر مطالب پربار این نوشته نهایت تشکر رو دارم. در انتهای متن فرمودید: برای تحقق آسان تر هدف یادگیری کار با میکروکنترلرهای AVR، یوبرد نیز برد توسعۀ ATmega64pin را برای میکروکنترلرهای ATmega64 و ATmega128 تولید کرده است.
    میشه بفرمایید که این برد توسعه چطور هدف یادگیری کار با avr رو آسون تر محقق میکنه؟ ممنون

    پاسخ
    • سلام. خیلی ممنون. لطف دارید. محقق شدن آسون تر این هدف رو میشه از جنبه های مختلف بررسی کرد. اگر از جنبۀ استفادۀ راحت از سخت افزار به این موضوع نگاه کنیم، می بینیم که استفاده از هدربردها کار رو خیلی آسون میکنه. انجام یه پروژۀ آموزشی با استفاده از بردی که هم پروگرمر روش داره، هم قابلیت اتصال چند نوع نمایشگر و هم قابلیت اتصال چندین ماژول مختلف داره، مدت زمانی رو به خودش اختصاص میده که چندین مرتبه نسبت به پروژه ای که از هدربرد استفاده نمیشه، کمتره. بنابراین با صرف زمان کمتر برای اتصالات و درگیر شدن با سیم و بردبورد و پیاده کردن پروژه های آموزشی به صورت متداول، میتونیم باقی زمان رو به توسعۀ نرم افزار و مطالعه حول موضوع آموزش بپردازیم. از طرفی میکروکنترلر روی این برد ATmega64 یا ATmega128 هستش که از لحاظ واحدهای داخلی و تعداد پایه های IO و حجم حافظه و …، میتونه گزینۀ خوبی برای یادگیری باشه. اگۀ از جنبۀ هزینۀ سخت افزار نگاه کنیم، باز هم این برد نسبت به امکانات و قابلیت هایی که داره، به صرفه تره. با این برد نیاز به پروگرامر خارجی نیست، تو خیلی از پروژه های آموزشی نیاز به بردبورد و سیم بردبورد نیست، نیاز به آی سی DS1307 و EEPROM جداگانه نداریم، چون روی برد تعبیه شدن، با پروگرامر این برد میشه میکروکنترلرهای خارج از برد هم پروگرام کرد، روی برد مبدل USB به سریال CP2102 وجود داره و … . برای اتصالش به کامپیوتر فقط یه کابل Micro USB لازمه. همین موارد به تنهایی کلی تو هزینه ها صرفه جویی میکنه. بنابراین یکی از موانع یادگیری کار با این میکروکنترلرا یعنی هزینۀ سخت افزار تا حدودی کاهش پیدا میکنه. تا اینجا از لحاظ صرف زمان و هزینۀ کمتر برای پیاده سازی سخت افزار بررسی کردیم. همین دو مورد که عرض کردم  به هموار شدن مسیر یادگیری و محقق شدن آسون تر هدف یادگیری کمک بسزایی میکنه. موفق باشید.

      پاسخ
  4. سلام. یه میکروکنترلر atmega32 دارم که قفل شده. یعنی هرچی تلاش میکنم پروگرمر ارور میده و نمیشه پرگرمش کرد. تحقیق کردم احتمالا موقع تنظیم فیوزبیتا clockو اشتباه انتخاب کردم. چطور میتونم این مشکلو برطرف کنم؟
    پروگرمرم stk500 و از avr studio استفاده میکنم
    ممنون

    پاسخ
    • سلام. اگه منبع کلاک رو اشتباه انتخاب کرده باشید میتونید اونو با استفاده از یه پروگرامر USBasp و نرم افزار ProgISP به حالت پیش فرض برگردونید. برای مطالعۀ روش این کار به این نوشته مراجعه کنید:

      پروگرامر برد توسعه ATmega64Pin یوبرد

      پاسخ
  5. سلام مهندس ممنون از توضیحات عالیتون،آیا میشه سروو موتور ها ارزون قیمت رو به سروو موتورهای داینامیکسل تبدیل کرد ،اگه بشه ساخت رباتهای دیقیق مقرون به صرفه میشه.

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

      پاسخ
  6. سلام مهندس. ممنون از این توضیحات کاملتون. واقعا عالی بود.

    پاسخ
    • سلام. خیلی ممنون. لطف دارید. ممنون از نظرتون

      پاسخ
  7. سلام و عرض ادب و احترام.
    واقعا مطلب کاملی در مورد میکروکنترلر های AVR بود، که در هیچ سایتی نمیشه پیدا کرد.
    در بخش «پروگرامر های AVR, انتقال برنامه به حافظه فلش» خالی از لطف نیست که پروگرامر pony prog که از طریق پورت COM کار می‌کنه رو هم ذکر کنید.

    پاسخ
  8. سلام وقت بخیر.
    در رابطه با ولتاژ کاری و فرکانس کاری برای حرف A جای دیگری خواندم که ولتاژ کاری آن بین ۴.۵ تا ۵.۵ ولتاژ و فرکانس آن بین ۰ تا ۸ مگاهرتز است که با چیزی که در اینجا نوشته شده متفاوت هست.
    لطفا در این مورد توضیح میدید.
    سپاسگزارم.

    پاسخ
    • سلام وقت بخیر.
      آنچه ما ذکر کرده ایم برگرفته از دیتاشیت هریک از قطعات هست. مثلا اگر سند ATmega128a DATASHEET COMPLETE را دانلود کنید و به قسمت Electrical Characteristics بروید، اعدادی که ما ذکر کردیم را می بینید. اینکه در سایت دیگر بر چه اساسی نوشته شده ما اطلاعی نداریم.
      تشکر از همراهی شما.

      پاسخ

یک دیدگاه بنویسید

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

دیگر آموزش های یوبرد

آموزش زبان C و MISRA-C یوبرد

گام نخست دنیای میکروکنترلر

آموزش طراحی PCB و نویز یوبرد

تجسم دنیای الکترونیک

آموزش لحیم کاری و IPC-A-610 یوبرد

ساخت دنیای الکترونیک

آموزش میکروکنترلرهای ARM STM32 یوبرد

شروع بازی ST

آموزش آردوینو یوبرد

جادۀ آسفالت میکروکنترلر

آموزش FreeRTOS یوبرد

زمان واقعی در میکروکنترلر و پردازنده های کوچک با FreeRTOS

آموزش ماژول های SIM800 یوبرد

تلفن همراه صنعت

آموزش زبان ++C و ++MISRA-C یوبرد

لمس شی گرایی در میکروکنترلرها

آموزش میکروکنترلرهای LPC یوبرد

یادگار فیلیپس

آموزش های شاخص

دانلود

لطفا برای دریافت لینک دانلود اطلاعات خواسته شده را وارد نمایید
ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است