آموزش کاربردی AVR - بخش اول

آموزش کاربردی AVR - بخش اول

آموزش کاربردی AVR - بخش اول
آموزش کاربردی AVR - بخش اول

در آموزش کاربردی  AVR می‌خواهیم به زبان خیلی ساده، نحوه کارکرد میکروکنترلر و میکروپروسسور‌ها را بررسی کنیم. به همین دلیل، خیلی وارد مباحث فنی و پیچیده نمی‌شویم و با یک دید کلی در مورد نحوه عملکرد و تاریخچه آن‌ها پیش می‌رویم، با سیسوگ همراه باشید.

در آموزش کاربردی AVR قصد داریم، تاریخچه‌ای از آن را نیز ارائه کنیم. هر چند، شاید ندانستن تاریخچه‌ی یک وسیله، برای کار با آن چندان اهمیتی نداشته باشد. مخصوصاً وقتی که شما تشنه‌ی یادگیری هستید و می‌خواهید هر چه زودتر به سراغ آموزش اصلی بروید! اما به عنوان یک مهندس الکترونیک، هر چقدر به پیشینه و روند ساخت یک دستگاه آشناتر باشید، می‌توانید هوشمندانه‌تر عمل کنید. همین طور بد نیست کمی از تاریخچه پیشرفت تکنولوژی آن را نیز بدانید!

 

ریزپردازنده (میکروپروسسور) به‌زبان ساده!

اول از همه به این نکته توجه داشته باشید که میکروکنترلر و میکروپروسسور با یکدیگر تفاوت دارند. در ادامه با تفاوت هر دو آشنا خواهید شد. ریزپردازنده یا میکروپروسسور (Microprocessor) تراشه بسیار کوچکی است که می‌تواند عملیات مربوط به حساب و منطق را انجام دهد. ریزپردازنده همان CPU معروف یا مغز متفکر یک کامپیوتر است. از آنجایی که معمولاً یک پردازنده اصلی، در سیستم‌ها مدیریت کل را به عهده می‌گیرد، به آن واحد پردازش مرکزی یا CPU نیز می گویند. شما می‌توانید بسته به نوع پردازنده یک یا چند ورودی باینری به ریزپردازنده بدهید و از او بخواهید که عملیات‌های مختلفی مثل جمع، تفریق، ضرب، شیفت، مقایسه و… را روی آن‌ها انجام بدهد.

میکروپروسسور عملیات خواستهشده را بر روی ورودی‌ها انجام داده و نتیجه را به شما تحویل می‌دهد. اگر می‌خواهید بدانید CPU یا همان ریزپردازنده، چگونه این کار را انجام می‌دهد، لازم است تا ابتدا مروری کوتاه بر درس مدار منطقی داشته باشیم و سپس در ادامه نحوه عملکرد CPU را توضیح خواهیم داد.

 

مروری بر درس مدار منطقی

در دانشگاه، پیش نیاز درس میکروکنترلر مدار منطقی است. توصیه می‌کنم قبل از ادامه آموزش کاربردی AVR این درس را حتماً مروری داشته باشید. اگر شما این درس را مطالعه کرده باشید، حتماً می دانید که مدارات دیجیتال با استفاده از اجزای بسیار کوچکی به نام گیت‌های منطقی ساخته می‌شوند. این گیت‌ها معمولاً عملیات‌های ساده‌ای مثل AND, OR, XOR و… را برای شما انجام می‌دهند. ساختار گیت‌ها ساده است و با استفاده از چند ترانزیستور ساخته می‌شوند. ساختار گیت‌های منطقی ابتدایی و پایه به شکل زیر است:
 

 

گیت‌های منطقی می‌توانند تعداد ورودی‌های بیشتری نیز داشته باشند. همانطور که در شکل بالا می‌بینید، وقتی ورودی دیجیتال (سطح ولتاژ منطقی) به پایه‌های گیت متصل می‌شود، در همان لحظه می‌توانید خروجی را دریافت کنید. برای مثال، تنها هرگاه هر دو پایه گیت AND همزمان یک باشند، خروجی یک دریافت خواهد شد.
 
 

مدارات ترکیبی

