- ما هي الصمامات في AVR - شرح تفصيلي
- فتيل بت في اردوينو
- المكونات المطلوبة لاختبار الصمامات في AVR
- تخطيطي لاختبار الصمامات في AVR
- اختبار الصمامات في AVR
في هذا البرنامج التعليمي ، سنتحدث عن الصمامات. عندما كنت في الكلية وأتعلم كل الأشياء الرائعة في الإلكترونيات ، سمعت مصطلح الصمامات في AVR لأول مرة ، وكان تفكيري الأولي حول الموضوع ، أوه! هناك شيء ما داخل AVR سينفجر إذا فعلت شيئًا خاطئًا. في ذلك الوقت ، لم يكن هناك الكثير من الموارد المتاحة على الإنترنت لتصفحها. لقد بحثت كثيرًا لاكتشاف أن هذه الصمامات تشير إلى بعض البتات الخاصة داخل متحكم AVR. هذه البتات تشبه المفاتيح الصغيرة داخل AVR ومن خلال تشغيلها / إيقاف تشغيلها ، يمكننا تشغيل / إيقاف تشغيل بعض الميزات الخاصة لـ AVR. تشغيله وإيقاف تشغيله يعني ضبط وإعادة ضبط.
سننتهز هذه الفرصة لمناقشة كل ما هو موجود حول بتات الصمامات في AVR. من أجل البساطة ، سنأخذ مثالًا على لوحة Arduino التي تضم متحكم ATmega328P الشهير. هنا ، سوف تتعلم كيفية ضبط هذه الصمامات لضبط بعض هذه الميزات وتشغيلها وإيقافها والتي تكون مفيدة حقًا في تطبيقات الحياة الواقعية. لذا ، دعنا ندخلها مباشرة.
في منشوراتنا السابقة ، قمنا ببناء الكثير من مشاريع وحدات التحكم الدقيقة AVR مثل وحدة Interfacing GSM مع متحكم AVR و Interfacing HC-05 مع متحكم AVR. يمكنك التحقق منها إذا كنت تريد معرفة المزيد عن هذه المشاريع.
ما هي الصمامات في AVR - شرح تفصيلي
كما ناقشنا سابقًا ، تشبه الصمامات في وحدة التحكم الدقيقة مفاتيح صغيرة يمكن تشغيلها وإيقاف تشغيلها لتمكين وتعطيل الميزات المختلفة في متحكم AVR. هذا هو الجزء الذي يطرح فيه سؤالنا التالي ، فكيف نضبط هذه الصمامات أو نعيد ضبطها؟ الإجابة على هذا السؤال بسيطة: نقوم بذلك بمساعدة مسجلات الصمامات.
في ATmega328P IC ، يوجد إجمالي 19 بت فتيل وهي مقسمة إلى ثلاثة بايتات فتيل. يتم تعريفها على أنها "وحدات بايت الصمامات الموسعة" ، و "بايت المصهر العالي" ، و "بايت المصهر المنخفض".
إذا نظرت إلى الجدول 27 من ورقة بيانات ATmega328 / P Rev: 7810D – AVR – 01/15 ، يمكنك معرفة كل التفاصيل الصغيرة حول بتات الصمامات. لكن الصورة أدناه ستمنحك فكرة أفضل عن قسم بتات الصمامات في ورقة البيانات.
الآن كما تعلمت قليلاً عن بتات الصمامات ، دعنا ننتقل إلى ورقة البيانات ونكتشف كل التفاصيل الضرورية حول هذا IC.
بتات الصمامات الممتدة:
بمجرد النقر فوق علامة التبويب Fuse Bits والتمرير لأسفل قليلاً ، ستجد الجدول 27-5: الذي يعرض جدول "Extended Fuse Byte" المعروف باسم " EFUSE". الصورة أدناه تظهر ذلك بالضبط.
في هذا الجدول ، لا يوجد سوى ثلاث بتات قابلة للاستخدام ، والثلاثة الأخرى محفوظة. تتعامل هذه البتات الثلاثة مع مستوى الكشف عن انقطاع التيار. كما ترى في الملاحظة إذا نظرنا إلى الجدول 28-5 ، يمكننا العثور على مزيد من التفاصيل حول هذا الموضوع.
كما ترون في الجدول أعلاه ، لدينا جدول للكشف عن انقطاع التيار الكهربائي. يعد اكتشاف انقطاع التيار الكهربائي ميزة تعيد تعيين وحدة التحكم الدقيقة عندما ينخفض جهد الإمداد عن مستوى جهد معين. في ATmega328P IC ، يمكننا تعطيل اكتشاف اللون البني تمامًا أو يمكننا ضبطه على المستويات الموضحة في الجدول أعلاه.
بايت فيوز عالي:
كما ترى في الصورة أدناه ، يظهر الجدول 27-6: من ورقة البيانات بتات الصمامات العالية في ATmega328P IC.
و الصمامات العليا صفقة مع مختلف المهام داخل ATmega328 متحكم. في هذا القسم ، سنتحدث عن بتات الصمامات العليا وطرق عملها. لنبدأ بتلات BOOTRST و BOOTSZ0 و BOOTSZ1. هذه البتات الثلاث مسؤولة عن تحديد حجم التمهيد ؛ يشير حجم التمهيد إلى مقدار الذاكرة المحجوزة لتثبيت أداة تحميل التشغيل .
محمل الإقلاع عبارة عن جزء خاص من البرامج يتم تشغيله أعلى وحدة التحكم الدقيقة ويدير مهام مختلفة. ولكن في حالة Arduino ، يتم استخدام أداة تحميل التشغيل لتحميل رسم Arduino داخل وحدة التحكم الدقيقة. في إحدى مقالاتنا السابقة ، أوضحنا لك كيفية نسخ Bootloader في ATmega328P باستخدام Arduino. يمكنك التحقق من ذلك إذا كنت مهتمًا بالموضوع. بالعودة إلى موضوعنا ، فإن أغراض البتات الأخرى في البايت العالي واضحة بشكل معقول ، فإن بت EESAVE هو الحفاظ على ذاكرة EEPROM أثناء إجراء دورة محو الرقاقة. بت WDTON هو تمكين أو تعطيل Watchdog Timer.
مؤقت المراقبة هو مؤقت خاص في ATmega328P IC الذي له ساعة منفصلة ويعمل بشكل مستقل. إذا تم تمكين مؤقت المراقبة ، فأنت بحاجة إلى مسحه بفترة معينة ، وإلا فإن مؤقت المراقبة سيعيد ضبط المتحكم الدقيق. هذه ميزة مفيدة تأتي في العديد من ميكروكنترولر إذا توقف المعالج ؛ ستقوم الوكالة الدولية للطاقة بإعادة تعيينها لمنع أي ضرر للتطبيق النهائي.
يوجد بت DWEN لتمكين سلك التصحيح ؛ هذا بروتوكول تحضيري مضمن داخليًا في أجهزتهم ، ويستخدم لبرمجة المعالجات وتصحيحها. مع تمكين هذه الميزة ، يمكنك وميض المعالج وتصحيحه باستخدام سلك واحد متصل. لكن لاستخدامه ، ستحتاج إلى أجهزة خاصة تحضيرية لـ Atmel.
البتتان المتبقيتان هما تلك البتات التي تحتاج إلى تجنبها إلا إذا كنت تعرف بالضبط ما تفعله. هذه هي RSTDISBL bit-7 و SPIEN bit-5. RSTDISBL (تعطيل إعادة التعيين الخارجي) كما يوحي الاسم يعطل دبوس إعادة تعيين الأجهزة الخارجية ، ويتم استخدام بت SPIEN لتعطيل واجهة برمجة SPI. يمكن أن يؤدي تعطيل أي من هاتين البتتين إلى تعطيل AVR بالكامل ؛ لذلك ، تركهم وشأنهم فكرة جيدة.
بايت الانصهار المنخفض:
كما ترى في الصورة أدناه ، يظهر الجدول 27-7: من ورقة البيانات بتات الصمامات السفلية في ATmega328P IC.
إن بايت المصهر هذا مسؤول عن إعداد مصدر الساعة وبعض المعلمات الأخرى للساعة داخل AVR. في هذا القسم سنتعرف على كل ذلك.
يمكن ضبط البتة السابعة أو علامة CKDIV8 لتقسيم مصدر الساعة على 8 ، وهذا مفيد جدًا وقد تعرف بالفعل ما إذا كنت قد جربت برمجة AVR بنفسك. الجزء التالي هو بت CKOUT وهو بت 6 في بايت Low Fuse Byte. برمجتها ستخرج إشارة الساعة الداخلية على PORTB0 للميكروكونترولر.
تتحكم البتات 5 والبت 4 SUT1 و SUT0 في وقت بدء تشغيل وحدة التحكم الدقيقة. هذا يمنع أي إجراءات بدء التشغيل التي قد تحدث أو لا تحدث قبل أن يصل جهد الإمداد إلى مستوى الحد الأدنى المقبول للجهد. ويتم استخدام الأربعة بت CKSEL0 - 4 الأخيرة لتحديد مصدر الساعة للمتحكم الدقيق. يمنحك الجدول الموضح أدناه فهمًا أفضل لهذه البتات الأربعة المسؤولة عن إعداد مصدر الساعة ، ويمكنك العثور على هذا الجدول في قسم مصدر الساعة في ورقة البيانات.
الآن ، قبل أن نصل إلى أبعد من ذلك ، هناك شيء آخر يجب أن أخوض فيه وهو جدول تأخير بدء تشغيل المذبذب. من خلال تأخير بدء التشغيل ، فإننا نشير إلى البتتين 4 و 5 من بايت المصهر السفلي. يجب ضبط التأخيرات اعتمادًا على الحالة التي ستعمل فيها الدائرة ونوع المذبذب الذي تستخدمه. يتم تعيين القيم الافتراضية على إبطاء ارتفاع الطاقة مع 6 دورات ساعة عند تنفيذ تسلسل بدء التشغيل أو خفض الطاقة. بعد ذلك ، هناك تأخير آخر قدره 14 دورة على مدار الساعة مع تأخير 65 مللي ثانية بعد بدء التشغيل.
تفو! كان هذا الكثير من المعلومات للاستيعاب. ولكن قبل المضي قدمًا ، دعنا ننهي هذا القسم بملاحظة سريعة.
ملحوظة:
إذا نظرت إلى ورقة البيانات بعناية ، فلابد أنك لاحظت أن برمجة بت الصمامات تعني ضبطها منخفضة ، أي 0 (صفر) ، وهو عكس ما نفعله عمومًا لجعل المنفذ مرتفعًا أو منخفضًا. عليك أن تضع ذلك في الاعتبار أثناء تكوين الصمامات الخاصة بك.
فتيل بت في اردوينو
لقد تحدثنا كثيرًا عن الصمامات في القسم أعلاه ، ولكن في هذا القسم ، دعنا نتحدث عن كيفية تكوينها وكيفية كتابتها في متحكم دقيق. لذلك ، سنحتاج إلى أداة تسمى Avrdude. إنها أداة يمكن استخدامها لقراءة وكتابة وتعديل الذاكرة في ميكروكنترولر AVR. إنه يعمل مع SPI ولديه قائمة طويلة من الدعم لأنواع مختلفة من المبرمجين. يمكنك تنزيل الأداة من الرابط أدناه. أيضًا ، سنستخدم متحكمنا المفضل Arduino.
- قم بتنزيل الإصدار 6.3 من Avrdude لنظام التشغيل Windows-ming32
الآن ، بعد أن أصبح لديك Avrdude ، تحتاج إلى استخراج ذلك وفتح نافذة أوامر في هذا المجلد. أيضًا ، إذا كنت تخطط لاستخدامه لاحقًا ، فيمكنك إضافة مسار المجلد إلى قسم متغير بيئة Windows. لكنني سأضعه على سطح المكتب الخاص بي وأفتح نافذة أوامر هناك. بمجرد القيام بذلك ، سنقوم بتوصيل مبرمج USBasp بجهاز الكمبيوتر الخاص بنا وسنتأكد من أن لدينا برنامج التشغيل المناسب لمبرمج USBasp الخاص بنا. بمجرد القيام بذلك ، نحن على ما يرام وسنقرأ قيمة الصمامات الافتراضية أولاً. للقيام بذلك ، تحتاج إلى تشغيل الأمر التالي.
avrdude.exe -c usbasp -p m328p -U lfuse: r: low_fuse_val.txt: h -U hfuse: r: high_fuse_val.txt: h -U efuse: r: ext_fuse_val.txt: h
إذا كان كل شيء على ما يرام ، فسيقرأ هذا الأمر بايتات المصهر ويضعها في ثلاثة ملفات نصية منفصلة. ستمنحك الصورة أدناه فكرة أفضل عن العملية.
كما ترون ، قام Avrdude بقراءة بتات الصمامات على Arduino nano وحفظها في ثلاثة ملفات نصية منفصلة. الآن ، فتحناها وحصلنا على ثلاث قيم ؛ من أجل EFUSE: 0xFD ، لـ HFUSE: 0XDA ، لـ LFUSE: 0xFF. كانت هذه هي قيمة الصمامات الافتراضية التي حصلنا عليها من أجل Arduino nano. الآن ، دعنا نحول هذه البتات إلى ثنائي ونقارنها بقيمتها الافتراضية من ورقة البيانات. الجدول أدناه يوضح ذلك بالضبط.
للراحة ، تتم كتابة بتات الصمامات بقيم سداسية عشرية ، ولكن إذا قمنا بتحويلها إلى قيم ثنائية وقارنتها بورقة البيانات ، فسنعرف ما يحدث. لنبدأ بـ Lower Fuse Byte. كما ترى من السلسلة أعلاه ، تم ضبطها على 0XFF وستكون القيمة الثنائية 0B11111111.
مقارنة وحدات البايت المنخفضة للصهر مع Arduino:
بايت فيوز منخفض |
رقم القطعة |
القيمة الافتراضية في AVR |
القيمة الافتراضية لاردوينو |
CKDIV8 |
7 |
0 (مبرمج) |
1 (غير مبرمج) |
CKOUT |
6 |
1 (غير مبرمج) |
1 (غير مبرمج) |
SUT1 |
5 |
1 (غير مبرمج) |
1 (غير مبرمج) |
SUT0 |
4 |
0 (مبرمج) |
1 (غير مبرمج) |
CKSEL3 |
3 |
0 (مبرمج) |
1 (غير مبرمج) |
CKSEL2 |
2 |
0 (مبرمج) |
1 (غير مبرمج) |
CKSEL1 |
1 |
1 (غير مبرمج) |
1 (غير مبرمج) |
CKSEL0 |
0 |
0 (مبرمج) |
1 (غير مبرمج) |
تم تعيين High Fuse Byte على 0XDA في النظام الثنائي وهو 0B11011010.
بايت فيوز أعلى في ثنائي:
بايت فيوز عالي |
رقم القطعة |
القيمة الافتراضية في AVR |
القيمة الافتراضية لاردوينو |
RSTDISBL |
7 |
1 (غير مبرمج) |
1 (غير مبرمج) |
دوين |
6 |
1 (غير مبرمج) |
1 (غير مبرمج) |
سبيين |
5 |
0 (مبرمج) |
0 (مبرمج) |
ودتون |
4 |
1 (غير مبرمج) |
1 (غير مبرمج) |
EESAVE |
3 |
1 (غير مبرمج) |
1 (غير مبرمج) |
بوتسز 1 |
2 |
0 (مبرمج) |
0 (مبرمج) |
بوتسز 0 |
1 |
0 (مبرمج) |
1 (غير مبرمج) |
BOOTRST |
0 |
1 (غير مبرمج) |
0 (مبرمج)) |
تم ضبط إعداد Extended Fuse Byte على 0XFD ، وفي النظام الثنائي يكون 0B11111101.
تمديد فتيل بايت في ثنائي:
تمديد الصمامات بايت |
رقم القطعة |
القيمة الافتراضية في AVR |
القيمة الافتراضية لاردوينو |
- |
7 |
1 |
1 |
- |
6 |
1 |
1 |
- |
5 |
1 |
1 |
- |
4 |
1 |
1 |
- |
3 |
1 |
1 |
BODLEVEL2 |
2 |
1 (غير مبرمج) |
1 (غير مبرمج) |
BODLEVEL1 |
1 |
1 (غير مبرمج) |
0 (مبرمج) |
BODLEVEL0 |
0 |
1 (غير مبرمج) |
1 (غير مبرمج) |
الآن ، هذا يمثل نهاية هذا القسم. اعتبارًا من الآن ، تعلمنا الكثير عن الميكروكونترولر AVR وبتات الصمامات. لذلك ، دعونا نختتم هذه المقالة عن طريق وضع نظريتنا على المحك من خلال تعديل وتجريب بعض بتات الصمامات في Arduino Nano.
المكونات المطلوبة لاختبار الصمامات في AVR
لقد تحدثنا كثيرًا عن الصمامات في الجزء أعلاه. ولكن للمضي قدمًا في المقالة ، نحتاج إلى بعض مكونات الأجهزة وبعض أدوات البرامج. في هذا القسم سنتحدث عن هؤلاء. قائمة المكونات المطلوبة مع الصور مبينة أدناه.
- اللوح - 1
- اردوينو نانو - 1
- USBasp AVR مبرمج - 1
- كبل USB - 1
- AVR 10-Pin to 6- Pin Converter - 1
- Avrdude (أداة برمجية لبرمجة AVR)
- LED - 1
- 330R المقاوم -1
- كابلات العبور
تخطيطي لاختبار الصمامات في AVR
يتم عرض إعداد اختبار الأجهزة أدناه في هذا الإعداد. لقد قمنا بتوصيل Arduino Nano بجهاز الكمبيوتر باستخدام كبل USB ، وقمنا أيضًا بتوصيل مبرمج USBasp بجهاز الكمبيوتر. الهدف من هذه المقالة هو برمجة بتات الصمامات في AVR. لهذا السبب ، قمنا بتوصيل مبرمج USBasp بـ Arduino. ستمنحك الصورة أدناه فكرة أفضل عن الإعداد.
اختبار الصمامات في AVR
يتم عرض إعداد الاختبار أدناه. كما ترون ، قمنا بتوصيل Arduino ومبرمج USBasp بكل من USB في الكمبيوتر المحمول الخاص بي.
الآن دعنا نفتح Arduino IDE ونقوم بتحميل رسم وميض أساسي. إن محتوى مخطط الوميض الأساسي واضح بذاته ، لذلك لم أضع أي تفاصيل عنه.
سترى في الفيديو أن الصمام الموجود على الدبوس رقم 13 يومض كما ينبغي. الآن دعنا نعدل إعدادات الصمامات ونضبطها على قيمها الافتراضية. وكما رأينا سابقًا في ورقة البيانات ؛ و EFUSE هو عشرية 0xFF. HFUSE هو D9 ؛ LFUSE هو: 62. الآن دعنا نقوم بتكوينه باستخدام Avrdude ، وميضه ، ونرى ما يحدث. الكود الذي سنستخدمه هو-
avrdude -c usbasp -p m328P -U lfuse: w: 0x62: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
بمجرد القيام بذلك ، سترى أن مؤشر LED سيومض ببطء شديد لأننا قمنا بحساب وبرمجة القيمة لساعة 16 ميجا هرتز والآن بعد حرق الصمامات ، أصبح مذبذب RC داخليًا 1 ميجا هرتز فقط. هذا هو سبب وميض LED ببطء شديد. الآن دعنا نحاول تحميل رسم مرة أخرى. سنرى أن Arduino يعطي خطأ ولا يتم تحميل الكود. لأنه من خلال تغيير الصمامات ، فقد أفسدنا أيضًا إعدادات أداة تحميل التشغيل. يمكنك أن ترى ذلك في الصورة أدناه.
لإصلاح ذلك وإعادة Arduino كما كان من قبل ، نحتاج فقط إلى نسخ أداة تحميل التشغيل مرة أخرى لـ Arduino. للقيام بذلك ، انتقل إلى Tools -> Programmer- USBasp ، وبمجرد أن نفعل ذلك ، يمكننا الانتقال مرة أخرى إلى الأدوات ويمكننا النقر فوق خيار أداة تحميل التشغيل. سيؤدي هذا مرة أخرى إلى حرق محمل إقلاع المخزون على Arduino وسيعود كل شيء إلى ما كان عليه من قبل.
بعد إعادة وميض محمل الإقلاع إلى Arduino ، عاد إلى حالته الأصلية وتظهر لك الصورة الأخيرة مؤشر LED وامض بعد حرق أداة تحميل التشغيل مرة أخرى.
وهذا يمثل نهاية هذا المقال. أتمنى أن تكون قد استمتعت بالمقال وتعلمت شيئًا جديدًا. إذا كان لديك أي أسئلة بخصوص المقال ، فلا تتردد في كتابة تعليق أدناه.