جدول المحتويات:

استخدام إكستريم بيرنر لبرمجة متحكم AVR: 8 خطوات
استخدام إكستريم بيرنر لبرمجة متحكم AVR: 8 خطوات

فيديو: استخدام إكستريم بيرنر لبرمجة متحكم AVR: 8 خطوات

فيديو: استخدام إكستريم بيرنر لبرمجة متحكم AVR: 8 خطوات
فيديو: تجربتي مع الراسبيري باي ( Raspberry pi 4) - ما هو و كيف أستخدمه في مشاريعي 2024, يوليو
Anonim
استخدام إكستريم بيرنر لبرمجة متحكم AVR
استخدام إكستريم بيرنر لبرمجة متحكم AVR

كل أخوة مستخدمي AVR هناك ، وأولئك الذين دخلوا البث ، بدأ بعضكم باستخدام المتحكمات الدقيقة PIC والبعض الآخر بدأ باستخدام ATMEL AVRs ، هذا مكتوب من أجلك!

لذلك اشتريت USBASP لأنه رخيص وفعال لوميض ذاكرة القراءة فقط على جهاز Atmega الخاص بك ، أو ربما نطاق ATTINY. يمكن الحصول عليها بأقل من 5 دولارات ، كنسخ صينية من USB-ASP مفتوح المصدر! AVRdude هو برنامج لبرمجتهم.

أنت تعرف بلا شك كيفية إنشاء ملف Hex باستخدام Atmel Studio (ما زلت أستخدم AVR Studio v4.19 بدلاً من أحدث إصدار v7 لأنه أكثر سرعة وأسرع على الكمبيوتر المحمول الخفيف ذو النواة الواحدة) / تثبيت Netbook و WINAVR إذا كنت تقرأ هذا أي شيء مكتوب في DotNet يعمل بشكل بطيء! والإصدارات الأحدث مصممة لجعل الكمبيوتر المحمول يعمل مثل السلحفاة! يمكنك استخدام Studio v4.19 ، وهو أكبر إصدار من Studio من ATMEL لوحدات التحكم الدقيقة AVR ، والانتقال إلى الإصدار 7 عندما تحتاجه حقًا للرقائق اللاحقة ، وجعل وقتك على الكمبيوتر المحمول أكثر إنتاجية ، والعمل بدلاً من الانتظار! هذا ما أوصي به.

سطر أوامر AVR dude نموذجي لبرمجة Atmega مع ملف Hex ، يعمل على النحو التالي:

الكتابة بالفلاش: AVRdude -s -c avrisp -p t44 -P usb -U "فلاش: w: D: / ARDUINO / pwmeg1.hex: a"

هنا pwmeg1.hex هو الملف السداسي عشرية من Intel ليتم "نسخه" أو "وميضه" في "MCU الهدف" في وحدة التحكم الدقيقة

هذا شيء يستحق التذكر! يمكنك كتابة ملف دفعي وتشغيله في سطر الأوامر في windows ، وتسميته write_flash.bat. وبالمثل لقراءة الصمامات ، فإن فمًا آخر من السطر لنتذكره! تصبح مملة.

لقراءة فلاش + eeprom: AVRdude -s -c avrisp -p t44 -P usb -U "فلاش: r: D: / ARDUINO / pwmeg1.hex: i" -U "eeprom: r:: i"

الحل هو استخدام واحدة من أدوات الواجهة الأمامية سهلة الاستخدام لواجهة المستخدم الرسومية لـ AVRdude مثل Bitburner ، مبرمج Khazama ، والتي تتشابه تقريبًا في الجدارة. eXtreme Burner. لقد استخدمت الأداة المجانية للاستخدام: eXtreme Burner كثيرًا ، وهو متعدد الاستخدامات وموثوق به ، وهذا البرنامج التعليمي يدور حول ذلك. لا يمكن فقط وميض ملف / برنامج hex الخاص بك إلى MPU ، باستخدام الأوامر الصادرة إلى AVRdude في الخلفية ، بل يمكن أن يساعدك أيضًا في ضبط FUSES وهو موضوع معقد غالبًا ما يربك المبتدئين في برمجة AVR. فيما يلي رابط لبرنامج تعليمي ممتاز حول موضوع FUSES يمكنك الانتقال إليه أو صقله. كلمة تحذير: تستخدم ATMEL الحالة "1" من بت FUSE للإشارة إلى حالتها "الافتراضية" (حالة غير محددة أو غير مبرمجة) و "0" للإشارة إلى حالتها المبرمجة أو المحددة أو المفعلة! هذا هو عكس ما تفعله مع وحدات FUSE في متحكم PIC. كن حذرًا عند تعديل وحدات فتيل الساعة مثل تغيير ساعة RC الداخلية إلى بلورة خارجية لأن هذا سيخلق مشاكل في الاتصال بالشريحة بدون إعداد بلوري خارجي. كن حذرًا أيضًا عند تغيير حالة بتات الصمامات الحرجة مثل SPIEN و RESET DISABLE (يجب تعيين هذه دائمًا على SPIEN = 0 و RESET DISABLE = 1 إذا كنت ترغب في مواصلة الاتصال مع MCU مع USB-ASP في وضع ISP / SPI إذا فشلت في هذا الأمر ، فستحتاج إلى مبرمج عالي الجهد "لإلغاء تعطيل" AVR الخاص بك.

إذا كنت تتساءل "ما هي الصمامات" و "ماذا تفعل"؟ اقرأ هذه الكتابة الممتازة:

موضوع آخر ذو صلة هو كيفية ضبط سرعة الساعة لـ AVR MPU الخاص بك والذي يمكنه سرعات من 1 ميجا هرتز حتى 16 أو 20 ميجا هرتز. يوجد أيضًا خيار بلوري منخفض التردد ذو طاقة منخفضة 31.25 كيلو هرتز والذي إذا تم تصميمه بشكل صحيح يمكن أن يجعل AVR الخاص بك يعمل ببطاريات AA لمدة 3 أشهر!

يمكن ضبط كلتا بتات Clock Fuse (كل من التردد ونوع الساعة الداخلية RC / البلورة الخارجية ، وبتات الصمامات الأخرى) من خلال علامة التبويب FUSES في eXtreme Burner. أولاً سنعرض عليك قراءة ROM ، ثم كيفية وميض ملف hex باستخدام eXtreme Burner. بالطبع ، يمكنك استخدام مواقع فتيل AVR عبر الإنترنت أيضًا ، ولكن الخيار الذي أوضحه يمكن استخدامه عندما تكون غير متصل بالإنترنت أيضًا ، في أي مكان.

الخطوة الأولى: الإعدادات المطلوب إجراؤها:

الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها
الإعدادات المراد إجراؤها

تظهر الصور الإعدادات التي يجب القيام بها قبل أن تبدأ عملك. (مرة واحدة فقط). ضمن عنصر القائمة الفرعية "إعدادات الأجهزة" ، نختار 375 هرتز لأن معظم MCU من مصنع ATMEL تم ضبطه على الإعدادات الافتراضية لساعة وحدة المعالجة المركزية 1 ميجا هرتز على مذبذب RC الداخلي. سرعة ISP هي ربع F_cpu. هذا يعطينا 375 كيلوهرتز أقرب سرعة ، ويمكن أن تذهب إلى سرعة أقل أيضًا ، ولن تحدث فرقًا كبيرًا. يمكنك محاولة الاتصال مع ترك هذا في الوضع الافتراضي ، وإصدار "قراءة الكل" ، إذا فشلت ، يمكنك القدوم إلى هنا وتغيير السرعة ، مما يجعلها أقل.

لأنه إذا كنت غير قادر على الاتصال (ستظهر الرسالة في نافذة المبرمج "غير قادر على الاتصال بالشريحة ، لا يمكن SCK" تعني أن إشارة الساعة من جهاز الكمبيوتر الخاص بك لا يمكن مزامنتها مع الشريحة التي تحاول قراءتها أو البرنامج). ، فلن تتمكن من تغيير سرعة الساعة لوحدة المعالجة المركزية أو تغيير سرعتها ونوعها! لذا فإن الاتصال هو أساس كل شيء! إنه يشبه "الاتصال الأول" كما تراه في أفلام Spielberg. إذا نجحت في ذلك ، فيمكنك دائمًا زيادة سرعة ساعة MCU الخاصة بك عن طريق برمجة الصمامات وفقًا لذلك ، ثم استخدام سرعة أعلى للاتصال لاحقًا.

لذا انتقل إلى لقطات إعدادات الأجهزة المتوفرة هنا ، ثم اضبط نوع الجهاز أيضًا (الشريحة التي تحاول برمجتها ، رقم الطراز الخاص بها).

الخطوة 2: ضبط نوع جهازك

ضبط نوع جهازك
ضبط نوع جهازك
ضبط نوع جهازك
ضبط نوع جهازك
ضبط نوع جهازك
ضبط نوع جهازك

انظر لقطة الشاشة ، صورة 1 ، وضعنا "ATTINY44A". هذا هو متحكم 14 دبوس بلا UART. لقد كنت أستخدم هذا مؤخرًا ، إصدار SSU. إذا قمت بتثبيت إصدار مخزون Extreme burner ، فلن ترى Attiny44A في القائمة المنسدلة لاختيار الجهاز ، سترى Attiny44 والذي يمكننا استخدامه لجميع الأغراض لبرمجة Attiny44A أيضًا ، لتقديم أي جهاز غير مدرج في هذه القائمة المنسدلة ، اقرأ التعليمات الأخرى "Hacking eXtreme Burner".

لقد كنت أستخدم Atmega88PA-AU أيضًا مع eXtreme Burner ولكن في Instructable نذكر "Attiny44A" في كل مكان. الآن كيف تصنع نسخة من لوحة التجارب لشريحة SMD صغيرة الحجم مقاس 7 مم وتختبرها باستخدام برامجك؟ (انظر الصور التي تشير إلى حجم الرقاقة) ، لهذا ، راجع التعليمات الأخرى الخاصة بي حيث أوضح كيفية إنشاء وحدات توصيل مناسبة للوحة بريد باستخدام Attiny44A-SSU و ATmega88PA-AU

بمجرد أن تتعلم هذه التقنية ، ستتمكن من التحقق من أي شريحة لديك فضول للتلاعب بها ، سواء كانت حزمة SMD أو DIL. على سبيل المثال ، لقد استخدمت حتى شريحة SMD تأتي في حزمة رباعية 32-pin 0.8mm pin-stage Quad (Atmega88A) بطريقة مماثلة!

. أو يمكنك فقط استخدام إصدار 28pin DIL من Attiny44A لهذا Instructable أو أي AVR تستخدمه في الوقت الحالي لتجربة eXtreme Burner لبرمجة AVR..

الخطوة 3: إصدار READ ALL أو READ FLASH

قم بإصدار READ ALL أو READ FLASH
قم بإصدار READ ALL أو READ FLASH
قم بإصدار READ ALL أو READ FLASH
قم بإصدار READ ALL أو READ FLASH

قم بتوصيل USBasp بمنفذ USB لجهاز الكمبيوتر المحمول الخاص بك ، أفترض أنك قمت بالفعل بتحميل برامج التشغيل الصحيحة المرفقة مع المبرمج الخاص بك والتي تم اكتشافها بشكل صحيح. يجب أن يظهر ضمن "الأجهزة والطابعات" في قائمة ابدأ في Windows إذا كان كذلك ، بمجرد توصيله بمنفذ USB! قم بتوصيل الشريحة المستهدفة على لوحتها بـ USBasp (يجب توصيل دبابيس SDI // ISP ذات الصلة باستخدام كابل 6 أو 10 سنون بين الاثنين ، أي المسامير: MOSI و RESET و MISO و SCK و Vcc و Ground).

قم بإصدار READ ALL من قائمة Xtreme Burner. انظر الصور والرسائل التي حصلنا عليها. في البداية ، أظهرت شاشتك "FF" لـ ROM في علامة التبويب الأولى من الناسخ ، وبعد قراءة كل شيء ستظهر محتويات ROM الفعلية على الشريحة. إذا استخدمت شريحة مصنع جديدة أو شريحة ممسوحة ، فسترى FF في المحتويات بعد "قراءة الكل". ستعرض الشريحة غير المبرمجة "FF" في ذاكرتها ، وكذلك الحال مع EEPROM (علامة التبويب الثانية في المبرمج) ، وتعرض علامة التبويب الأخيرة FUSES.

بعد قراءة الكل ، ستظهر علامات التبويب الثلاثة المعلومات الصحيحة الموجودة في الشريحة. قبل ذلك لن يحدث ذلك ، لذا قم بإصدار "قراءة الكل أولاً" بمجرد توصيل كل شيء.

الخطوة 4: الكتابة إلى Flash (ملف Hex الخاص بك يومض في ROM على الرقاقة)

اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)
اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)
اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)
اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)
اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)
اكتب إلى Flash (ملف Hex الخاص بك يومض في ROM على الشريحة)

