مثال توضيحى :
فى هذا المثال سوف يتم تهيئة موديول PWM1 وتحديده لكى يعطى قطار من النبضات بدورة خدمة بنسبة 50% .
لهذا الغرض : نستخدم الثلاثة دوال : دالة التهيئة PWM1_Init() ودالة البدء PWM1_Start() ودالة تحديد دورة الخدمة PWM1_Set_Duty() .
جميع هذه الدوال ضمن مكتبة PWM بالمترجم mikroC PRO for PIC فقط يجب ضم المكتبة لمشروع البرنامج عندئذ يمكن استدعائها .
كود:
unsigned short duty_c; // Define variable duty_c
void initMain() {
PORTC = 0;// Initial state of port C
TRISC = 0; // output pins
PWM1_Init(5000); // PWM module initialization (initMain)
}
void main() {
initMain();
duty_c = 127; // Initial value of duty-cycle
PWM1_Start(); // Start PWM1 module
PWM1_Set_Duty(duty_c); // Set PWM duty-cycle to 50%
...
...
الخطوات :
- تعريف متغير يمثل دورة الخدمة
كود:
unsigned short duty_c; // Define variable duty_c
- إنشاء دالة جديدة تضم جميع الإعدادات الابتدائية الرئيسية باسم initMain ويتم استدعائها فى بداية الدالة الرئيسية بغرض تسهيل قراءة وفهم البرنامج علاوة على حفظ تلك الإعدادات لاستخدامها فى برامج أخرى مما يوفر سهولة تطوير وقت البرمجة .
تحتوى هذه الدالة على الإعدادات التالية :
# إعداد جميع أطراف المنافذ :
# إعداد الحالة الابتدائية لأطراف المنفذ PORTC كمخارج لإخراج إشارة PWM من الطرف RC2:
كود:
PORTC = TRISC = 0; // Initial state of port C output pins
# إعداد نظام PWM1 للوحدة الأولى CCP1 ليعمل على تردد 5KHz
كود:
PWM1_Init(5000); // PWM module initialization (initMain)
}
وتحتوى على :
# كما ذكرنا فى بدايتها يتم استدعاء دالة الأعدادات الرئيسية بما فى ذلك تهيئة نظام PWM.
initMain();
# الخطوة الأولى فى نظام PWM هى إعطاء(إسناد أو تخصيص) قيمة ابتدائية لمتغير دورة الخدمة , الرقم 127 يعنى النسبة 50% :
كود:
duty_c = 127; // Initial value of duty-cycle
# والخطوة الثانية بدء وحدة (موديول) نظام PWM باستدعاء دالة البدء :
كود:
PWM1_Start(); // Start PWM1 module
# والخطوة الثالثة استدعاء دالة تحديد (ضبط) نظام PWM ليعمل على القيمة المحددة بمتغيره وهى 50% :
كود:
PWM1_Set_Duty(duty_c); // Set PWM duty-cycle to 50%
...
...