در آموزش های قبلی سلسله آموزش های میکروکنترلر های AVR به معرفی خانواده AVR، کامپایلر Atmel Studio و انواع حافظه ها در این خانواده از میکروکنترلر ها پرداخیتم. در این بخش و بخش های بعدی قصد داریم تا ساختار داخلی AVR این خانواده از میکروکنترلر ها و همچنین کد نویسی بر روی این خانواده میکروکنترلر ها بپردازیم. در ادامه با با مرجع تخصصی میکرو AVR به زبان فارسی، دیجی اسپارک همراه باشید.
ساختار داخلی AVR
در میکروکنترلر های AVR برای افزایش کارایی از معماری Harvard، به همراه حافظه های جداگانه برای دیتا های محاسبه شده و برنامه استفاده شده است. عملکرد این معماری به گونه ای است که در هر سیکل کلاک فقط یک دستور اجرا میشود. ساختار میکروکنترلر های خانواده AVR همانند تصویر زیر است.
میکروکنترلر های AVR، دارای ۳۲ رجیستر همه منطوره هستند. این رجیستر ها تنها در یک سیکل از کلاک در دسترس هستند. در این صورت واحل ALU میتواند عملیات ها را در یک سیکل انجام دهد.
واحد ALU
واحد محاسبه و منطق ALU (Arithmetic Logic Unit) یک مدار ترکیبی دیجیتال است که عملیت حساب و منطق را انجام میدهد. این واحد به صورت مستقیم با ۳۲ رجیستر همه منطوره ارتباط دارد. همانطور که گفته شد عملیات های ریاضی در این واحد انجام میشود. عملیات های ALU به ۳ دسته عملیات های ریاضی، منطقی و بیتی تقسیم میشود.
رجیسترهای همه منظوره میکروکنترلر
این رجیسترهای برای احرای بهینه دستورات در میکروکنترلر های AVR طراحی شدهاند. اکثر این دستورات مستقیما به تمامی رجیستر ها دسترسی دارند. هر یک از این رجیستر ها یک آدرس از حافظه Ram را به خود اختصاص دادهاند. در حقیقت ۳۲ محل اول حافظه SRAM محل ذخیره سازی مقادیر این رجیسیتر ها است.
برای دریافت اطلاعات بیشتر راجع به این رجیستر ها میتوانید به داکیومنت های منتظر شده از سمت شرکت Atmel مراجعه کنید. در این آموزش تنها قصد معرفی این رجیستر ها را به شما داریم و ادامه مطالب بصورت پروژه محور در اختیار شما قرار میگیرد.
منابع کلاک میکروکنترلرهای AVR
میکروکنترلر های AVR دارای چهار منبع Clock هستند، که به کمک فیوز بیت های موجود در حافظه Flash قابل دسترسی هستند. بایستی توجه داشته باشید که در قسمت تنظیم فیوزبیت ها عدد ۱ به معنای بیت برنامه ریزی نشده است و عدد ۰ به معنای بیت برنامه ریزی شده است.
میکروکنترلر با مقادیر پیشفرض CKSEL = 0001 طراحی میشوذ. بنابراین در حالت پیشفرض کلاک میکروکنترلر، از اسیلاتور RC داخلی ۱ مگاهرتز است. این مقدار امکان تغیر منبع کلاک را برای کاربران توسط پروگرامر های موازی و ISP را فراهم میکند. هنگام تنظیم این فیوزبیت ها بایستی بسیار دقت کنید. زیرا در صورت اشتباه پروگرام کردن این فیوزبیت ها دیگر میکروکنترلر توسط پروگرامر شناخته نخواهد شد.
اسیلاتور خارجی
پایه های XTAL1 و XTAL2 پایه های تقویت کننده اسلاتور هستند. که میتوان یک کریستال کوارتز یا نوسانگر سرامیکی به این پایه ها متصل نمود (مطابق شکل زیر). فیوز بیت CKOUT دو حالت مختلف برای تقویت کننده اسیلاتور ایجاد میکند. در صورتی که این فیوز بیت برنامه ریزی شود، خروجی اسلاتور میتواند در محدوده بیشتری نوسان کند. این حالت برای شرایط با نویز بالا مناسب است. اما زمانی که این بیت برنامه ریزی نشود، خروحی اسیلاتور در محدوده کوچکتری نوسان میکند. بنابر این باعث توان مصرفی دچار کاهش قابل توجهی میشود.
در صورت عدم برنامه ریزی بیت CKOUT حداکثر فرکانس برای نوسانگر ۸ مگاهرتز است. و در صورت برنامه ریزی این بیت مقدار فرکانس نوسانگر به ۱۶ مگاهرتز افزایش پیدا میکند.
لوازم مورد نیاز
جمع بندی
در این آموزش به بررسی ساختار داخلی avr میکروکنترلر های AVR پرداختیم. ممکن است در شورع یادگیری میکروکنترلر های AVR این حس که ممکن است این مطالب کاربردی نباشد را داشته باشید. اما این مورد کاملا یک تفکر اشتباه است. برای کار با هر میکروکنترلر ها بایستی از ساختار داخلی avr آن میکروکنترلر کمی اطلاعات داشته باشید. این اطلاعات در استفاده بهینه از این میکروکنترلر ها به شما کمک میکند. در این بخش از سلسله آموزش میکروکنترلر های AVR مواردی از جمله رجیستر ها و منابع کلاک میکروکنترلر های AVR مورد بررسی قرار گرفت. منبع برخی از مطالب این آموزش کتاب میکروکنترلر های AVR از مهندس رهافروز است.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید. بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.