حدد ملفًا باستخدام مربع الحوار "تصفح" الذي يفتح عند النقر فوق الرمز الأول في شريط القائمة أعلاه. اخترنا ملفًا واحدًا كما ترى في الصورة. بمجرد تحديد ملف hex (تنسيق intel hex) ، يتغير شريط القائمة الذي يظهر "لم يتم تحميل ملف" إلى اسم الملف الذي قمت بتحميله.

الآن قم بإصدار فلاش للكتابة من قائمة البرنامج. ستظهر لك الرسائل ما يحدث. انظر الصور.

بعد الكتابة الناجحة ، سترى "FF" الذي يشير إلى تغيير ROM جديد أو محو لما يحتويه البرنامج أو الملف السداسي. حجم أو عدد البايتات التي يشغلها ملفك في ذاكرة القراءة فقط (ROM) معروف لك أيضًا من خلال النظر إلى هذه الشاشة ، والتي تعرض لك محتويات ROM الفعلية لشريحة الهدف التي تومضها للتو.

تتم خطوة التحقق أيضًا من خلال قراءة الشريحة ، وفقًا للإعدادات التي قمنا بها في الخطوة الأولى. يظهر هذا في الرسائل التي تفيد بأن التحقق كان ناجحًا أيضًا.

الخطوة 5: الصمامات: كيفية ضبطها في EXtreme Burner

الصمامات: كيفية ضبطها في EXtreme Burner
الصمامات: كيفية ضبطها في EXtreme Burner

عندما أصدرت قراءة جميع الصمامات تمت قراءتها من الشريحة. هذه هي أول صورة تظهر fuses.jpg.

الآن ربما تحتاج إلى تغييرها إلى شيء آخر. تتكون المصاهر من 4 صناديق في آخر علامة تبويب على شاشة eXtreme Burner. وهي LOW FUSE BYTE و HIGH FUSE BYTE و EXTENDED FUSE BYTE و LOCK FUSE BYTE و CALIBRATION BYTE. بهذا الترتيب يتم عرضها.

يمكنك ببساطة استخدام حاسبة الصمامات عبر الإنترنت وتعبئتها. مثل تلك الموجودة في

eleccelerator.com/fusecalc/fusecalc.php؟

أو يمكنك استخدام eXtreme burner للقيام بذلك نيابة عنك. غير متصل بحد ذاته في أي وقت: اختر من القائمة المنسدلة التي تظهر عند النقر على زر التفاصيل الموجود أسفل كل نوع من بايت الصمامات. ما عليك سوى النقر نقرًا مزدوجًا فوق أي سطر في شاشة التفاصيل ومشاهدته وهو يتغير من SET إلى CLEARED وتبديل حالته بالنقر بالماوس على كل سطر. سيتغير Fuse Byte في المربع أعلاه وفقًا لذلك.

إذا كنت تتساءل "ما هي الصمامات" و "ماذا تفعل"؟ اقرأ هذه الكتابة الممتازة:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

الخطوة 6: ضبط الصمامات باستخدام EXtreme Burner Fuse Calculator

ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse
ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse
ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse
ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse
ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse
ضبط الصمامات باستخدام حاسبة EXtreme Burner Fuse

يمكنك رؤية شاشة التفاصيل التي تظهر لكل بايت فتيل (LOW ، HIGH ، EXTENDED ، LOCK ، والمعايرة). يجب ترك بايت المعايرة بدون تغيير لأنه يظهر بايت بيانات المعايرة في AVR الذي ينطبق على مذبذب RC الداخلي. عادةً ما يكون LOCK بايت فقط FF ، (لم تتم مناقشته في الصور أعلاه) لأنك لن تقوم بقفل الفلاش أو EEPROM أثناء مرحلة التعلم. سوف تقوم بتغيير وحدات البايت LOW و HIGH و EXTENDED فقط. كن حذرا !

إذا قمت بتغيير SPIEN bit إلى 1 (الحالة غير المبرمجة هي 1 في ميكروكنترولر AVR) فلن تتمكن من التواصل مع شريحتك باستخدام USBASP أو أي مبرمج! تظهر الحالة الافتراضية أيضًا في شاشتك لكل بت فيوز. ينبهك هذا إلى أن SPIEN الافتراضي هو دائمًا 0 (حالة مبرمجة) للسماح لك باستخدام وضع SPI لبرمجة ISP. سلك التصحيح أو بت DW يترك دائمًا 1 (غير مبرمج) عند ضبط SPIEN على 0. هذه هي حالته الافتراضية أيضًا. أيضًا ، في Extended Fuse bits ، يجب أن يكون '' Self Programming Enable '' '1' (غير مبرمج) إذا كنت تستخدم USB-ASP لبرمجة الشريحة المستهدفة الخاصة بك (لا تستخدم برنامج bootloader ROM كما في ARDUINO).

