常驻嘉宾
帮主
- 积分
- 3869
- 威望
- 2079
- 贡献
- 698
- 兑换币
- 86
- 注册时间
- 2010-10-22
- 在线时间
- 547 小时
|
各位大神好,我在调试测速的时候遇到这样一个问题,pt7口的输入频率只有在20hz一下才能被捕捉到,稍微高一点就捕捉不到了,具体的程序如下:
//PT7口用来接收编码器脉冲
void PA_Init() {
PACTL=0X50;//PT7 PIN,PACN32 16BIT,FALLing edge,NOT INTERRUPT
PACNT = 0x00; //累加器置初值
}
void PIT0_Init(void){
PITCFLMT_PITE=0; //禁止PIT
PITCE_PCE0=1; //允许时钟通道0
PITMUX_PMUX0=0; //通道0
PITMTLD0=0XFF; //通道0预设计数值为255
PITLD0=0X0752; //time-out period=(PITMTLD+1)*(PITLD+1)/fBUS=256X1875/48000000=10ms
PITINTE_PINTE0=1;//通道0中断允许
PITCFLMT_PITE=1; //开PIT中断
}
//-------------------------PIT0 中断函数-----------------------//
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0_ISR(void){ //0.01秒中断1次\
PACTL_PAEN=0;//16b计数禁止
speed_value=PACNT;
PACNT=0x0;
PACTL_PAEN=1;//16b计数允许
//PITTF_PTF0=1;//清除PIT0的标记
PITTF=0X01;
//时间参量
time_value++;
if(time_value==10000) time_value=0;
}
#pragma CODE_SEG DEFUALT
我在pit中断里将PACNT读出来显示,发现只有输入频率比较低时speed_value才有值,稍微高一点就是0了,困扰了好长时间了,求坛里的大神帮忙看下啊。。。感激不尽啊
|
|