آموزش میکروکنترلر 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 وجود ندارد که این میکروکنترلر در بازار موجود نیست. با مراجعه به دیتاشیت میتوانید از ظرفیتهای دیگر میکروکنترلرها مطلع شوید.
یکی دیگر از اجزای جانبی موجود در کنار CPU حافظهی (EEPROM (electrically Erasable Programmable Read only Memory است. این حافظه معمولاً برای ذخیرهسازی اطلاعاتی است که توسط کاربر تولید میشود. برای مثال سیستم کنترلی را در نظر بگیرید که میخواهیم مقادیر یک سری پارامتر در آن نوشته شود و در آن باقی بماند، یعنی با قطع برق آن اطلاعات پاک نشود. مقادیر خواندن و نوشتن آن در دیتا شیت موجود میباشد.
CPU اگر نتواند با دنیای خارج از خود ارتباط برقرار کند مانند انسانی است که حواس پنج گانه خود را از دست داده است و نمیتواند با دیگران ارتباط برقرار کند. برای همین کار یک واحدی در CPU وجود دارد به نام INPUT/OUTPUT ،که دریچهی بین دنیای بیرون و خود CPU است. که از آن به عنوان GPIO یاد میشود.
در نتیجه برنامهای که توسط برنامهنویس توسط هر زبانی نوشته میشود، توسط پروگرامر بر روی حافظه FLASH میکروکنترلر، پروگرام میشود و نتیجه عملیات موقت در حین اجرای برنامه در SRAM ذخیره میشود. دیتاهایی که توسط برنامه تولید میشود و میخواهیم که یکبار ذخیره شود و با قطع برق پاک نشود در EEPROM ذخیره میشود که این کار توسط CPU انجام میشود. همه این عملیات بر این است که بتوان ارتباط بین دنیای بیرون و CPU را ایجاد کرد.
تصویر زیر نشان دهنده ارتباط بین CPU و واحدهای جانبی است:
در قسمت دوم آموزش میکروکنترلر AVR سیسوگ قصد دارد به موضوع کلاک میکروکنترلر و بلوک I/O بپردازد. با سیسوگ همراه باشید.
بسیار ممنون از شما ، بعنوان یک فرد آماتور از اینکه حوصله می فرمایند و با جزییات مطالب را بگونه ای قابل فهم حتی برای امثال بنده ارایه می نمایند سپاسگزارم و بسیار استفاده می کنم.
سلام بسیار بسیار ممنون از شما.لطفا اسم سایت رو هم میفرماید
سلام اسم سایت چی؟
خیلی خیلی ممنون از لطفتان
سلام من فیلم ها یک بار دیدم و از طریق کانال آقای کی نژاد با سایت شما آشنا شدم . نوشتن گفتار ایشان توسط شما کار بسیار ارزشمندی برای من بود و قصد انجام دادن آنرا خودم داشتم که شما زحمت آنرا کشید ، امیدوارم لطفتان ادامه داشته باشد ممنون.
سلام دوست عزیز
دقیقا ما هم به همین خاطر دست به چنین کاری زدیم ، واقعا حیف هست که این چنین آموزش های با کیفیتی قابل جستجو در طریق موتور های جستجو نباشند.
سلام
یسوال داشتم
چطور میشه از کانتر داخلی avr استفاده کرد؟
منظورم این نیس که یه متغیر رو تو برنامه ای که برا اینتراپت مینویسیم زیاد کنیم هر بار
از کانتر avr استفاده بشه
فکر میکنم منظورتون تایمر کانتر هست ، دقیقا در ادامه آموزش ها به مورد تایمر کانتر ها خواهیم رسید ؛
اما خوندن مقدار کانتر کار سختی نیست و تنها باید رجیستر مربوطه رو بخونید. البته اگر منظورتون رو درست متوجه شده باشم.