AVR, آموزش, توصیه شده, مقاله

آموزش میکروکنترلر AVR : قسمت اول

آموزش میکروکنترلر AVR

آموزش میکروکنترلر AVR : مقدمه

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

سیسوگ در سری جدید مجموعه مقالات با عنوان ” آموزش میکروکنترلر AVR ” قصد دارد میکروکنترلر AVR که طرفداران بسیاری دارد را آموزش دهد. در مجموعه آموزش میکروکنترلر AVR با سیسوگ همراه باشید.

 

آموزش میکروکنترلر AVR

در یک سیستم پردازنده حداقل اجزایی که وجود دارد شامل (CPU (central prossesing unit می‌شود، در واقع این پرازنده شبیه مغز انسان عمل می‌کند مغزی که هیچ گونه اجزای جانبی برای مثال دست و پا ندارد و فقط محاسبات در درون آن انجام می‌شود. برای ارتباط با دنیای بیرون باید اجزای جانبی دیگری نیز وجود داشته باشد، از جمله پالس ساعت یا clock که از حداقل اجزایی که است که CPU باید تحت فرماندهی آن قرار بگیرد. یعنی پالس ساعت به CPU فرمان می‌دهد و اعمال CPU هماهنگ با پالس ساعت انجام می­‌شود. طبیعتاً هر آنچه پالس ساعت بالاتر باشد مقدار اعمال انجام شده توسط CPU  در واحد زمان بیشتر است، اما این همه‌ی مسئله نیست ممکن است میکروکنترلری با کلاک  1MHZ بتواند عملیاتی را انجام دهد که یک میکروکنترلر با کلاک 5MHZ نتواند همان عملیات را در یک زمان ثابت انجام دهد. در ادامه به بررسی این عوامل می‌پردازیم.

CPU  برای ذخیره دستورالعمل‌ها نیاز به حافظه‌ای دارد که پایدار و غیر فرار باشد (منظور از دستور العمل‌ها دستورهای اولیه‌ای هستند که توسط شرکت سازنده به CPU اعمال می‌شوند) یعنی با قطع تغذیه محتویات آن پاک نشود، که به آن حافظه ی ROM گفته می‌شود.

واحد محاسبه و منطقی در CPU وجود دارد که به آن ALU  گفته می‌­شود، برای مثال نتیجه­ یک دستور العمل این است که دوعدد توسط ALU با هم جمع شوند یا کلاً هر عملی که در توان واحد ALU باشد.

به پروسه خواندن دستورات و بدست آوردن آن‌ها از محلی که نوشته شده است FETCH و اجرا کردن آن‌ها EXECUTE گفته می‌شود. در واقع کارCPU ،FETCH و EXECUTE است و دائماً مشغول خواندن و اجرا کردن دستورات است.

با توجه به اینکه CPU  چه امکانات و دستورالعمل‌هایی دارد قدرت آن CPU مشخص می­شود، یعنی در آن واحد می‌تواند روی چند بیت عملیات انجام دهد. بحث ما در حوزه­ی AVR  بر روی CPU 8 بیتی انجام می‌شود، یعنی در آن واحد روی 8 بیت می‌تواند عملیات انجام دهد، حال این 8 بیت می‌تواند به صورت 2 عدد 8 بیتی در رجیسترهای داخلی باشد (منظور از رجیسترهای داخلی حافظه‌ای است که در کنار CPU  برای انجام عملیات داخلی قرار دارد).

در کنار CPU وROM و CLOCK ما نیاز به حافظه‌ای داریم که بتواند نتیجه عملیات را به صورت موقت ذخیره کند که از آن به صورت R0 تا R31 نام می‌بریم که شامل 32 محل در میکروکنترلر AVR  است. طبیعتاً ممکن است به حافظه بیشتری از جنس RAM نیاز داشته باشیم. جنس حافظه ROM ،FLASH است و جنس حافظه RAM، SRAM است که از این حافظه برای ذخیره سازی عملیات انجام شده استفاده می­‌شود. در ضعیف‌ترین عضو خانواده AVR، ATtiny11 اصلاً SRAM وجود ندارد که این میکروکنترلر در بازار موجود نیست. با مراجعه به دیتا‌شیت می‌توانید از ظرفیت‌های دیگر میکروکنترلرها مطلع شوید.

Attiny11

یکی دیگر از اجزای جانبی موجود در کنار CPU حافظه­‌ی (EEPROM (electrically Erasable Programmable Read only Memory است. این حافظه معمولاً برای ذخیره‌سازی اطلاعاتی است که توسط کاربر تولید می‌شود. برای مثال سیستم کنترلی را در نظر بگیرید که میخواهیم مقادیر یک سری پارامتر در آن نوشته شود و در آن باقی بماند، یعنی با قطع برق آن اطلاعات پاک نشود. مقادیر خواندن و نوشتن آن در دیتا شیت موجود می‌باشد.

CPU اگر نتواند با دنیای خارج از خود ارتباط برقرار کند مانند انسانی است که حواس پنج گانه خود را از دست داده است و نمی‌تواند با دیگران ارتباط برقرار کند. برای همین کار یک واحدی در CPU وجود دارد به نام INPUT/OUTPUT ،که دریچه­‌ی بین دنیای بیرون و خود CPU است. که از آن به عنوان GPIO یاد می‌شود.

در نتیجه برنامه‌­ای که توسط برنامه‌نویس توسط هر زبانی نوشته می‌­شود، توسط پروگرامر بر روی حافظه­ FLASH میکروکنترلر، پروگرام می‌شود و نتیجه عملیات موقت در حین اجرای برنامه در SRAM ذخیره می­شود. دیتاهایی که توسط برنامه تولید می­‌شود و می‌خواهیم که یکبار ذخیره شود و با قطع برق پاک نشود در EEPROM ذخیره می‌­شود که این کار توسط CPU انجام می­‌شود. همه­ این عملیات بر این است که بتوان ارتباط بین دنیای بیرون و CPU را ایجاد کرد.

تصویر زیر نشان دهنده­ ارتباط بین CPU و واحدهای جانبی است:

ارتباط بین CPU و واحدهای جانبی

در قسمت دوم آموزش میکروکنترلر AVR سیسوگ قصد دارد به موضوع کلاک میکروکنترلر و بلوک I/O بپردازد. با سیسوگ همراه باشید.

 

 

نوشته های مشابه

4 دیدگاه در “آموزش میکروکنترلر AVR : قسمت اول

  1. سعید گفت:

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

    1. زئوس Zeus زئوس Zeus گفت:

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

  2. Cozmo گفت:

    سلام
    یسوال داشتم
    چطور میشه از کانتر داخلی avr استفاده کرد؟
    منظورم این نیس که یه متغیر رو تو برنامه ای که برا اینتراپت مینویسیم زیاد کنیم هر بار
    از کانتر avr استفاده بشه

    1. زئوس Zeus زئوس Zeus گفت:

      فکر میکنم منظورتون تایمر کانتر هست ، دقیقا در ادامه آموزش ها به مورد تایمر کانتر ها خواهیم رسید ؛
      اما خوندن مقدار کانتر کار سختی نیست و تنها باید رجیستر مربوطه رو بخونید. البته اگر منظورتون رو درست متوجه شده باشم.

دیدگاهتان را بنویسید

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