آموزش پروگرام کردن میکروکنترلرهای AVR با پروگرامر USBasp و نرم افزار ProgISP، پنجرۀ پیام ها در نرم افزار ProgISP، بخش Select Chip و Program State و Programming در نرم افزار ProgISP، بارگذاری فایل HEX در نرم افزار ProgISP، پاک کردن حافظۀ میکروکنترلر با نرم افزار ProgISP، جامپر Speed پروگرامر USBasp

نرم افزار ProgISP یک رابط بین پروگرامر USBasp و کامپیوتر است. هنگامی که بخواهیم با پروگرامر USBasp یک میکروکنترلر AVR را پروگرام کنیم، یکی از نرم افزارهای مورد استفاده، نرم افزار ProgISP است. با استفاده از ProgISP و تیک زدن گزینه هایی که در محیط آن وجود دارد، می توان فایل هگز برنامۀ نوشته شده را از طریق پروگرامر USBasp به حافظۀ برنامۀ میکروکنترلر AVR انتقال داد. البته تنها نرم افزاری که برای پروگرام کردن میکروکنترلرهای AVR با پروگرامر USBasp، استفاده می شود، ProgISP نیست. با استفاده از نرم افزار اتمل استودیو نیز می توان میکروکنترلرهای AVR را با پروگرامر USBasp برنامه ریزی کرد. که دربارۀ این موضوع و نحوه اضافه کردن پروگرامر USBasp به نرم افزار Atmel Studio، در نوشتۀ «آموزش Atmel Studio مهاجرت از کدویژن به اتمل استودیو» بحث شده است. برای راه اندازی پروگرامر USBasp و کار با آن علاوه بر نرم افزار پروگرامر ProgISP، نیاز داریم که درایور پروگرامر USBasp (یا درایور نرم افزار ProgISP) را نصب کنیم. که در نوشتۀ «نحوه نصب درایور پروگرامر USBasp، پروگرامر میکروکنترلرهای AVR» به نحوه نصب درایور پروگرامر USBasp پرداخته ایم.
همان طور که در نوشتۀ «معرفی میکروکنترلر» اشاره شد، پروگرامر USBasp یکی از پروگرامرهای ساده برای میکروکنترلرهای AVR است. این پروگرامر با استفاده از میکروکنترلر ATmeg8 یا ATmega88 ساخته شده است. با توجه به تعداد کم قطعات پروگرامر USBasp، می توان آن را روی بردهای الکترونیکی و بردهای آموزشی یا بردهای توسعه پیاده کرد. در تصویر زیر، در سمت چپ پروگرامر USBasp یوبرد و در سمت راست، برد توسعۀ AVR ATmega64pin یوبرد را مشاهده می کنید. برای مشاهدۀ مشخصات برد توسعۀ AVR و پروگرامر USBasp یوبرد، محصولات یوبرد را مشاهده نمایید.
تصویر 1 – برد توسعۀ ATmega64pin و پروگرامر USBasp یوبرد
نوشتۀ «پروگرام کردن میکروکنترلرهای AVR برنامه ریزی ATmega 64 pin یوبرد» نیز با موضوع پروگرام میکروکنترلرهای AVR با ProgISP (پروگرام میکروکنترلرهای AVR با USBasp) مرتبط است.
در این نوشته به آموزش کار با نرم افزار ProgISP برای پروگرام کردن میکروکنترلرهای AVR می پردازیم. برای دانلود نرم افزار ProgISP 1.72 فایل پیوست را دانلود نمایید.
آموزش پروگرام کردن میکروکنترلرهای AVR با نرم افزار ProgISP
نرم افزار ProgISP یک نرم افزار قابل حمل است و نیازی به نصب ندارد. برای باز کردن نرم افزار پروگرامر USBasp یا همان ProgISP، فایل exe آن را اجرا می کنیم. محیط نرم افزار ProgISP ورژن 1.72 به صورت زیر است.
تصویر 2 – پنجرۀ اصلی ProgISP پس از باز شدن
همان طور که در تصویر 2 مشخص است، این نرم افزار تعداد چهار منوی File و Command و Buffer و About دارد. دو منوی File و Command که ما تنها با آنها کار داریم، در قسمت سمت راست نرم افزار نیز وجود دارند. این نرم افزار دارای پنج تب PROGRAM و BUFFER و CHECKIO و CONFIG و Readme است که ما تنها با تب PROGRAM آن کار داریم. در ادامه به توضیح بخش های مورد نیاز تب PROGRAM و منوی File برای پروگرام می پردازیم.
پنجرۀ پیام ها در نرم افزار ProgISP
در این پنجره که در قسمت پایین نرم افزار قرار گرفته است، وضعیت عملیات پروگرام کردن نمایش داده می شود. همان طور که در تصویر زیر می بینید، تاریخ و زمان این عملیات ثبت شده است.
تصویر 3 – پنجرۀ پیام های ProgISP
بخش Select Chip در نرم افزار ProgISP
در این بخش از منوی کشویی مشخص شده، میکروکنترلری را که می خواهیم پروگرام کنیم انتخاب می کنیم. سپس روی دکمۀ RD که به معنای Read است، کلیک می کنیم. در این صورت Signature ID میکروکنترلر مورد نظر خوانده و با ID نوشته شده در زیر آن در قسمت ID (کد 1E:96:02) مقایسه می شود. نتیجۀ این مقایسه در پنجرۀ پیام ها به صورت "Read ID Successfully" نمایش داده می شود. کدی که مقابل ID نوشته شده است، Signature ID میکروکنترلر انتخاب شده در قسمت Select Chip است.
تصویر 4 – بخش Select Chip در ProgISP
در صورتی که Signature ID میکروکنترلر تحت پروگرام که توسط پروگرامر خوانده می شود با میکروکنترلر انتخاب شده در نرم افزار مطابقت نداشته باشد، پس از کلیک روی RD، یک پیغام خطا ظاهر می شود که باید روی NO کلیک کنیم. این پیغام خطا بیانگر این است که ما چیپ را در نرم افزار ProgISP اشتباه انتخاب کرده ایم و در این پنجره Signature ID میکروکنترلر روی پروگرامر نمایش داده می شود. برای مثال در تصویر زیر، میکروکنترلر تحت پروگرام ما چیپ ATmega64A است و چیپ ATmega88 را به اشتباه انتخاب کرده ایم.
تصویر 5 – خطای ناشی از عدم تطابق Signature ID در ProgISP
بخش Program State در نرم افزار ProgISP
در این بخش وقتی پروگرامر USBasp را به کامپیوتر متصل می کنیم، اگر درایور پروگرامر USBasp نصب شده باشد، آیکون PRG ISP روشن می شود. بنابراین اگر این آیکون خاموش باشد، یا ارتباط بین پروگرامر و کامپیوتر از طریق USB قطع است یا درایور پروگرامر USBasp نصب نیست. در تصویر زیر در سمت چپ این آیکون خاموش و در سمت راست روشن است.
تصویر 6 – آیکون PRG ISP در ProgISP
بخش Programming در نرم افزار ProgISP
در این بخش تنظیمات مربوط به پروگرام کردن و همچنین تنظیمات فیوزبیت ها وجود دارد. برای پروگرام کردن کافی است چک باکس ها را مانند تصویر زیر تیک بزنیم.
تصویر 7 – بخش Programming در ProgISP
همان طور که در تصویر بالا می بینید، تعدادی چک باکس وجود دارد. تیک زدن هر کدام از این چک باکس ها باعث می شود پس زدن دکمۀ Auto، عملیات مورد نظر انجام شود. مهمترین چک باکس های بخش Programming نرم افزار ProgISP عبارتند از:
چک باکس Verify Signature: اگر تیک این چک باکس فعال باشد، قبل از اقدام به پروگرام کردن، Signature ID میکروکنترلر تحت پروگرام با میکروکنترلر انتخاب شده در نرم افزار چک می شود.
چک باکس Chip Erase: با فعال بودن این چک باکس، قبل از پروگرام کردن، حافظۀ برنامۀ میکروکنترلر پاک می شود.
چک باکس Blank Check: با فعال بودن این چک باکس، خالی بودن حافظۀ برنامۀ میکروکنترلر قبل از عملیات برنامه ریزی چک می شود.
چک باکس Program Flash: با فعال بودن این چک باکس، فایل HEX انتخاب شده در بخش Load Flash روی میکروکنترلر پروگرام می شود.
چک باکس Program EEPROM: با فعال بودن این چک باکس، فایل EEP انتخاب شده در بخش Load Eeprom، در حافظۀ EEPROM میکروکنترلر قرار می گیرد.
چک باکس Verify Flash: در صورت فعال بودن چک باکس Verify Flash، حافظۀ برنامۀ میکروکنترلر پس از پروگرام یک بار چک می شود.
چک باکس Verify EEPROM: در صورت فعال بودن این چک باکس، حافظۀ EEPROM میکروکنترلر پس از پروگرام چک می شود.
چک باکس Program Fuse: با فعال بودن این چک باکس، در هر بار پروگرام شدن میکروکنترلر، فیوزبیت های آن نیز پروگرام می شوند. در صورت عدم آشنایی با فیوزبیت ها از تیک زدن این چک باکس خودداری کنید.
چک باکس Lock Chip: اگر این چک باکس فعال شود، در هر بار پروگرام میکروکنترلر، بیت های Lock میکروکنترلر نیز پروگرام می شوند.
تنظیم فیوزبیت ها در نرم افزار ProgISP
با کلیک روی هر کدام از موارد مشخص شده در تصویر زیر پنجرۀ Fuse&Lock نرم افزار پروگرامر ProgISP باز می شود.
تصویر 8 – باز کردن پنجرۀ تنظیمات فیوزبیت ها در ProgISP
در این پنجره می توانیم فیوزبیت های میکروکنترلر AVR تحت پروگرام را بخوانیم، تغییر دهیم و پروگرام کنیم. در قسمت بالا نام هر فیوزبیت با عدد 1 یا صفر در کنار آن آمده است. اگر روی هر کدام از آنها کلیک کنیم، تغییر وضعیت می دهد. در پنجرۀ تنظیمات فیوزبیت نرم افزار ProgISP صفر به معنای فعال بودن و 1 به معنای غیر فعال بودن فیوزبیت مورد نظر است. در قسمت پایین این پنجره، مقادیر فیوزبیت ها در مبنای 16 (هگزادسیمال) نوشته شده است. با تغییر این مقادیر، صفر و 1های قسمت بالا تغییر می کنند و بالعکس.
تصویر 9 – پنجرۀ تنظیمات فیوزبیت ها در ProgISP، تب ConfigBit
اگر روی تب Navigation که در تصویر بالا مشخص شده، کلیک کنیم. فیوزبیت ها به صورت زیر نمایش داده خواهند شد. که تیک خوردن هر یک از چک باکس ها در تب Navigation به معنای فعال بودن آن تنظیمات است. با تیک زدن هر کدام از گزینه ها، مقدار هگزادسیمال فیوزبیت ها تغییر می کند و بالعکس.
تصویر 10 - پنجرۀ تنظیمات فیوزبیت ها در ProgISP، تب Navigation
اگر در قسمت پایین این پنجره روی Default کلیک کنیم، فیوزبیت ها روی حالت پیش فرضی که شرکت سازنده برای آن در نظر گرفته است، تغییر می کنند. اگر روی Read کلیک کنیم، فیوزبیت های میکروکنترلر تحت پروگرام خوانده می شوند. در صورتی که روی Write کلیک کنیم، تنظیماتی که برای فیوزبیت ها در پنجرۀ Fuse&Lock دیده می شود، روی فیوزبیت های میکروکنترلر اعمال می شود.
توجه: در صورتی که با فیوزبیت های میکروکنترلر AVR آشنایی ندارید، از تغییر دادن تنظیمات پنجرۀ Fuse&Lock خودداری نمایید. چرا که ممکن است با تنظیم اشتباه فیوزبیت ها، میکروکنترلر قابلیت پروگرام شدن را از دست بدهد.
بارگذاری فایل HEX در نرم افزار ProgISP
برای بارگذاری فایل HEX برنامۀ نوشته شده، از منوی File یا در سمت راست نرم افزار روی Load Flash کلیک می کنیم. در این صورت پنجره ای باز می شود که در آن فایل HEX را Browse می کنیم.
تصویر 11 – بارگذاری فایل HEX در نرم افزار ProgISP
نکته: برای بارگذاری فایل EEP نیز به همین صورت روی Load Eeprom کلیک می کنیم.
با بارگذاری فایل HEX (یا فایل EEP)، مقدار حجم فایل HEX (یا EEP) بر حسب بایت در بخش های مشخص شده در تصویر زیر نمایش داده می شود.
تصویر 12 – میزان اشغال حافظۀ Flash و EEPROM در ProgISP
پروگرام کردن میکروکنترلر AVR با نرم افزار ProgISP
برای پروگرام کردن میکروکنترلر کافی است روی دکمۀ Auto در بخش Programming و یا گزینۀ Auto در منوی Command کلیک کنیم. در این صورت میکروکنترلر با توجه به تنظیمات چک باکس های بخش Programming، پروگرام می شود.
تصویر 13 – پروگرام کردن میکروکنترلر AVR با نرم افزار ProgISP
پاک کردن حافظۀ میکروکنترلر
در صورتی که قصد داشته باشیم فایل HEX منتقل شده به حافظۀ برنامۀ میکروکنترلر را پاک کنیم، روی دکمۀ Erase بخش Programming و یا گزینۀ Erase Chip منوی Command کلیک می کنیم.
تصویر 14 – پاک کردن حافظۀ برنامۀ میکروکنترلر با ProgISP
جامپر Speed پروگرامر USBasp
در صورتی که با استفاده از پروگرامر USBasp قصد برنامه ریزی میکروکنترلری را که قبلاً فرکانس کاری آن کمتر از 2 مگا هرتز تنظیم شده، داشته باشیم (برای مثال میکروکنترلرهای AVR به صورت پیش فرض روی 1 مگاهرتز داخلی تنظیم است)، باید جامپر یا سلکتور Speed را روی پروگرامر USBasp فعال کنیم.
نتایج آموزش نرم افزار ProgISP و پروگرام کردن AVR با USBasp
- 1- با استفاده از ProgISP و تیک زدن گزینه هایی که در محیط آن وجود دارد، می توان فایل هگز برنامۀ نوشته شده را از طریق پروگرامر USBasp به حافظۀ برنامۀ میکروکنترلر AVR انتقال داد.
- 2- تنها نرم افزاری که برای پروگرام کردن میکروکنترلرهای AVR با پروگرامر USBasp، استفاده می شود، ProgISP نیست. با استفاده از نرم افزار اتمل استودیو نیز می توان میکروکنترلرهای AVR را با پروگرامر USBasp برنامه ریزی کرد.
- 3- نرم افزار ProgISPیک نرم افزار قابل حمل است و نیازی به نصب ندارد.
- 4- در صورتی که Signature ID میکروکنترلر تحت پروگرام که توسط پروگرامر خوانده می شود با میکروکنترلر انتخاب شده در نرم افزار مطابقت نداشته باشد، پس از کلیک روی RD، یک پیغام خطا ظاهر می شود که در آن Signature ID چیپ تحت پروگرام نمایش داده می شود.
- 5- اگر آیکون PRG ISP خاموش باشد، یا ارتباط بین پروگرامر و کامپیوتر از طریق USB قطع است یا درایور پروگرامر USBasp نصب نیست.
- 6- در بخش Programming تب PROGRAM در ProgISPتعدادی چک باکس وجود دارد. تیک زدن هر کدام از این چک باکس ها باعث می شود پس زدن دکمۀ Auto، عملیات مورد نظر انجام شود.
- 7- در مراحل پروگرام کردن میکروکنترلرهای AVR، اگر با فیوزبیت ها آشنایی نداریم، بهتر است تنظیمات آنها را تغییر ندهیم و همچنین تیک چک باکس های Program Fuse و Prewritten Fuse و Lock Chip را فعال نکنیم.
- 8- در صورتی که با استفاده از پروگرامر USBasp قصد برنامه ریزی میکروکنترلری را که قبلاً فرکانس کاری آن کمتر از 2 مگا هرتز تنظیم شده، داشته باشیم، باید جامپر یا سلکتور Speed را روی پروگرامر USBasp فعال کنیم.
برای دریافت نسخۀ PDF این نوشته و دانلود نرم افزار ProgISP 1.72، فایل پیوست را دانلود نمایید.


خواهش میکنم. زنده باشید
سلام. بله یکی از پایه های سلکتورهای سمت چپ برد مربوط به جامپر speed پروگرامر هستش
سلام. خیلی ممنون. لطف دارید
سلام. خواهش میکنم. لطف دارید
سلام. نرم افزار توی پیوست رو استفاده کنید.
سلام. این مشکل به خاطر تنظیم اشتباه فیوزبیت های مربوط به تعیین منبع کلاک میکروکنترلر به وجود میاد. و یه جورایی میشه گفت میکروکنترلر قفل میشه. و این نکته هم باید دقت بشه که اگه قراره از کریستال برای میکروکنترلر استفاده کنید، از پروگرامر usbasp استفاده نکنید. چون برای دفعۀ بعد دیگه پروگرامر دیگه به میکروکنترلر متصل نمیشه. حالا مشکلی که براتون پیش اومده راهش رو میگم. قبلش با برداشتن اتصال یا برداشتن جامپر speed پروگرامر تست کنید ببینید میکروکنترلر پروگرام میشه یا نه. اگه نشد راهش اینه که یه فرکانس زیر 1 مگاهرتز به پایۀ XTAL1 به صورت خارجی بدید. با یه میکروکنترلر دیگه یا یه فانکشن ژنراتور یا ... . فقط دقت کنید اگه با میکروکنترلر این فرکانس رو ساختید و میخواید بهش بدید، هم زمین و هم تغذیۀ VCC میکروکنترلر قفل شده با میکروکنترلری که فرکانس رو میسازه با هم یکی باشن. بعد نرم افزار ProgISP رو باز کنید. و توی فیوزبیتا برید. اونجا اول read رو بزنید. بعد default و در نهاید روی write کلیک کنید. که با این کار فیوزبیت های میکروکنترلر به حالت پیش فرض بر میگردن. فقط دفعۀ بعد ممکنه لازم باشه جامپر speed پروگرامر رو فعال کنید.
سلام. نرم افزارهایی که توسط خود شرکت سازندۀ تراشه ارائه شدن.