گیت‌های منطقی، در واقع مثل اجزای بازی لگو هستند که شما با ترکیب آن‌ها می‌توانید مدار و منطق دلخواه خودتان را پیاده سازی کنید. محاسبات ریاضی مثل جدول کارنو، قوانین جبر بول و… وجود دارند که به شما در طراحی و ساده سازی این‌گونه مدارات بسیار کمک می‌کنند. به این ترتیب می‌توان مداراتی برای تفریق، ضرب و… باینری ساخت. چنین مداراتی، از آنجایی که با ترکیبی از گیت‌های منطقی ساخته می‌شوند، مدارات ترکیبی نامیده می‌شوند. برای مثال شما می‌توانید مدار تمام جمع کننده باینری را با استفاده از این گیت‌ها به شکل زیر پیاده سازی کنید:
 

مدار تمام جمع کننده باینری

 

خصوصیت مدارهای ترکیبی این است که خروجی آن، به مقدار ورودی در همان لحظه وابسته است. یعنی شما هر ورودی در این لحظه به آن بدهید، در همان موقع نتیجه را در خروجی دریافت خواهید کرد.

 

مدارات ترتیبی

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

مدار فلیپ فلاپ

 

نحوه عملکرد CPU

همان‌طور که در بالاتر نیز به آن اشاره شد، به کمک گیت‌های منطقی می‌توان عملیات‌های منطقی و حسابی مختلفی مثل جمع و تفریق و مقایسه و… را انجام داد. در میکروپروسسور بخشی بانام ALU یا واحد منطق و حساب وجود دارد. میکروکنترلر در طی سال‌ها پیشرفت بسیار زیادی کرده است، اما تقریباً می‌توان گفت با ترکیبی از همین مدارات ترکیبی و ترتیبی و باس‌ها و… می‌توان یک ALU را به وجود آورد. برای مثال، مدار ALU ساده یک تراشه چهار بیتی 74181 به‌صورت زیر است:

مدار محاسبه و منطق ALU 74181

 

واحد محاسبه و منطق تنها یکی از واحدهای CPU است و با نماد زیر به‌صورت خلاصه در مدار نمایش داده می‌شود:

نماد واحد محاسبه و منطق ALU

 

حال، به بلوک دیاگرام کل CPU دقت کنید:

 

بلوک دیاگرام ساده CPU

 

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

 

میکروکنترلر چیست؟

اگر شما تغذیه یک CPU را متصل کنید، هیچ اتفاقی نمی‌افتد. زیرا یک CPU خود به تنهایی کاری را انجام نمی‌دهد. یک CPU برای اینکه بتواند کار کند، به اجزای دیگری مثل RAM،ROM، پورت‌های I/O و… نیز احتیاج دارد. برای مثال، تراشه Z80 CPU را در نظر بگیرید. این تراشه تنها کار ریزپردازنده را انجام می‌داد. شما برای اینکه بتوانید به وسیله آن یک کامپیوتر ساده بسازید، باید مداری مشابه مدار زیر را می‌بستید:

 

کامپیوتر Z80

 

میکروکنترلر، تراشه‌ای است که تمام اجزای بالا را درون خود جای‌داده است! میکروکنترلر درواقع یک مینی کامپیوتر است که تمام اجرای موردنیاز برای راه‌اندازی مثل RAM،ROM، پورت‌های I/O و… را دارد! یعنی شما یک تراشه کوچک و ارزان‌قیمت در دست دارید که تنها با متصل کردن تغذیه آن، روشن‌شده و برنامه‌ای که شما برایش نوشتید را اجرا می‌کند! قسمت عمده‌ای از کار مدار بالا را می‌توان تنها با تراشه زیر انجام داد!

میکروکنترلر AVR در پکیج DIP

 

میکروپروسسورها نه تنها باعث کاهش چشمگیر حجم مدار می‌شوند، بلکه هزاران مزیت دیگر نیز دارند. ازجمله این مزیت‌ها می‌توان به کاهش هزینه نهایی، کاهش جریان مصرفی، عیب‌یابی و توسعه راحت‌تر و… نیز اشاره کرد.

میکروپروسسورها در ابعاد و اندازه‌های مختلف، با ویژگی‌های متفاوت عرضه شده‌اند.
شما با استفاده از این کامپیوترهای کوچک و ارزان می‌توانید کارهای فوق‌العاده زیادی را انجام دهید. هر چند، توانایی CPU، RAM و… یک میکروکنترلر مثل AVR اصلاً قابل مقایسه با کامپیوتر رومیزی نیست! اما هر وسیله‌ای کاربردهای خاص خودش را دارد. شما در AVR پایه‌های ورودی و خروجی دیجیتال، رابط‌های مختلفی مثل UART، I2C، SPI و… دارید که می‌توانید از آن برای کنترل یک سلف، نمایشگر LCD، رله (Relay)، سوییچ یا حسگرهای مختلف مانند سنسور رطوبت، دما، ولتاژ و … استفاده کنید.

