اصنع مبرمجة متحكمات

إذا كنت تمتلك دارة SYRDUINO (أو أي دارة متوافقة مع دارات Arduino) فيمكنك أن تستخدمها لبرمجة أي متحكم من سلسلة ATMEL AVR دون الحاجة إلى أي قطعة إضافية (عدا لوحة تجارب Test board و المتحكم الذي ترغب ببرمجته!) و لشرح كيفية القيام بذلك سنقوم باستخدام دارة SYRDUINO NG لبرمجة متحكم من نوع ATmega16 ببرنامج مكتوب بلغة C في برنامج CodeVisionAVR و ذلك باتباع الخطوات التالية :
1- افتح بيئة البرمجة Arduino IDE و من قائمة الأمثلة اختر البرنامج ArduinoISP .


2- ارفع البرنامج إلى دارتك .


3- اكتب البرنامج الذي ترغب أن ترفعه إلى المتحكم و قم بتحويله إلى الصيغة hex .


4- قم بتوصيل دارة SYRDUINO إلى المتحكم ATmega16 كما يلي :

SYRDUINO

ATmega16

13

Pin 8 (PORTB 7) SCK

12

Pin 7 (PORTB 6) MISO

11

Pin 6 (PORTB 5) MOSI

10

Pin 9 (RESET)

+5V

Vcc

GND

GND

توصيل الثنائيات المضيئة LEDs الموجودة في الرسم اختياري لكنها تؤمن مؤشرات عن عمل الدارة .

ملاحظة:لمعرفة الأقطاب اللازمة لبرمجة كل متحكم يجب العودة إلى نشرة المتحكم Datasheet إلى البند Serial Downloading من الفقرة Memory Programming .
5- في المرة الأولى فقط :نفتح المجلد الذي توجد فيه البيئة Arduino IDE و نقوم بنسخ الملف avrdude.conf من المسار :

arduino-1.0.3\hardware\tools\avr\etc

إلى المجلد :

arduino-1.0.3\hardware\tools\avr\bin

ملاحظة :يمكن تجاوز هذه الخطوة لكن الأمر الذي سندخله في الخطوة التالية سيكون أطول .
6-نفتح محرر سطر الأوامر Command Prompt بالضغط على مفتاح ويندوز و Ctrl معاً في لوحة المفاتيح و ندخل الأمر cd للذهاب إلى المجلد الذي نسخنا إليه ملفاً في الخطوة السابقة مثلاً :

cd\Program Files\arduino-1.0.3\hardware\tools\avr\bin

7-لبرمجة ذاكرة البرنامج في المتحكم ATmega16 ندخل الأمر التالي :

avrdude -V -c avrisp-p ATMEGA16 -P com50 -b 19200 -U flash:w: "C:\CodeVision_project\Exe\led_crt.hex":i

و في حال كان كل شيء موصولاً بصورة صحيحة ستظهر الرسالة التالية في محرر الأوامر :

 

avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.09s

avrdude: Device signature = 0x1e9403
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\CodeVision project\Exe\led_crt.hex"
avrdude: writing flash (270 bytes):

Writing | ################################################## | 100% 0.44s

avrdude: 270 bytes of flash written

avrdude: safemode: Fuses OK

avrdude done. Thank you.

أما في حال وجود خطأ في التوصيل فقد تظهر الرسالة التالية :

avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

أما الشكل العام للأمر فهو كما يلي :

avrdude -V -c avrisp-p "اسم المتحكم" -P "رقم البوابة" -b 19200 -U flash:w: "عنوان ملف البرنامج":i


طبعاً يمكن برمجة ذاكرة EEPROM ضمن المتحكم و كذلك بايتات إعدادات المتحكم Fuse bits و ذلك بالأمر التالي :

avrdude -V -c avrisp-p "اسم المتحكم" -P "رقم البوابة" -b 19200 -U flash:w: "عنوان ملف البرنامج":i -U eeprom:w: "عنوان ملف البرنامج":i -U efuse:w: "قيمة البايت":m -U hfuse:w: "قيمة البايت":m -U lfuse:w: "قيمة البايت":m


في الأمر السابق يجب أن تكون قيمة البايتات مكتوبة بالنظام الست عشري مع استخدام البادئة 0x مثلاً لإدخال القيمة 255 نكتب 0xff .
ملاحظة : يجب أن تكون حذراً جداً عند برمجة بايتات إعدادات المتحكم Fuse bits لأن ذلك قد يجعل المتحكم غير قابل للبرمجة بهذه الطريقة .
طبعاً برمجة المتحكمات بهذه الطريقة أصعب من استخدام المبرمجات التجارية بسبب الحاجة لاستخدام سطر الأوامر , كما أن التوصيل على دارة التجارب مربك قليلاً لكن يمكنك أن تصنع مبرمجتك الخاصة بلحام العناصر المطلوبة على دارتنا SYRDUINO Prototype shield .
لمزيد من المعلومات حول استخدام البرنامج avrdude يمكن مراجعة الملف avrdude.pdf الموجود في المسار hardware\tools\avr\doc\avrdude ضمن مجلد بيئة Arduino IDE .

أضف تعليق

كود امني
تحديث