وعليكم السلام اخى الكريم
نعم يمكن تنفيذ ذلك عن طريق برمجة احد اطراف منفذ معين كمخرج
بحيث تتم برمجة هذا الطرف لإخراج جهد +5 فولت لفترة زمنية معينة Ton ثم برمجته لإخراج صفر فولت لفترة زمنية اخرى Toff
ويتم تحديد تردد PWM عن طريق زمن التوصيل والفصل
ثم حلقة غير مشروطة لاستمرار انتاج النبضات .. تمنياتى لك بالتوفيق
|
السلام عليكم ورحمة الله وبركاته
أشكرك أخي noornader على التفاعل ,
يمكن تنفيد البرمجة , لكن ما لم أوضحه في الإستفسار الأول أنه :
هل يمكن للمتحكم أن ينفذ باقي الأوامر أثناء فترة إخراج PWM ؟
ولو أمكنكم ترجمة هذا الكود سي للفلوكود :
والموجود في الموضوع التالي لأخينا
" أشرف كمال 2 "
//USING TMR0 AS PWM SOURCE
// BY Eng : ASHRAF KAMAL ELHAMAHMY
char x;
void interrupt(){
x++;
if(x==5){
portb.f0=~portb.f0;
x=0;
}
tmr0=131;
INTCON.T0IF = 0; // timer will count 125 * prescale(=16)=2000 *5 (the x variable)= 10 ms ==>
//PORTB WILL change the bit state each 10 ms so the period will be
//Ton=10 ms && Toff=10 ms so T (total)=20 ms or 50 HZ
}
void main() {
trisb=0;
intcon=0b10100000;
option_reg=0x03; // prescale 2 selected
tmr0=131;
portb=0;
while(1){
PORTB.F3=1; // port b can do other thing while doing the PWM
}}
|
وشكرا لكم جميعا