در بخش قبلی سلسله آموزش میکروکنترلر های AVR ساختار داخلی این خانواده را مورد بررسی قرار دادیم. اما برای شروع کار با هر میکروکنترلر بایستی ایتدا اصول پروگرام کردن آن میکروکنترلر را بیاموزید. در تیم بخش از سلسله آموزش میکروکنترلر های AVR قصد داریم تا نحوه پروگرام کردن این خانواده از میکروکنترلر ها را مورد بررسی قرار دهیم. در ادامه با با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.
شناخت پروگرام کردن میکروکنترلر
برای این که برنامه نوشته شده داخل کامپیوتر را بر روی میکروکنترلر اجرا کنید. بایستی ابتدا این برنامه که به یک زبان برنامه نویسی (برای مثال زبان C) نوشته شده است را توسط یک کامپایلر مانند اتمل استودیو کامپایل کنید. به عملیات تبدیل برنامه نوشته شده داخل کامپیوتر به زبان قابل فهم میکروکنترلر (صفر و یک) کامپایل گفته میشود. پس از کامپایل عموما یک فایل هگز یا باینری تولید میشود. پس از ساخته شدن این فایل بایستی آن را بر روی میکروکنترلر انتقال دهید. به عملیتات انتقال محتویات فایل hex یا bin به حافظه Flash میکروکنترلر پروگرام گفته میشود.
پروگرارمر میکروکنترلر
پروگرامرها دستگاه هایی هستند که عملیات انتقال فایل bin یا hex به حافظه Flash میکروکنترلر را انجام میدهند. پروگرامرهای مختلفی در بازار موجود است که میتواند عملیات پروگرام را برای میکروکنترلر های AVR انجام دهد. اما از معروف ترین این پروگرامرها میتوان به STK500 و پروگرارمر هاتل اشاره نمود.
برخی پروگرامر ها این قابلیت را دارند که به نرم افزار کامپایلر که مورد استفاده قرار داده اید متصل شده و پس از کامپایل مستقیما عملیات پروگرام هم انجام شود. اما برخی از پروگرامرها مانند پروگرامر هاتل نرم افزار مخصوص خود را دارند. روند عملکرد این پروگرارمرها به این صورت است که پس از کامپایل بایستی فایل هگز ساخته شده را به این نرم افزار اضافه کنید و سپس عملیات پروگرام را انجام دهید.
اما پروگرامرهای بازار به همین ۲ نوع محدود نمیشوند. انواع مختلفی از پروگرامرها برای میکروکنترلرهای AVR موجود است. با توجه به پروگرامری که تهیه میکند. روش پروگرام کردن میکروکنترلر ممکن است با روش های دیگر کمی متفاوت باشد. که در این صورت بایستی از فایل آموزشی پروگرامر خریداری شده استفاده کنید.
پروگرام میکروکنترلرهای DIP و SMD
بر روی اکثر پروگرامرها دو قسمت مختلف برای پروگرام کردن میکروکنترلرها فرار داده شده است (ممکن است در برخی از پروگرامرها این تعداد متفاوت باشد). سوکت بزرگ که برای قرار گیری میکروکنترلر های DIP است و عموما دارای ۴۰ پایه است. این سوکت را ZIF Socket مینامند. میکروکنترلر های DIP با توجه به نحوه قرار گیری معرفی شده از سمت سازنده پروگرامر بر روی بر روی این سوکت قرار میگیرد و پروگرام میشود. برای مثال میکورکنترلر های ATmega16 و ATmega32 به صورت کامل پایه های این سوکت را پر میکنند.
اما این روش برای میکروکنترلر های SMD دیگر قابل استفاده نیست. میکروکنترلر های SMD به ۲ روش قابل پروگرام هستند. روش اول استفاده از تبدیل هایی است که این میکروکنترلر ها را به پکیج DIP تبدیل میکند. اصتلاحا به این نوع تبدیل ها “آداپتور” نیز گفته میشود.
سپس مجددا بر روی ZiF Socket قرار گرفته و پروگرام میشود. اما روش دوم استفاده از پایه های ISP است که این امکان را به شما می دهد تا میکروکنترلر را بر روی برد پروگرام کنید. این پایه ها عبارتند از؛
- VCC
- GND
- Reset
- SCK
- MISO
- MOSI
فیوز بیتها در میکروکنترلرها
در بخش قبلی این آموزش ها راجع به فیوز بیت ها توضیحاتی داده شد! همانطور که گفته شد برای انتخا منبع کلاک میکروکنترلر فیوزبیت هایی وجود دارد که قبل از پروگرام بایستی آنها را تنظبم کنید. تا زمانی که میکروکنترلر روشن میشود مستقیما به سراغ منبع کلاک انتخاب شده و کار خود را ادامه دهد. ۴ فیوزبیت با نام CKSEL وجود دارد. این فیوز بیت ها دارای مقدار پیش فرض CKSEL = 0001 است. این مقدار بیانگر این است که کلاک پیش فرض میکروکنترلر از اسلاتور RC داخلی با فرکانس ۱ مگاهتز تنظیم میشود.
ممکن است که این سوال برای شما پیش آید که از کدام یک از منابع کلاک بایستی استفاده کنیم؟ آیا هرچه سرعت کلاک میکروکنترلر بیشتر باشد عملکرد آن نیز بهتر خواهد بود؟ و هزاران سوال مشابه دیگر… نکته قابل توجه این است که انتخاب منبع کلاک کاملا به پروژه بستگی دارد. همانطور که قبلا گفته شد، هرچه بازه نوسان اسیلاتور میکروکنترلر بیشتر باشد، توان مصرفی آن نیز به مراتب بیشتر خواهد بود. بنابراین بالا بودن فرکانس در پروژه هایی که توان مصرفی پایین مورد نیاز است، کار منطقی نخواهد بود. اما در پروژه دیگر ممکن است نیاز به بروزرسانی سریع یک نمایشگر یا خواندن یک ورودی با سرعت بالا باشد. در این زمان مهم است که فرکانس در بالا ترین حد ممکن انتخاب شود.
برای انتخاب کلاک میکروکنترلر بایتسی فیوزبیت های CKSEL و CKOUT را تغییر دهید. برای مثال برای کلاک ۸ مگاهرتز داخلی بایستی رجیستر های CKSEL برابر مقدار ۰۰۱۰ قرار گیرد. که در تصویر زیر نیز این موارد مشخص شده است. توجه داشته باشید در صورت تنظیم اشتباه این فیوز بیت ها ممکن است میکرو از دسترس خارج شود و دیگر توسط پروگرامرهای معمولی شناسایی نشود. بنابراین در تنظیم این فیوز بیت ها دقت کنید.
جمع بندی
در این آموزش به بحث مربوط به پروگرامر و فیوزبیت های خانواده AVR پرداختیم. انواع بسیار مختلفی از پروگرامرها برای میکروکنترلر های AVR وجود دارد. برخی از پروگرامرها به خود نرم افزار کامپایلر اضافه شده و پس از کامپایل عملیات پروگرام هم انجام میشود. اما برخی از پروگرامرها دارای نرم افزار جداگانه ای برای پروگرام هستند. اما در ابتدای راه نیاز به وجود میکروکنترلر و پروگرامر و قطعات دیگر نیست. نرم افزار شبیه ساز پروتئوس میکروکنترلر های AVR را کاملا شبیه سازی کرده و برای شروع میتوانید از این نرم افزار نیز برای تست برنامه های خود استفاده کنید. در اموزش های بعدی مباحث کد نویسی بر روی این خانواده از میکروکنترلر ها را شورع میکینم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید. بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.