میکروکنترلرهای 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. سلام جناب مهندس. مطلب بسیار عالی و مفیدی بود. برای من که تازه کارم و میخوام شروع کنم خیلی آموزنده بود. هر چند بعضی مطالبش رو متوجه نشدم. 70 دیقه بیشتر طول کشید اما به خوندنش ارزید. دستتون درد نکنه.

    پاسخ
    • سلام. خواهش میکنم. از لطف شماست. امیدوارم موفق باشید.

      پاسخ
  2. سلام جناب بداغی. آیا هنوز دلیلی برای استفاده از میکروکنترلرهای avr هست؟

    پاسخ
    • سلام. چرا که نه. یکی از دلایلش لزوم استفاده از میکروکنترلرهای 8 بیتیه. میکروکنترلرهای 8 بیتی هنوز هم استفاده دارن. طوری که شرکت ST هم میکروکنترلر 8 بیتی داره (STM8). هنوز هم کاربردهایی وجود داره که با استفاده از میکروکنترلرهای 8 بیتی (مثلاً AVR) انجام میشن و اصلاً ضروری و به صرفه نیست که کسی بخواد میکروکنترلر مثلاً ARM استفاده کنه. این میکروکنترلرها با امکاناتی که دارن می تونن به خوبی پاسخگوی نیاز خیلی از پروژه ها باشن. مثلاً بنده توی یه پروژۀ GSM Controller از میکروکنترلر ATmega128A استفاده کردم. با این که از همۀ امکاناتش استفاده نکردم ولی کنترل دما و رطوبت و دود و ارسال و دریافت پیامک و تماس تلفنی و ارتباط اینترنتی با سرور از طریق HTTP و ارسال ایمیل رو با ماژول SIM800C پیاده کردم. خیلی کاربردهای دیگۀ این چنینی هست که با همین میکروکنترلرها قابل پیاده سازیه. میشه گفت میکروکنترلرهای 8 بیتی مثل AVR و PIC میتونن یه شروع باشن برای ورود افراد علاقه مند به دنیای میکروکنترلرها. خود این موضوع میتونه دلیلی برای استفاده شون باشه. همچنین افرادی که از بردهای آردوینو دارن استفاده میکنن و تعداد این افراد هم توی دنیا کم نیست در واقع دارن از میکروکنترلرهای AVR استفاده می کنن. این خاصیت بردهای آردوینو هست که خودش باعث استفاده از این بردها و در نتیجه میکروکنترلرهای AVR میشه. در آینده به همین نوشته یه بخش با عنوان «کاربردهای میکروکنترلر AVR» اضافه می کنم و اونجا توضیحات بیشتر میدم.

      پاسخ
    • سلام وقت بخیر. خیالتون رو راحت کنم، بطور کلی فکرنکنم هرگز یا حداقل توی نسل ما میکروکنترلرهای ۸ بیتی منسوخ بشن. الان شرکتهای ti, st, nxp و … دارن میکروکنترلرهای ۸ بیتی جدید رو در کنار میکروکنترلرهای ۳۲ بیتی جدید و دیگر میکروکنترلرها تولید میکنن. یعنی اینکه اینها کاربردهای متفاوت دارن.

      پاسخ
  3. سلام پست خیلی خوبی بود. کامل ترین مطلب دربارۀ میکروکنترلرهای AVR. تشکر بابت به اشتراک گذاشتنش. برد توسعه تون هم خیلی طراحی جالبی داره. راهنمای استفاده از این برد رو خوندم. تو این ابعاد این امکانات فوق العاده س. eeprom خارجی و rtc و کانکتور حافظۀ SD و پروگرمر روی برد به همۀ ویژگی هاش می ارزه. این که میشه سون سگمنت و lcd و oled و lcd گرافیکی هم در دو جهت روش قرار داد ویژگی خیلی خوبیه. فقط اون تصاویری که نشون میده LCD و ماژول های مختلف روی چه پایه هایی قرار بگیرن یه مقدار گیج کننده هست. با این برد میشه بدون درگیر شدن با برد برد و سیم کشی و … با اعصاب راحت نشست برنامه ها رو راه انداخت و تست کرد. خیلی عالیه. دستتون درد نکنه

    پاسخ
    • سلام. خواهش میکنم. خیلی ممنون لطف دارید. اون تصاویر هم در آینده درست میشن و تصاویر خیلی گویاتری به جاشون قرار میدیم. زنده باشید.

      پاسخ
  4. سلام واقعا دستتون دردنکنه. من خودم یه چیزایی بلدم. ولی واقعا هر خط رو که خوندم دیدم ارزش داره خط بعدم بخونم چون خیلی نکات رو نمی دونستم. مشخصه خیلی وقت گذاشتید.

    پاسخ
    • سلام. خواهش میکنم. امیدوارم مفید بوده باشه

      پاسخ
  5. سلام مهندس. میکروکنترلر AVR رو خیلی خوب معرفی کردی. مخصوصا بخش تاریخچه رو. خیلی جالب بود. دستت درد نکنه

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

      پاسخ
  6. سلام. خیلی توضیحات خوبی دادید. دستتون درد نکنه. فقط یه سوال دارم. برای پخش صدا میشه از dac میکروکنترلرای avr استفاده کرد؟ ممنونم

    پاسخ
    • سلام. خواهش میکنم. باید ببینید صدایی که میخواد پخش بشه محدودۀ فرکانس چقدره. مثلاً صدای انسان بین 300 تا 3400 هرتزه. باید حد فرکانس رو در نظر بگیرید بینید با تأخیری که با میکروکنترلر میشه ساخت، با دقت بالایی این کارو کرد یا نه. فرض کنید میخواید یه فرکانس 2 کیلو هرتز ایجاد کنید. لازمه یه موج سینوسی با دورۀ تناوب 500 میکروثانیه ایجاد کنید. حالا این مقدار باید تقسیم بر تعداد پله های DAC بشه. مثلاً فرض کنید یه DAC هشت بیتی دارید میخواید از 200 پلۀ اون استفاده کنید. یعنی موج سینوسی رو با 200 تا مقدار بسازید. اون 500 میکروثانیه تقسیم بر 200 میشه. که میشه 2.5 میکروثانیه. پس باید یه تأخیر 2.5 میکروثانیه ای بتونید بسازید تا بشه یه شکل موج سینوسی 2 کیلوهرتز باهاش دربیارید.

      پاسخ
  7. سلام مهندس. قابلیت I/O Multiplexing and Consideration که توضیح دادید شبیه afio توی stm32 هست؟

    پاسخ
    • سلام بله دقیقاً.شبیه Alternate Function IO توی میکروکنترلرهای STM32 هستش.

      پاسخ
  8. سلام مهندس. توی تصویر 15 ماژول esp ورژن 1 رو روی برد avr گذاشتید. روی برد هم دو تا کانکتور میکرو یو اس بی هست. میشه بدون این که از مبدل usb به serial استفاده کنیم، با این برد ماژول esp رو به کامپیوتر متصل کنیم؟ تشکر

    پاسخ
    • سلام. بله میشه این کارو کرد. ولی باید ESP8266 رو روی برد بورد وصل کنید. و پایه های RXو TX اون رو به TX و RX خروجی آی سی CP2102 که به پایه های USART0 میکروکنترلر متصل شده وصل کنید. این پایه ها توی هدرهای نری زیر برد هستند.

      پاسخ
  9. سلام. درباره فیوزبیت ها و آموزششون مطبی دارید؟

    پاسخ
    • سلام. دربارۀ فیوزبیت ها و مقداردهی به اونا در آینده مطلب میذاریم.

      پاسخ
  10. سلام. ولتاژ بند گپ رو توی بخش مقایسه کننده آنالوگ 1.22 ولت نوشتید. توی خود متن "مقایسه کننده آنالوگ" توی وبلاگ نوشتید 2.56 ولت. کدومش درسته؟ ممنون

    پاسخ
    • سلام. 1.22 درسته. اون نوشته هم در اسرع وقت ویرایش میشه

      پاسخ
  11. سلام. ببخشید وقفه ها چطوری باعث کاهش بار سی پی یو میشن؟ توی قسمت وقفه خارجی فرمودید. ممنون

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

      پاسخ

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

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

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

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

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

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

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

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

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

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

شروع بازی ST

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

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

آموزش FreeRTOS یوبرد

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

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

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

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

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

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

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

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

دانلود

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

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