我使用CAP4进行捕获中断,检测频率,配置如下:
EvbRegs.T4CON.bit.FREE=0;//仿真挂起,立即停止
EvbRegs.T4CON.bit.SOFT=0;
EvbRegs.T4CON.bit.TMODE=2;//连续增
EvbRegs.T4CON.bit.TPS=7;//预定标寄存器为0,T4CLK=HSPCLK/64
EvbRegs.T4CON.bit.TENABLE=0;//禁止定时器T4 //主程序中打开
EvbRegs.T4CON.bit.TCLKS10=0;//使用内部时钟
EvbRegs.T4CON.bit.TCLD10=1;//定时器比较寄存器重载条件:当计数器值为0
EvbRegs.T4CON.bit.TECMPR=0;//禁止定时器比较操作
EvbRegs.GPTCONB.all=0;
EvbRegs.T4PR=0xffff; //Freq=(TCLK*1000000)/(T1PR+1)=1000HZ
EvbRegs.T4CMPR=0;//占空比
EvbRegs.T4CNT=0x0000;
EvbRegs.EVBIFRB.bit.T4PINT=1;
EvbRegs.EVBIMRB.bit.T4PINT=1;
/***** CAP4 **********/
EvbRegs.CAPCONB.bit.CAPRES=0;
EvbRegs.CAPCONB.bit.CAPQEPN=0;//先禁止CAP45,主程序中使能
EvbRegs.CAPCONB.bit.CAP6EN=0;//禁止CAP6
EvbRegs.CAPCONB.bit.CAP45TSEL=0;//CAP4 5选择T4
EvbRegs.CAPCONB.bit.CAP6TOADC=0;//不动ADC
EvbRegs.CAPCONB.bit.CAP4EDGE=1;//上升沿沿
//EvbRegs.CAPFIFOB.bit.CAP4FIFO = 0x0001;
EvbRegs.CAPFIFOB.all=0x0000;
EvbRegs.EVBIMRC.bit.CAP4INT=1;//CAP4中断使能
EvbRegs.EVBIFRC.bit.CAP4INT=1;//CAP4中断标志复位
但是,捕获的时间算出来的频率不正确,计算频率公式没问题,也就是捕获的时间不对,这是为什么??
Forrest:
楼主看看这个帖子应该会有帮助:
www.deyisupport.com/…/11876.aspx