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