برای مثال در پروژه‌هایی مثل ماشین لباسشویی‌های هوشمند، گلخانه‌های هوشمند، کنترل از راه دور، اینترنت اشیاء، بردهای آردوینو و… سروکله‌ی میکروکنترلرها پیدا می‌شود.

 

تفاوت میکروکنترولر و میکروپروسسور

اگر تا اینجای مقاله را مطالعه کرده باشید، احتمالاً جواب این سؤال را می‌دانید!

برخی از تفاوت‌های میکروکنترلر و میکروپروسسور:

  • میکروپروسسور تنها شامل CPU است، در حالی که میکروکنترلر اجزای دیگری مثل RAM، ROM واحدهای جانبی و… دیگری نیز دارد.
  • حافظه و بسیاری از مشخصات دیگر میکروپروسسورها را می‌توان افزایش داد، اما برای تعویض یا ارتقای یک ویژگی در میکروکنترلر، آن میکروکنترلر می‌بایست از عمل مورد نظر پشتیبانی کند.
  • طراحی و عیب یابی یک مدار با استفاده از میکروکنترلر بسیار ساده‌تر از طراحی آن با میکرو پروسسور است.

توجه داشته باشید که این مقایسه به این معنا نیست که شما باید یکی از این دو را کنار بگذارید، هر کدام از آن‌ها خواص و ویژگی‌هایی دارند که می‌توان از آن در جای مربوطه استفاده کرد.

 

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

اولین میکروکنترلر بانام 4004 در سال 1971 توسط شرکت intel ساخته شد. این میکروکنترلر 4 بیتی بود و تنها چهار عمل اصلی را انجام می‌داد. منظور از چهار بیتی بودن این است که میکروکنترلر با هر پالس ساعت، چهار بیت یا نیم بایت (یک نیبل nibble) را پردازش می‌کند. این میکروکنترلر تنها به‌عنوان اولین میکروکنترلر شناخته می‌شود، اما اولین میکروکنترلر کاربردی بانام 8080 از همان شرکت در سال 1980 روانه بازار شد. میکروکنترلرها عموماً برای کاربردهای کوچک طراحی می‌شوند، بنابراین برخلاف ریزپردازنده‌ها، در این‌جا مهم‌ترین مسائل، سادگی و مصرف کم‌توان است. پس‌ازآن نیز صنعت میکروکنترلر پیشرفت بسیار زیادی کرد و میکروکنترلر هایی مثل 8051، AVR،PIC،ARM و… روانه بازار شدند.

 

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

دو دانشجو به نام‌های Vegard Wollan و Alf-Egil Bogen در دانشگاه علوم و فناوری نروژ برای اولین بار معماری داخلی AVR را طراحی کردند. از آنجایی که معماری داخلی AVR، از نوع RISC بود، با ترکیب حروف اول نام این دو دانشجو با R کلمه RISC، نام مخفف AVR به وجود آمد. در سال 1996 شرکت ATMEL امتیاز این میکروکنترلر را خریداری کرد.

 

مخترعین AVR

 

با توجه به اینکه AVR ساختار داخلی ساده‌ای دارد، می‌توان آن را برای یادگیری و شروع ورود به دنیای میکروکنترلرها انتخاب کرد. فرض کنید بتوانید با استفاده از یک میکروکنترلر کامپیوتر کوچک خودتان را بسازید و وظایفی رو به آن بسپارید تا برایتان انجام بدهد. قطعاً خیلی جذاب خواهد بود. همچنین از آن جایی که AVR در دو پکیج DIP و SMD ساخته می‌شود. بنابراین شما هم قادر خواهید بود تا آن را بر روی بِرد بُرد تست کنید، و هم می‌توانید با استفاده از آن بردهای خیلی کوچک بسازید.
 
در قسمت بعد آموزش، به‌طور خاص به معماری داخلی میکروکنترلر AVR می‌پردازیم.

1 نفر

پــــســنــدیـده انـد

توجه

Digi Boy
Digi Boy

به دانش فزای و به یزدان گرای، که او باد جان تو را رهنمای (فردوسی)

دیدگاه ها

2 دیدگاه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک