- إعداد الأجهزة والمتطلبات
- مخطط دارة لتفاعل LED مع Nuvoton N76E003
- دبابيس المؤقت على Nuvoton N76E003
- يسجل الموقت في Nuvoton N76E003
- أنواع الأوقات في Nuvoton N76E003
- برمجة Nuvoton N76E003 متحكم دقيق للمؤقتات
- رمز وامض والتحقق من الإخراج لوظيفة المؤقت
في البرامج التعليمية السابقة الخاصة بـ Nuvoton Microcontroller ، استخدمنا برنامج وميض LED أساسي كدليل لبدء الاستخدام وأيضًا واجهنا GPIO كمدخل لتوصيل مفتاح لمسي. من خلال هذا البرنامج التعليمي ، نحن ندرك تمامًا كيفية تكوين مشروع Keil وإعداد البيئة لبرمجة N76E003 Nuvoton microcontroller. حان الوقت لاستخدام طرف داخلي لوحدة المتحكم الدقيق والتحرك أبعد قليلاً باستخدام Timer المدمج في N76E003.
في برنامجنا التعليمي السابق ، استخدمنا فقط تأخير البرنامج لميض مؤشر LED ، لذلك في هذا البرنامج التعليمي ، سوف نتعلم كيفية استخدام وظيفة تأخير المؤقت بالإضافة إلى Timer ISR (Interrupt Service Routine) وميض اثنين من مصابيح LED الفردية. يمكنك أيضًا الاطلاع على برنامج Arduino Timer Tutorial و PIC Timer للتحقق من كيفية استخدام أجهزة ضبط الوقت مع وحدات التحكم الدقيقة الأخرى. دون إضاعة الكثير من الوقت ، دعنا نقيم نوع إعداد الأجهزة الذي نحتاجه.
إعداد الأجهزة والمتطلبات
نظرًا لأن متطلبات هذا المشروع هي معرفة Timer ISR ووظيفة تأخير المؤقت ، فسنستخدم اثنين من مؤشرات LED ، سيتم وميض أحدهما باستخدام تأخير المؤقت في حلقة while والآخر سيتم وميضه داخل وظيفة ISR.
نظرًا لأن مؤشر LED متاح في لوحة التطوير N76E003 ، فإن هذا المشروع يتطلب مؤشر LED إضافيًا ومقاومًا محددًا للتيار للحد من تيار LED. المكونات التي نحتاجها -
- أي لون من LED
- 100R المقاوم
ناهيك ، بخلاف المكونات المذكورة أعلاه ، نحتاج إلى لوحة تطوير تعتمد على متحكم N76E003 بالإضافة إلى Nu-Link Programmer. بالإضافة إلى ذلك ، فإن أسلاك التوصيل واللوح مطلوبة أيضًا لتوصيل جميع المكونات.
مخطط دارة لتفاعل LED مع Nuvoton N76E003
كما نرى في المخطط أدناه ، يتوفر مؤشر LED للاختبار داخل لوحة التطوير وهو متصل بالمنفذ 1.4. تم توصيل مصباح LED إضافي بالمنفذ 1.5. يستخدم المقاوم R3 للحد من تيار LED. في أقصى اليسار ، يظهر اتصال واجهة البرمجة.
دبابيس المؤقت على Nuvoton N76E003
على الرسم البياني دبوس من N76E003 يمكن أن ينظر في أدناه -الصورة
كما نرى ، كل دبوس له مواصفات مختلفة ويمكن استخدام كل دبوس لأغراض متعددة. ومع ذلك ، فإن الدبوس 1.5 الذي يستخدم كدبوس إخراج LED ، سيفقد PWM والوظائف الأخرى. ولكن ، هذه ليست مشكلة حيث أن وظيفة أخرى غير مطلوبة لهذا المشروع.
السبب وراء اختيار الدبوس 1.5 كإخراج والدبوس 1.6 كمدخل يرجع إلى توفر أقرب دبابيس GND و VDD لسهولة الاتصال. ومع ذلك ، في هذا المتحكم الدقيق من 20 دبابيس ، يمكن استخدام 18 دبوسًا كدبوس GPIO ويمكن استخدام أي دبابيس GPIO أخرى للأغراض المتعلقة بالإخراج والإدخال ، باستثناء الدبوس 2.0 الذي يتم استخدامه بشكل مخصص لإعادة الإدخال ولا يمكن استخدامه انتاج. يمكن تكوين جميع دبابيس GPIO في الوضع الموضح أدناه.
وفقًا لورقة البيانات ، يعد PxM1.n و PxM2.n مسجلين يتم استخدامهما لتحديد عملية التحكم في منفذ الإدخال / الإخراج. نظرًا لأننا نستخدم LED ونطلب الدبوس كدبابيس إخراج عامة ، لذلك سنستخدم الوضع شبه ثنائي الاتجاه للدبابيس.
يسجل الموقت في Nuvoton N76E003
يعد المؤقت أمرًا مهمًا لأي وحدة تحكم دقيقة. متحكم يأتي مع جهاز توقيت طرفية مدمج. يأتي nuvoton N76E003 أيضًا مع أجهزة طرفية لمؤقت 16 بت. ومع ذلك ، يتم استخدام كل مؤقت لأغراض مختلفة ، وقبل استخدام أي واجهة مؤقت من المهم معرفة المؤقت.
أنواع الأوقات في Nuvoton N76E003
المؤقت 0 و 1:
هذان المؤقتان timer0 و timer1 متطابقان مع أجهزة ضبط الوقت 8051. يمكن استخدام هذين المؤقتين كمؤقت عام أو كعدادات. يعمل هذان المؤقتان في أربعة أوضاع. في الوضع 0 ، ستعمل هذه العدادات في وضع عداد / عداد 13 بت. في الوضع 1 ، ستكون دقة البت لهذين المؤقتين 16 بت. في الوضع 2 ، يتم تكوين المؤقتات كوضع إعادة تحميل تلقائي بدقة 8 بت. في الوضع 3 ، يتم إيقاف المؤقت 1 ويمكن استخدام المؤقت 0 كعداد ومؤقت في نفس الوقت.
من بين هذه الأوضاع الأربعة ، يتم استخدام الوضع 1 في معظم الحالات. يمكن لهذين العدادات استخدام Fsys (تردد النظام) في الوضع الثابت أو المحدد مسبقًا (Fys / 12). يمكن أيضًا تسجيله من مصدر ساعة خارجي.
الموقت 2:
Timer 2 هو أيضًا مؤقت 16 بت يستخدم بشكل أساسي لالتقاط شكل الموجة. كما أنه يستخدم ساعة النظام ويمكن استخدامه في تطبيقات مختلفة بقسمة تردد الساعة باستخدام 8 مقاييس مختلفة. يمكن استخدامه أيضًا في وضع المقارنة أو لإنشاء PWM.
مثل Timer 0 و Timer 1 ، يمكن استخدام Timer 2 في وضع إعادة التحميل التلقائي.
الموقت 3:
يستخدم Timer 3 أيضًا كمؤقت 16 بت ويتم استخدامه لمصدر ساعة معدل البث بالباود لـ UART. كما أن لديها ميزة إعادة التحميل التلقائي. من المهم استخدام هذا المؤقت فقط للاتصال التسلسلي (UART) إذا كان التطبيق يتطلب اتصال UART. من المستحسن عدم استخدام هذا المؤقت لأغراض أخرى في مثل هذه الحالة بسبب العملية المتضاربة في إعداد المؤقت.
مؤقت جهاز المراقبة:
يمكن استخدام Watchdog Timer كمؤقت قياسي 6 بت ولكن لا يتم استخدامه لهذا الغرض. استخدام مؤقت Watchdog كمؤقت للأغراض العامة قابل للتطبيق على تطبيقات استهلاك الطاقة المنخفض حيث يبقى المتحكم الدقيق في وضع الخمول.
Watchdog Timer ، كما يوحي الاسم ، يتحقق دائمًا مما إذا كان الميكروكونترولر يعمل بشكل صحيح أم لا. في حالة وجود وحدة تحكم دقيقة معلقة أو متوقفة ، تقوم WDT (Watchdog Timer) بإعادة تعيين وحدة التحكم الدقيقة تلقائيًا والتي تضمن تشغيل وحدة التحكم الدقيقة في تدفق رمز مستمر دون أن تتعطل أو تتوقف أو تتوقف في المواقف.
مؤقت الاستيقاظ الذاتي:
هذا هو جهاز طرفية آخر للعداد الذي يخدم عملية توقيت مخصصة مثل جهاز ضبط الوقت. يقوم هذا الموقت بتنبيه النظام بشكل دوري عندما يعمل المتحكم الدقيق في وضع الطاقة المنخفضة.
يمكن استخدام جهاز المؤقت الداخلي هذا داخليًا أو باستخدام الأجهزة الطرفية الخارجية لإيقاظ وحدة التحكم الدقيقة من وضع السكون. بالنسبة لهذا المشروع ، سوف نستخدم Timer 1 و Timer 2.
برمجة Nuvoton N76E003 متحكم دقيق للمؤقتات
ضبط الدبابيس كإخراج:
لنبدأ بقسم الإخراج أولاً. نحن نستخدم اثنين من مصابيح LED ، أحدهما هو مؤشر LED المدمج ، المسمى Test ، ومتصل بالمنفذ P1.4 ومصباح LED خارجي متصل بالدبوس P1.5.
لذلك ، يتم تكوين هذين الدبابيس كدبوس إخراج لتوصيل هذين الدبابيس باستخدام مقتطفات التعليمات البرمجية أدناه.
#define Test_LED P14 # تعريف LED1 ص 15
يتم تعيين هذين الدبابيس كدبوس شبه ثنائي الاتجاه في وظيفة الإعداد.
إعداد باطل (باطل) {P14_Quasi_Mode؛ P15_Quasi_Mode ؛ }
ضبط وظيفة المؤقت:
في وظيفة الإعداد ، يلزم تهيئة Timer 2 للحصول على الإخراج المطلوب. لهذا ، سنقوم بتعيين سجل T2MOD مع عامل تقسيم الساعة 1/128 واستخدامه في وضع تأخير إعادة التحميل التلقائي. هنا نظرة عامة على تسجيل T2MOD-
تعيين 4،5 و 6 بت من سجل T2MOD على مقسم ساعة المؤقت 2 وتعيين 7 بت وضع إعادة التحميل التلقائي. يتم ذلك باستخدام السطر أدناه -
TIMER2_DIV_128 ؛ TIMER2_Auto_Reload_Delay_Mode ؛
يتم تعريف هذين السطرين في ملف Function_define.h كـ
#define TIMER2_DIV_128 T2MOD- = 0x50 ؛ T2MOD & = 0xDF # تعريف TIMER2_Auto_Reload_Delay_Mode T2CON & = ~ SET_BIT0 ؛ T2MOD- = SET_BIT7 ، T2MOD- = SET_BIT3
الآن ، تحدد هذه الأسطر قيمة التوقيت المطلوبة لـ Timer 2 ISR.
RCMP2L = TIMER_DIV128_VALUE_100 مللي ثانية ، RCMP2H = TIMER_DIV128_VALUE_100ms >> 8 ؛
والذي تم تعريفه بشكل أكبر في ملف Function_define.h على أنه
TIMER_DIV128_VALUE_100ms 65536-12500 // 12500 * 128/16000000 = 100 مللي ثانية
لذا ، 16000000 هو التردد البلوري البالغ 16 ميجا هرتز والذي يقوم بإعداد تأخير زمني يبلغ 100 مللي ثانية.
أقل من سطرين سيفرغ Timer 2 Low و High bytes.
TL2 = 0 ؛ TH2 = 0 ؛
أخيرًا ، سيمكن الكود أدناه المقاطعة الموقت 2 وبدء الموقت 2.
مجموعة_ET2 ؛ // تمكين Timer2 interrupt set_EA ؛ مجموعة_TR2 ؛ // Timer2 المدى
يمكن رؤية وظيفة الإعداد الكاملة في الرموز أدناه-
إعداد باطل (باطل) { P14_Quasi_Mode؛ P15_Quasi_Mode ؛ TIMER2_DIV_128 ؛ TIMER2_Auto_Reload_Delay_Mode ؛ RCMP2L = TIMER_DIV128_VALUE_100 مللي ثانية ، RCMP2H = TIMER_DIV128_VALUE_100ms >> 8 ؛ TL2 = 0 ؛ TH2 = 0 ؛ مجموعة_ET2 ؛ // تمكين Timer2 interrupt set_EA ؛ مجموعة_TR2 ؛ // Timer2 run }
مؤقت 2 وظيفة ISR:
يمكن رؤية وظيفة Timer 2 ISR في الكود أدناه.
Timer2_ISR (باطل) المقاطعة 5 { clr_TF2 ؛ // مسح Timer2 Interrupt Flag LED1 = ~ LED1 ؛ // تبديل LED1 ، متصل في P1.5 ؛ }
رمز وامض والتحقق من الإخراج لوظيفة المؤقت
الكود (الموضح أدناه) عند تجميعه عاد 0 تحذير و 0 أخطاء وأومضته باستخدام طريقة الوميض الافتراضية في Keil. بعد وميض المصابيح كانت تومض في تأخير مؤقت محدد كما هو مبرمج.
تحقق من الفيديو أدناه للحصول على شرح كامل لكيفية عمل اللوحة لهذا الرمز. آمل أن تكون قد استمتعت بالبرنامج التعليمي وتعلمت شيئًا مفيدًا إذا كان لديك أي أسئلة ، اتركها في قسم التعليقات أدناه. يمكنك أيضًا استخدام منتدياتنا لنشر أسئلة فنية أخرى.