يمكنك تغيير بتات CLOCK (3 في العدد) لتحديد RC داخلي أو بلور خارجي. عادةً ما أتركه لـ RC الداخلي الذي يسمح لك بالحصول على دبابيس إضافية التي يستلزم تحرير البلورة الخارجية استخدامها كدبابيس PORT لمشاريع AVR الخاصة بك. عادة ما تكون هناك حاجة إلى الكريستال الخارجي عندما تحتاج إلى دقة توقيت عالية في مشروعك. بالنسبة للمتعلمين ، فإن RC الداخلي يكفي.

عادة بمجرد أن تستقر على مجموعة من الصمامات لن تقوم بتغييرها. سيكون لمرة واحدة. ستومض ROM فقط أو أحيانًا ذاكرة EEPROM أيضًا. من أجل وميض EEPROM ، يتم إنشاء ملف.eep منفصل بواسطة استوديو WINAVR / ATMEL إذا كان برنامجك يستخدم EEPROM لتخزين البيانات. وبخلاف ذلك ، تُترك ذاكرة EEPROM غير مستخدمة ، ومليئة ببيانات "FF" التي تعرض "حالة عدم وجود بيانات" لـ EEPROM.

الخطوة 7: القيمة النهائية لبتات الصمامات

القيمة النهائية لقم الصمامات
القيمة النهائية لقم الصمامات

بعد ضبط جميع وحدات بتات المصهر ، وإغلاق مربعات التفاصيل التي استخدمتها ، يمكنك رؤية قيمة بتات المصهر كما يحسبها البرنامج (انظر الصورة). كل ما تبقى هو إصدار "Write Fuses" باستخدام القائمة ، وإلقاء نظرة على الرسائل التي تبلغ عن كتابة ناجحة. في وقت لاحق ، يمكنك أيضًا إصدار READ ALL من القائمة والتحقق مما إذا كانت قراءة الصمامات في آخر علامة تبويب من شاشة الموقد تتطابق مع ما تريد كتابته على الشريحة. (التحقق من الصمامات).

ستلاحظ أنه في بداية Instructable عندما فعلنا READ FUSES ، تعرض الشاشة نفس قيم FUSE التي نراها هنا! هذا لأن هذه هي الصمامات التي أستخدمها غالبًا ونادراً ما أغيرها بمجرد تعيينها في MCU الخاص بي ، إلا إذا قمت بتغيير التردد من 1 ميجاهرتز إلى 4 ميجاهرتز لبعض المشاريع. يمكن ضبط AVR على 20 ميجا هرتز كحد أقصى (بعض الرقائق تصل إلى 16 ميجا هرتز فقط). يعتمد التردد الذي تحدده لـ F_cpu أيضًا على الجهد الذي تزود به الشريحة! على سبيل المثال ، إذا كانت شريحتك تعمل من 1.8 فولت من Vcc حتى 5.5 فولت من Vcc (راجع ورقة البيانات) ، فلن تتوقع تشغيل الشريحة الخاصة بك بسرعة 20 ميجا هرتز إذا قمت بتزويدها فقط بـ 1.8 فولت! أنت تتوقع الكثير منه! يخبرك جدول في ورقة البيانات بالجهد الذي يتصدره التكرار عند أي رقم. كلما زاد تواتر تشغيل الرقاقة ، زادت الحرارة والطاقة التي تستهلكها. فكر في التردد مثل نبضات قلب حيوان. الطائر الطنان ذو معدل ضربات القلب المرتفع سيكون له حرق طاقة أعلى في الدقيقة مقارنة بالحوت أو الفيل الذي ينبض قلبه أقل بكثير! ولكن بعد ذلك يمكن أن تفعل أكثر من ذلك بكثير في وقت أقصر. MCU هو بالضبط مثل ذلك.

الخطوة 8: الإنهاء

لقد أكملت الآن جميع الخطوات في eXtreme burner ، لقد قرأت ذاكرة ROM للرقاقة ، وفتحت ملف HEX وأومضته على الشريحة وتحققت من أن الفلاش كان جيدًا ، وتعلمت أيضًا كيفية ضبط الصمامات ووميضها على الشريحة.

إذا كانت لديك أي أسئلة ، فسأكون سعيدًا للإجابة على البرنامج التعليمي أو تعديله لجعله أكثر وضوحًا.

بالنسبة لبعض الرقائق ، قد تجد إدخالها مفقودًا في القائمة المنسدلة لاختيار الشرائح في القائمة. أو قد تواجه أخطاء الكتابة والتحقق من الأخطاء. في مثل هذه الحالات ، يرجى قراءة التعليمات الأخرى "Hacking eXtreme Burner" لحل المشكلة.

برمجة سعيدة.

موصى به: