- المواد المطلوبة:
- ذاكرة متنقله:
- ICSP (البرمجة التسلسلية داخل الدائرة):
- الدائرة والأجهزة:
- حرق الكود باستخدام MPLAB IPE:
ناقشنا في الدرسين السابقين لدينا كيفية البدء مع PIC باستخدام برنامج التحويل البرمجي MPLABX و XC8 ، كما صنعنا أول برنامج LED وامض مع الموافقة المسبقة عن علم وتحققنا منه عن طريق المحاكاة. حان الوقت الآن لكي نضع أيدينا على الأجهزة. في هذا البرنامج التعليمي ، سنقوم ببناء دائرة صغيرة على لوحة الأداء من أجل وميض LED باستخدام الموافقة المسبقة عن علم. سنقوم بتفريغ البرنامج في وحدة التحكم الدقيقة PIC الخاصة بنا والتحقق من وميض LED. لبرمجة PIC MCU سنستخدم MPLAB IPE.
المواد المطلوبة:
كما تمت مناقشته في برنامجنا التعليمي السابق ، سنحتاج إلى المواد التالية:
- PicKit 3
- PIC16F877A إيك
- 40 - حامل دبوس IC
- مجلس بيرف
- 20 ميجا هرتز كريستال OSC
- دبابيس بيرجستيك للإناث والذكور
- 33pf مكثف - عدد 2 ، 100 فائق التوهج و 10 فائق التوهج غطاء.
- 680 أوم ، 10 كيلو و 560 أوم المقاوم
- LED من أي لون
- 1 طقم لحام
- IC 7805
- محول 12 فولت
ماذا يحدث عندما "نحرق" متحكم !!
من الممارسات المعتادة تحميل الكود إلى MCU وتشغيله داخل MCU.
من أجل فهم هذا ، دعونا نلقي نظرة على برنامجنا
كما يمكننا أن نرى هذا الكود مكتوب بلغة C ولن يكون له أي معنى لـ MCU لدينا. هذا هو المكان الذي يأتي فيه جزء المترجم لدينا ؛ و مترجم واحد والذي يحول هذا الرمز في شكل مقروء آلة. يسمى هذا النموذج القابل للقراءة آليًا رمز HEX ، وسيكون لكل مشروع نقوم بإنشائه رمز HEX والذي سيكون في الدليل التالي
** موقعك ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
إذا كنت مهتمًا جدًا بمعرفة كيف يبدو رمز HEX هذا ، فما عليك سوى فتحه باستخدام المفكرة. بالنسبة لبرنامج Blink الخاص بنا ، سيبدو كود HEX كما يلي:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
هناك طرق حول كيفية قراءة هذا وكيفية فهمه وعكسه مرة أخرى إلى لغة التجميع ، ولكنه خارج نطاق هذا البرنامج التعليمي تمامًا. لذلك ، ببساطة ، باختصار ؛ HEX هي النتيجة النهائية للبرنامج لترميزنا وهذا ما سيتم إرساله إلى الخارج بواسطة MPLAB IPE لنسخ MCU.
ذاكرة متنقله:
و يتم تخزين كود HEX في MCU في مكان يسمى ذاكرة فلاش. ذاكرة الفلاش هي المكان الذي سيتم فيه تخزين برنامجنا داخل MCU ويتم تنفيذه من هناك. بمجرد تجميع البرنامج في MPLABX الخاص بنا ، سيكون لدينا المعلومات التالية حول نوع الذاكرة على وحدة التحكم في الإخراج
نظرًا لأننا قمنا للتو بتجميع برنامج صغير وامض LED ، يوضح ملخص الذاكرة أننا قد استهلكنا للتو 0.5٪ من مساحة البرنامج المتاحة و 1.4٪ من مساحة البيانات.
تنقسم ذاكرة الميكروكونترولر PIC16F877 أساسًا إلى 3 أنواع:
ذاكرة البرنامج: تحتوي هذه الذاكرة على البرنامج (الذي كتبناه) بعد أن قمنا بحرقه. للتذكير ، يقوم Program Counter بتنفيذ الأوامر المخزنة في ذاكرة البرنامج ، واحدة تلو الأخرى. نظرًا لأننا كتبنا برنامجًا صغيرًا جدًا ، فقد استهلكنا 0.5٪ فقط من المساحة الإجمالية. هذه ذاكرة غير متطايرة ، مما يعني أن البيانات المخزنة لن تضيع بعد انقطاع التيار الكهربائي.
ذاكرة البيانات: هذا هو نوع ذاكرة RAM ، والذي يحتوي على سجلات خاصة مثل SFR (سجل الوظائف الخاصة) الذي يتضمن مؤقت Watchdog و Brown out Reset وما إلى ذلك و GPR (سجل الأغراض العامة) الذي يتضمن TRIS و PORT وما إلى ذلك. المتغيرات المخزنة في ذاكرة البيانات أثناء البرنامج ، يتم حذفها بعد إيقاف تشغيل MCU. أي متغير تم الإعلان عنه في البرنامج سيكون داخل ذاكرة البيانات. هذه أيضًا ذاكرة متقلبة.
البيانات EEPROM (ذاكرة القراءة فقط القابلة للمسح كهربائياً والقابلة للبرمجة): ذاكرة تسمح بتخزين المتغيرات نتيجة نسخ البرنامج المكتوب. على سبيل المثال ، إذا قمنا بتعيين متغير "a" لحفظ قيمة 5 فيه وتخزينه في EEPROM ، فلن تضيع هذه البيانات حتى إذا تم إيقاف تشغيل الطاقة. هذه ذاكرة غير متطايرة.
ذاكرة البرنامج و EEPROM هي ذاكرات غير متقلبة ، وتسمى ذاكرة فلاش أو EEPROM.
ICSP (البرمجة التسلسلية داخل الدائرة):
سنقوم ببرمجة PIC16F877A باستخدام خيار ICSP المتوفر في MCU الخاص بنا.
الآن ، ما هو ICSP؟
ICSP هي طريقة بسيطة تساعدنا على برمجة MCU حتى بعد وضعها داخل لوحة المشروع الخاصة بنا. ليست هناك حاجة إلى وجود لوحة مبرمج منفصلة لبرمجة MCU ، كل ما نحتاجه هو 6 اتصالات من مبرمج PicKit3 إلى مجلسنا كما يلي:
1 |
VPP (أو MCLRn) |
للدخول في وضع البرمجة. |
2 |
Vcc |
Power Pin 11 أو 32 |
3 |
GND |
رقم التعريف الشخصي الأرضي 12 أو 31 |
4 |
PGD - البيانات |
RB7. PIN40 |
5 |
PGC - الساعة |
RB6. رقم التعريف الشخصي 39 |
6 |
PGM - تمكين LVP |
RB3 / RB4. ليس إلزاميا |
ICSP مناسب لجميع حزم الموافقة المسبقة عن علم ؛ كل ما نحتاجه هو سحب هذه الدبابيس الخمسة (الدبوس السادس PGM اختياري) من MCU إلى Pickit3 كما هو موضح في الصورة أدناه.
الدائرة والأجهزة:
الآن ، لدينا رمز HEX جاهزًا ونعرف أيضًا كيفية توصيل PicKit 3 الخاص بنا بـ PIC MCU باستخدام ICSP. لذلك ، دعنا نمضي قدمًا ونلحم الدائرة بمساعدة المخططات أدناه:
في الدائرة أعلاه ، استخدمت 7805 لتنظيم خرج 5 فولت إلى PIC MCU. سيتم تشغيل هذا المنظم بواسطة محول جدار مارت 12 فولت. يستخدم المصباح الأحمر للإشارة إلى ما إذا كانت الموافقة المسبقة عن علم تعمل بالطاقة. يستخدم الموصل J1 لبرمجة ICSP. يتم توصيل المسامير كما هو موضح في الجدول أعلاه.
يجب تثبيت الدبوس الأول MCLR عالياً بمساعدة 10 كيلو افتراضيًا. هذا سوف يمنع MCU من إعادة التعيين. من أجل إعادة ضبط MCU ، يجب تثبيت الدبوس MCLR على الأرض والذي يمكن القيام به بمساعدة المفتاح SW1.
يتم توصيل LED بالدبوس RB3 من خلال المقاوم بقيمة 560 أوم (انظر حاسبة مقاومة LED). إذا كان كل شيء على ما يرام بمجرد تحميل برنامجنا ، يجب أن يومض هذا LED بناءً على البرنامج. تم بناء الدائرة بأكملها على لوحة Perfboard عن طريق لحام جميع المكونات الموجودة عليها كما ترون في الصورة في الأعلى.
حرق الكود باستخدام MPLAB IPE:
لنسخ الكود ، اتبع الخطوات التالية:
- قم بتشغيل MPLAB IPE.
- قم بتوصيل أحد طرفي PicKit 3 بجهاز الكمبيوتر الخاص بك والطرف الآخر بدبابيس ICSP الموجودة على لوحة الأداء.
- قم بالاتصال بجهاز الموافقة المسبقة عن علم الخاص بك عن طريق النقر فوق زر الاتصال.
- استعرض للوصول إلى ملف Blink HEX وانقر على البرنامج.
إذا سارت الأمور كما هو مخطط لها ، يجب أن تظهر رسالة النجاح على الشاشة تحقق من الكود والفيديو أدناه للحصول على شرح كامل واستخدم قسم التعليقات إذا كان لديك أي شك.
شكرا لك!!!
دعنا نلتقي في البرنامج التعليمي التالي حيث سنلعب بمزيد من مصابيح LED ومفتاح.