قطعات الکترونیک میکروکنترلر AVR

آموزش میکروکنترلر AVR با کامپایلر Atmel Studio بخش پنجم: اصول پروگرام

نوشته شده توسط علی زاهدی

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

 


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


برای این که برنامه نوشته شده داخل کامپیوتر را بر روی میکروکنترلر اجرا کنید. بایستی ابتدا این برنامه که به یک زبان برنامه نویسی (برای مثال زبان C) نوشته شده است را توسط یک کامپایلر مانند اتمل استودیو کامپایل کنید. به عملیات تبدیل برنامه نوشته شده داخل کامپیوتر به زبان قابل فهم میکروکنترلر (صفر و یک) کامپایل گفته می‌شود. پس از کامپایل عموما یک فایل هگز یا باینری تولید می‌شود. پس از ساخته شدن این فایل بایستی آن را بر روی میکروکنترلر انتقال دهید.  به عملیتات انتقال محتویات فایل hex یا bin به حافظه Flash میکروکنترلر پروگرام گفته می‌شود.

شناخت پروگرام کردن میکروکنترلر AVR - دیجی اسپارک

 


پروگرارمر میکروکنترلر


پروگرامرها دستگاه هایی هستند که عملیات انتقال فایل bin یا hex به حافظه Flash میکروکنترلر را انجام می‌دهند. پروگرامرهای مختلفی در بازار موجود است که می‌تواند عملیات پروگرام را برای میکروکنترلر های AVR انجام دهد. اما از معروف ترین این پروگرامرها میتوان به STK500 و پروگرارمر هاتل اشاره نمود.

پروگرارمر میکروکنترلر AVR - دیجی اسپارک

 

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

پروگرامر هاتل hatel - دیجی اسپارک

 

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

 


پروگرام میکروکنترلرهای DIP و SMD


بر روی اکثر پروگرامرها دو قسمت مختلف برای پروگرام کردن میکروکنترلرها فرار داده شده است (ممکن است در برخی از پروگرامرها این تعداد متفاوت باشد). سوکت بزرگ که برای قرار گیری میکروکنترلر های DIP است و عموما دارای ۴۰ پایه است. این سوکت را ZIF Socket می‌نامند. میکروکنترلر های DIP با توجه به نحوه قرار گیری معرفی شده از سمت سازنده پروگرامر بر روی ‌بر روی این سوکت قرار می‌گیرد و پروگرام‌ می‌شود. برای مثال میکورکنترلر های ATmega16 و ATmega32 به صورت کامل پایه های این سوکت را پر می‌کنند.

پروگرام میکروکنترلرهای DIP و SMD - دیجی اسپارک

 

اما این روش برای میکروکنترلر های SMD دیگر قابل استفاده نیست. میکروکنترلر های SMD به ۲ روش قابل پروگرام هستند. روش اول استفاده از تبدیل هایی است که این میکروکنترلر ها را به پکیج DIP تبدیل می‌کند. اصتلاحا به این نوع تبدیل ها “آداپتور” نیز گفته می‌شود.

زیپ کیپ SMD میکروکنترلر - دیجی اسپارک

 

سپس مجددا بر روی ZiF Socket قرار گرفته و پروگرام‌ می‌شود. اما روش دوم استفاده از پایه های ISP است که این امکان را به شما می دهد تا میکروکنترلر را بر روی برد پروگرام کنید. این پایه ها عبارتند از؛

  • VCC
  • GND
  • Reset
  • SCK
  • MISO
  • MOSI

 


فیوز بیت‌ها در میکروکنترلرها


در بخش قبلی این آموزش ها راجع به فیوز بیت ها توضیحاتی داده شد! همانطور که گفته شد برای انتخا منبع کلاک میکروکنترلر فیوزبیت هایی وجود دارد که قبل از پروگرام بایستی آنها را تنظبم کنید. تا زمانی که میکروکنترلر روشن می‌شود مستقیما به سراغ منبع کلاک انتخاب شده و کار خود را ادامه دهد. ۴ فیوزبیت با نام CKSEL وجود دارد. این فیوز بیت ها دارای مقدار پیش فرض CKSEL = 0001 است. این مقدار بیانگر این است که کلاک پیش فرض میکروکنترلر از اسلاتور RC داخلی با فرکانس ۱ مگاهتز تنظیم می‌شود.

فیوز بیت ها در میکروکنترلرها - دیجی اسپارک

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

کریستال و سرعت کلاک میکروکنترلرها - دیجی اسپارک

برای انتخاب کلاک میکروکنترلر بایتسی فیوزبیت های CKSEL و CKOUT را تغییر دهید. برای مثال برای کلاک ۸ مگاهرتز داخلی بایستی رجیستر های CKSEL برابر مقدار ۰۰۱۰ قرار گیرد. که در تصویر زیر نیز این موارد مشخص شده است. توجه داشته باشید در صورت تنظیم اشتباه این فیوز بیت ها ممکن است میکرو از دسترس خارج شود و دیگر توسط پروگرامرهای معمولی شناسایی نشود. بنابراین در تنظیم این فیوز بیت ها دقت کنید.

فیوزبیت های CKSEL و CKOUT در پروگرام کردن میکرو - دیجی اسپارک

 


جمع بندی


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

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

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

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

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

تبادل نظر و رفع عیب با ثبت دیدگاه