کار با نرم افزار ProgISP موضوع مورد بحث این نوشته است. ProgISP یکی از نرم افزارهای مورد استفاده برای برنامه ریزی میکروکنترلرهای AVR با USBasp است. این نرم افزار با وجود داشتن یک فضای ساده، امکانات متعددی برای برنامه ریزی میکروکنترلرهای AVR فراهم می آورد. از جمله قابلیت های مهم نرم افزار ProgISP می توان به موارد زیر اشاره کرد:
- قابلیت خواندن و بررسی Signature ID میکروکنترلر AVR؛
- نمایش وضعیت اتصال پروگرامر در آیکون PRG ISP؛
- قابلیت پاک کردن حافظۀ برنامۀ میکروکنترلر AVR؛
- قابلیت خواندن و نوشتن فیوزبیت ها؛
- قابلیت برنامه ریزی حافظۀ Flash و EEPROMداخلی میکروکنترلر؛
- قابلیت Verify حافظۀ Flash و EEPROM داخلی.
برای دانلود نرم افزار ProgISP 1.72، فایل پیوست را دانلود نمایید. پس از دانلود این نرم افزار، پوشۀ حاوی فایل های آن را در پوشه ای در درایو ویندوز کپی کنید. برای اجرای ProgISP کافی است فایل progisp.exe را اجرا کنید. ProgISP 1.72 یک نرم افزار قابل حمل است.
تصویر 1 – فایل های نرم افزار ProgISP (Ver 1.72)
پروگرامر USBasp یک پروگرامر ساده برای میکروکنترلرهای AVR است. این پروگرامر با میکروکنترلر ATmega8 یا ATmega88 ساخته می شود. با توجه به تعداد کم قطعات پروگرامر USBasp، می توان آن را روی بردهایی مثل بردهای توسعه پیاده کرد. در تصویر زیر، پروگرامر USBasp و برد توسعۀ AVR ATmega64pin یوبرد را مشاهده می کنید. می بینید که پروگرامر USBasp در ابعاد کوچک روی برد توسعه قرار گرفته است. در ادامه به نحوۀ کار با ProgISP می پردازیم. اما پیش از کار با پروگرامر USBasp و نرم افزار ProgISP، لازم است درایور پروگرامر USBasp را نصب کنیم. نحوۀ نصب آن را در نوشتۀ «نصب درایور USBasp، پروگرامر میکروکنترلرهای AVR» تشریح کرده ایم.
نکته: با نرم افزار اتمل استودیو نیز می توان میکروکنترلرهای AVR را با پروگرامر USBasp برنامه ریزی کرد. نحوۀ اضافه کردن پروگرامر USBasp را می توانید در نوشتۀ اتمل استودیو مطالعه نمایید.
تصویر 2 – پروگرامر USBasp، به صورت جداگانه (سمت چپ) و پیاده شده روی برد توسعۀ AVR یوبرد (سمت راست)
محیط و ابزارهای نرم افزار ProgISP
پیش از کار با نرم افزار ProgISP و پروگرام کردن AVR با ProgISP، امکانات ProgISP را بررسی می کنیم. محیط اصلی نرم افزار یعنی تب PROGRAM (تصویر زیر)، حاوی عملیات اصلی برنامه ریزی و ابزارهای مربوط است. قسمت های مهم و پر استفادۀ تب PROGRAM عبارتند از:
- پنجرۀ پیام ها (شمارۀ 1): در این پنجره، وضعیت عملیات مختلف نمایش داده می شود.
- Select Chip (شمارۀ 2): حاوی منوی کشویی انتخاب میکروکنترلر و بررسی Signature ID آن است. در این قسمت میکروکنترلر تحت پروگرام را انتخاب می کنیم. برای بررسی این که میکروکنترلر صحیح روی پروگرامر قرار گرفته، روی دکمۀ RD کلیک می کنیم. با این کار، Signature ID قسمت Select Chip با Signature ID میکروکنترلر قرار گرفته روی پروگرامر مقایسه می شود. نتیجۀ این مقایسه در پنجرۀ پیام ها به صورت “Read ID Successfully” نمایش داده می شود (3). در صورتی که میکروکنترلر قرار گرفته روی پروگرامر با میکروکنترلر انتخاب شده در ProgISP یکسان نباشد، پنجره ای حاوی یک پیغام خطا ظاهر می شود که باید روی No کلیک کنیم (4).
- Program State (شمارۀ 5): با اتصال صحیح پروگرامر به کامپیوتر و نصب بودن درایور پروگرامر، آیکون PRG ISP روشن می شود.
- Programming (شمارۀ 6): در این قسمت تنظیمات مربوط به پروگرام کردن و همچنین تنظیمات فیوزبیت ها وجود دارد. برای پروگرام کردن کافی است چک باکس ها را مانند تصویر تیک بزنیم. توضیحات مربوط به چک باکس ها را در ادامۀ نوشته آورده ایم.
- کادر سمت راست (شمارۀ 7): در قسمت File دکمه هایی برای باز کردن فایل HEX، فایل EEP، فایل پروژۀ ProgISP و ذخیرۀ آنها وجود دارد. دکمه های این قسمت، گزینه های منوی File نرم افزار هستند. قسمت Command نیز حاوی دکمه هایی برای عملیات روی حافظۀ Flash و EEPROM است. دکمه های این قسمت، گزینه های منوی Command نرم افزار هستند.
تصویر 3 – محیط اصلی نرم افزار ProgISP
منوی Command نرم افزار ProgISP
برای کار با نرم افزار ProgISP، باید پس از برقراری اتصالات بین میکروکنترلر و پروگرامر و ارتباط پروگرامر و کامپیوتر، عملیات مورد نظر را از منوی Command اجرا کرد. این عملیات عبارتند از:
- Erase Chip: پاک کردن حافظۀ Flash؛
- Blank Chip: بررسی خالی بودن حافظۀ Flash؛
- Read Signature: خواندن Signature ID و مقایسه با Signature ID قسمت Select Chip؛
- Read Flash: خواندن محتویات حافظۀ Flash؛
- Read EEPROM: خواندن محتویات EEPROM داخلی؛
- Write Flash: انتقال محتویات فایل HEX به حافظۀ Flash میکروکنترلر؛
- Write EEPROM: انتقال محتویات فایل EEP به حافظۀ EEPROM میکروکنترلر؛
- Verify Flash: تأیید محتویات حافظۀ Flash؛
- Verify EEPROM: تأیید محتویات حافظۀ EEPROM؛
- Program Fuse: برنامه ریزی فیوزبیت ها؛
- Lock Chip: قفل کردن میکروکنترلر؛
- Auto: اجرای عملیات تعیین شده در قسمت Programming تب PROGRAM.
نکته: وقتی حافظۀ Flash یا EEPROM خوانده می شود، محتویات خوانده شده، در تب BUFFER قرار می گیرد. که در آنجا عملیاتی نظیر کپی یا ذخیره کردن محتویات وجود دارد. برای دسترسی به محتویات Flash و EEPROM باید در پایین تب BUFFER، آنها را انتخاب کرد.
تصویر 4 – تب BUFFER و منوی Command در نرم افزار ProgISP
قسمت Programming تب PROGRAM
می توان عملیات مورد نظر را با تیک زدن چک باکس های قسمت Programming تعیین کرد. سپس اگر روی دکمۀ Auto یا گزینۀ Autoی منوی Command کلیک کنیم، عملیات تعیین شده انجام می شود. چک باکس ها و ابزارهای مهم قسمت Programming تب PROGRAM، عبارتند از:
- Verify Signature: قبل از پروگرام کردن، Signature ID میکروکنترلر تحت پروگرام، با Signature ID میکروکنترلر انتخاب شده در نرم افزار مقایسه می شود.
- Chip Erase: حافظۀ برنامۀ میکروکنترلر قبل از برنامه ریزی پاک می شود.
- Blank Check: خالی بودن حافظۀ برنامۀ میکروکنترلر قبل از برنامه ریزی چک می شود.
- Program Flash: فایل HEX انتخاب شده در بخش Load Flash روی میکروکنترلر پروگرام می شود.
- Program EEPROM: فایل EEP انتخاب شده در بخش Load EEPROM، در حافظۀ EEPROM میکروکنترلر قرار می گیرد.
- Data Reload: فایل های HEX و EEP قبل از برنامه ریزی دوباره Load می شوند.
- Verify Flash: حافظۀ برنامۀ میکروکنترلر پس از برنامه ریزی، Verify می شود.
- Verify EEPROM: حافظۀ EEPROM میکروکنترلر پس از برنامه ریزی، Verify می شود.
- Program Fuse: در هر بار پروگرام شدن میکروکنترلر، فیوزبیت های آن نیز پروگرام می شوند.
- Lock Chip: در هر بار پروگرام میکروکنترلر، بیت های Lock میکروکنترلر نیز پروگرام می شوند.
- دکمۀ فیوزبیت ها (شمارۀ 1): با کلیک روی دکمۀ فیوزبیت ها، پنجره ای باز می شود که می توان در آن فیوزبیت های میکروکنترلر AVR را تنظیم کرد.
- دکمۀ Erase: همان Erase Chip منوی Command است.
- دکمۀ Auto: همان گزینۀ Autoی منوی Command است.
- Program Speed (شمارۀ 2): سرعت برنامه ریزی را تعیین می کند.
نکته: در صورتی که با فیوزبیت های میکروکنترلرهای AVR آشنا نیستید، چک باکس ها و تنظیمات دیگر مربوط به فیوزبیت ها را تغییر ندهید.
در ادامه به پنجرۀ تنظیم فیوزبیت ها و روش کار با نرم افزار ProgISP می پردازیم.
تصویر 5 – چک باکس ها و ابزارهای قسمت Programming تب PROGRAM
تنظیمات فیوزبیت ها در ProgISP
در کار با نرم افزار ProgISP و در کل برنامه ریزی میکروکنترلرهای AVR، یکی از مهمترین موضوعات، تنظیمات فیوزبیت است. تنظیم اشتباه فیوزبیت ها می تواند باعث قطع ارتباط پروگرامر و میکروکنترلر شود. بنابراین تنظیم فیوزبیت های AVR نیازمند دانش کافی است. تشریح فیوزبیت های AVR از حوصلۀ این نوشته خارج است و نیازمند نوشتۀ دیگری است. بنابراین در این بخش فقط روی نحوۀ تغییر آنها در ProgISP تمرکز می کنیم. با کلیک روی دکمۀ مربوط، پنجرۀ فیوزبیت ها باز می شود. در این پنجره می توانیم فیوزبیت ها را بخوانیم، تغییر دهیم و پروگرام کنیم. در قسمت بالا نام هر فیوزبیت با عدد 1 یا صفر در کنار آن آمده است. و با کلیک روی هر کدام، تغییر وضعیت می دهد. در نرم افزار ProgISP، در بخش فیوزبیت ها، صفر به معنای فعال بودن و 1 به معنای غیر فعال بودن فیوزبیت است. در قسمت پایین این پنجره، مقادیر فیوزبیت ها در مبنای 16 (هگزادسیمال) نوشته شده است. با تغییر این مقادیر، صفر و یک های قسمت بالا تغییر می کنند و بالعکس.
تصویر 6 – پنجرۀ فیوزبیت های AVR در نرم افزار ProgISP
اگر روی تب Navigation کلیک کنیم. تنظیماتی که با فیوزبیت ها تغییر می کنند، به صورت تصویر زیر نمایش داده خواهند شد. که تیک خوردن هر یک از چک باکس ها در تب Navigation به معنای فعال بودن آن تنظیمات است. با تیک زدن هر کدام از گزینه ها، مقدار هگزادسیمال فیوزبیت ها تغییر می کند و بالعکس. اگر در قسمت پایین این پنجره روی Default کلیک کنیم، فیوزبیت ها روی حالت پیش فرضی که شرکت سازنده برای آن در نظر گرفته است، تغییر می کنند. اگر روی Read کلیک کنیم، فیوزبیت های میکروکنترلر تحت پروگرام خوانده می شوند. در صورتی که روی Write کلیک کنیم، تنظیماتی که برای فیوزبیت ها در پنجرۀ فیوزبیت ها دیده می شود، روی فیوزبیت های میکروکنترلر اعمال می شود.
تصویر 7 – پنجرۀ فیوزبیت های AVR در نرم افزار ProgISP، تب Navigation
کار با نرم افزار ProgISP، برنامه ریزی AVR با ProgISP
برای کار با نرم افزار ProgISP و پروگرام میکروکنترلرهای AVR با ProgISP بدین شکل عمل می کنیم. ابتدا اتصالات بین میکروکنترلر و پروگرامر را برقرار می کنیم. نحوۀ برقراری این اتصالات را در نوشتۀ «پروگرامر برد توسعه ATmega64Pin یوبرد» برای این برد توسعه توضیح داده ایم. که مطالب آن را می توان برای پروگرامرهای USBasp دیگر هم استفاده کرد. پروگرامر را به کامپیوتر متصل و ProgISP را اجرا می کنیم. میکروکنترلر را در قسمت Select Chip انتخاب و روی دکمۀ RD کلیک می کنیم (1). با مشاهدۀ پیغام “Read ID Successfully” در پنجرۀ پیام ها (2)، در صورت نیاز، فیوزبیت ها را پروگرام می کنیم (3). سپس از منوی File، روی Load Flash کلیک و فایل HEX را باز می کنیم (4). سپس می توانیم از منوی Command، عملیات مختلف را به صورت دستی انجام دهیم (5). برای برنامه ریزی میکروکنترلر، روی Erase Chip و سپس روی Write Flash کلیک می کنیم. در این صورت حافظۀ Flash پاک و دوباره برنامه ریزی می شود. یا این که می توانیم در قسمت Programming تب PROGRAM، چک باکس ها را تیک بزنیم (6) و روی دکمۀ Erase و Auto کلیک کنیم (7 و 8). در این صورت عملیات تعیین شده در این قسمت انجام می شود. پس از برنامه ریزی میکروکنترلر، پیغام های موفقیت آمیز بودن در پنجرۀ پیام ها نمایش داده می شود (9).
نکته: در صورتی که تنظیمات مربوط به منبع کلاک در فیوزبیت ها، اشتباه تنظیم شوند، ممکن است ارتباط میکروکنترلر با پروگرامر دیگر برقرار نشود. روش رفع این مشکل را در نوشتۀ «پروگرامر برد توسعۀ ATmega64Pin یوبرد» در بخش «تنظیم منبع کلاک خارجی با پروگرامر USBasp» آورده ایم.
نکته: اگر کلاک میکروکنترلر قبلاً زیر 2 مگاهرتز تنظیم شده باشد، برای ارتباط پروگرامر با میکروکنترلر، باید جامپر Speed پروگرامر USBasp فعال شود.
تصویر 8 – مراحل کار با نرم افزار ProgISP، برنامه ریزی میکروکنترلر ATmega16A
نتایج کار با نرم افزار ProgISP، نرم افزار پروگرامر USBasp
- یکی از نرم افزارهای مورد استفاده برای برنامه ریزی میکروکنترلرهای AVR، نرم افزار ProgISP است.
- نرم افزار ProgISP برای استفاده از پروگرامر USBasp است. پروگرامر USBasp یک پروگرامر ساده است که میکروکنترلر آن ATmega8 یا ATmega88 است.
- محیط اصلی نرم افزار ProgISP، تب PROGRAM است. در قسمت Programming این تب می توان عملیات مختلف برنامه ریزی را پیاده کرد. عملیات مختلف در این قسمت تعیین می شود. سپس با کلیک روی دکمۀ Auto، عملیات تعیین شده به طور اتوماتیک پیاده می شود.
- منوی Command نرم افزار ProgISP شامل گزینه هایی برای پروگرام دستی میکروکنترلر است.
- در نرم افزار ProgISP علاوه بر حافظۀ Flash، می توان حافظۀ EEPROM را هم پروگرام کرد.
- در ProgISP می توان حافظۀ Flash و EEPROM را خواند. در این صورت محتویات حافظۀ Flash و EEPROM را می توان در تب BUFFER مشاهده، کپی و ذخیره کرد.
- در قسمت Programming تب PROGRAM، می توان مقدار فیوزبیت های میکروکنترلر تحت پروگرام را خواند و تغییر داد.
- پنجرۀ فیوزبیت ها دو تب دارد. در تب ConfigBit، فیوزبیت ها نمایش داده می شوند. در تب Navigation نیز پارامترهایی که فیوزبیت ها آنها را تغییر می دهند، نمایش داده می شوند. تغییر تنظیمات فیوزبیت ها در تب Navigation راحت تر است.
- برای کار با ProgISP باید ابتدا روی دکمۀ RD کلیک و سپس در صورت نیاز فیوزبیت ها را تنظیم کرد. بعد از آن فایل HEX را اضافه و اقدام به برنامه ریزی میکروکنترلر کرد. عملیات مختلف را یا می توان به طور دستی از منوی Command انجام داد، یا می توان در قسمت Programming تب PROGRAM تعیین کرد و روی دکمۀ Auto کلیک کرد.
من وقتی میخوام پروگرم کنم با ارور flash verify error at:12eh مواجه میشم میشه لطفا راهنمایی کنین
چنین خطاهایی گاهی توی برنامه ریزی با ProgISP به وجود میاد. اما اگه تعداد دفعاتش زیاده، این موارد رو چک کنید:
و این که جامپر Speed رو غیر فعال کنید. ببینید که وقتی سرعت برنامه ریزی کم باشه، باز هم این اتفاق میفته یا خیر. یک برنامۀ سادۀ دیگه رو روی میکروکنترلر بریزید و ببینید که باز هم این اتفاق میفته یا نه. میکروکنترلر رو هم تغییر بدید و یه میکروکنترلر دیگه رو برنامه ریزی کنید. حتی روی یه کامپیوتر دیگه هم تست کنید. اگه مشکل همچنان پابرجا بود دیگه پروگرمر مشکل داره.
اقا واقعا تششششکر کل فضا مجازی رو گشتم. سوالمو فقط شما تونستی حل کنی دسمریزاد
سلام. خواهش میکنم. خیلی ممنون. موفق باشید
سلام
واقعاً تشکر من دو یا چند راه دیگه رو هم امتحان کردم (سایتهای خارجی) ولی نتونستم جواب بگیرم ودر نهایت فکر کردم پروگرمرم خرابه
ولی با پروگرمر جدیدم به مشکل خوردم و با مطالب این سایت تونستم به نتیجه برسم
تشکر
سلام. خوشحالیم که مقید واقع شده. خواهش میکنم. تشکر از همراهی شما.
سلام خسته نباشید اطلاعات کامل و مفیدی بود .
من یه اتمگا 32 نو خریدم و میخوام با این پروگرامر پروگرامش کنم و اولین تجربم هستش اما وقتی روی RD کلیک میکنم با ارور chip enable program error مواجه میشم میشه لطف کنین بگین راه حلش چیه؟
توی اینترنت هم که سرچ کردم دیدم که یه جامپر تو خود پروگرامر رو وصل میکنن مشکلشون حل میشه اما وقتی من اینکارو انجام دادم دیدم که پرو گرامر یه بار چشمک میزنه و دوباره همون ارور رو نشون میده .
تمام اتصالات رو درست وصل کردم .
ممنون از مطالب و اطلاعات عالی تون .
سلام منم همین ارور را دریافت میکنم اگه فهمیدید مشکل از کجاس لطفا به منم خبر بدید ممنونتون میشم
سلام منم همین مشکل رو دارم
من فهمیدم چطوریه . جمپر سه چیزی روش نیست اونو با یه تیکه سیم وصل کنید جاش خالیه . نوشته jamp3
مشکل حل میشه
درود بنده هم زمانی ک دکمهrd بقیه دکمه ها کلیک میکنم خطایchip enable program error میده ممنون میشم راهنمایی کنید
سلام ممنون از پست عالی تون فقط چرا برای من نرم افزار progisp فونت های عجیب غریب میاره ؟؟؟ کلا هیچی مفهوم نیست از فونت بعضی جاها که مینویسه
سلام خسته نباشید یه مگا32 نو دارم همش ارور chip enable میده . تو نت دیدم یه جامپر وصل میکنن مشکلشون بر طرف میشه ولی من این کارو انجام میدم با تاخیر دوباره ارور میده .
مشکل کجاست و چطور باید رفعش کرد ؟
ممنون میشم پاسخ بدین .
سلام من همین مشکل را دارم شما چطور حلش کردید؟
سلام جناب بداغی
وقتتون بخیر
غرض از مزاحمت این بود که…
چه راهی وجود داره برای اینکه یه مگا32 رو بدون پروگرامرهای رایج بازار و بردهای آردوینو پروگرام کنم؟ (هزینه م تا اینجا خیلی بالا رفته)
یعنی با این راهی که اینجا فرمودید امکانپذیره؟ نمیخام با هر کسی مشورت کنم… و هر کس نظر خودشو بده… سلیقه ای… اما خب مواردی از شما که داخل سایت نوشته این دغدغه منو کنار میذاره و خیالم راحت میشه. بهترینها رو براتون آرزو دارم
سلام وقت بخیر.
تشکر از نظر لطفتون.
باید پروگرامر داشته باشید. این روشی که ما در این تاپیک گفتیم هم از پروگرامر استفاده شده. می توانید با استفاده از بوت لودر هم پروگرام کنید. اما خب کد بوت لودر هم باید یک مرتبه با استفاده از پروگرامر روی میکروکنترلر پروگرام بشه. همچنین خود بوتلودر هم نیاز به یک سخت افزار ساده تر مثل USB TO SERIAL داره. خلاصه اینکه باید یک پروگرامر تهیه کنید.
ممنونم توضیح قشنگت مهندس مشکل مه رفع شد
با سلام ممنون از اموزش خوبتون . فقط نوشته های نرم افزار فنتش خیلی گنگ و نا مفهوم هست . میشه راهنمایی بفرمایید؟
سلام وقت بخیر
توی نرم افزار progisp توی قسمت فیوزبیت ها وقتی روی حالت navigation میرم نوشته ها ناخوانا هستن.
میدونید مشکل از کجاست؟
لطفا راهنمایی بفرمایید
سلام وقت بخیر.
باید نرم افزار را از سورس دیگری دانلود کنید.
سلامی مجدد چندتا سورس دیگه رو تست کردم باز همینجور بود، سورس معتبری رو میشه لطفا معرفی کنید