View Single Post
Old 07-12-2006, 01:05 AM   #2
typhn
Đệ tử 1 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 19
:
Em đọc phần PWM của DSPIC30F4011 mà khó hiểu quá,khác xa so với 16F877A.Em đã test thử PWM cho động cơ mà chưa được,ko hiểu tại sao,mong anh giúp đỡ.
Chương trình của em như sau: Bật chức năng PWM của chân PWM1H và PWM2L, với Fpwm=1khz,tỷ lệ D/t=1/2(chạy 50% công suất).Còn chân PWM1L và PWM2H luôn ở mức thấp.PWM cứ hoạt động cho đến khi bit RB1=1(bình thường thì RB1 ở mức 0) thì dừng PWM và các chân PWM lại vào/ra số như các chân khác.
Em dùng thạch anh 8MHZ
Chương trình của em như sau:
Code:
#include"p30f4011.h"

_FOSC(CSW_FSCM_OFF & XT_PLL4);		
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_OFF & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);

void init(void)
  {
      ADPCFG	=0xFFFF;							                         //CAC ANX DEU LA DIGITAL
      TRISB	=0x003F;							                      //Dinh nghia RB0-RB5 la loi vao,cac RBX la loi ra
      TRISE	=0x0000;                           //cong E de PWM la loi ra
       LATE            =0x0000;
       PTCON          =0x0000;  //tat PWM
       PTPER	=8000;     //Fpwm=1KHZ
       PWMCON1	=0x0712; // ko su dung mode bù,PWM1H va 2L hoat dong
                                      // cac PWM khác là disable
      OVDCON        =0x0600 //PWM1H và 2L hoạt động PWM,PWM1L và 2H luôn ở mức 0  

}

int main() 
{
                 
   init();    
   PDC1=8000;
  PDC2 =8000;  //chay 50% cong suat
  PTCON=0x8000;//bat PWM o che do free running
while(1)
  {
     if(_RB1==1) break;
  }
PTCON=0x0000;//tat PWM
LATE=0x000F;//vao ra so binh thuong
return 0;
}
chương trình của em chỉ đơn giản như vậy.
Mong bác chỉ bảo.
Em đợi tin của bác
thanks

thay đổi nội dung bởi: typhn, 07-12-2006 lúc 12:47 PM.
typhn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn