智能车制作

标题: 有关XS128的ECT模块 [打印本页]

作者: swfc_qinmm    时间: 2010-7-8 16:07
标题: 有关XS128的ECT模块
本帖最后由 swfc_qinmm 于 2010-7-8 16:11 编辑

想利用ECT模块捕捉霍尔传感器的脉冲信号,并在进入中断时LED灯亮灭闪烁,但是好像没捕捉到,LED等没变化!希望大家帮助看看,部分代码如下:
void PT0_Capture_Init(void)       //ECT初始化,使用其输入捕捉功能,捕捉霍尔传感器的脉冲数
{
  TSCR1_TFFCA = 1;        //自动清除标志位
  TIOS = 0XFE;            //通道0为输入捕捉  
  TSCR2 = 0X87;           //24MHZ/128 = 187.5KHZ计数频率,定时溢出中断使能
  TCTL4 = 0X02;           //通道0仅在下降沿捕捉
  TIE_C0I = 1;            //通道0中断使能
  TSCR1_TEN = 1;          //主定时器使能  
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 PT0_Capture(void)
{
  TFLG1_C0F = 1;
  Pulse_Num++;
  PORTB_PB0 = ~PORTB_PB0;
}
作者: swfc_qinmm    时间: 2010-7-8 16:08
大家多多指教哦,谢谢了……
作者: swfc_qinmm    时间: 2010-7-9 20:07
大家多多帮助哦……
作者: kefeng19    时间: 2010-7-9 20:15
捕捉  脉冲个数  好像很慢哦。。。为什么不用检测脉宽的方法呢。。
作者: swfc_qinmm    时间: 2010-7-9 21:27
回复 4# kefeng19


    谢谢,请问你说的脉冲宽度捕捉是什么意思?能说的详细一些吗?
作者: kefeng19    时间: 2010-7-9 21:39
使用脉冲累加器  两个关键语句给你
PACTL=0x7c;//使能PAI ,门控时间累加模式,禁止溢出中断,PAIF置位中断
           //时钟选择PACLK



void test_speed(void)
{
if(PAFLG_PAOVF==1)
  {
  PACNT=0;
  PAFLG=0x03;
  }
else if(PAFLG_PAIF==1)
  {
  //PACTL_PAI=0;
  //speed=TCNTH;
  
  speed=PACNTH;
  //TCNT=0;
PACNT=0;
  PAFLG=0x03;
// test(speed);
// PACTL_PAI=1;
  }
} */



你参考下吧,我去年用的是这种模式,今年不是。今年我的是硬件测速。。。
作者: swfc_qinmm    时间: 2010-7-9 21:46
回复 6# kefeng19


    谢谢了……有问题在请教你!谢谢……
作者: GhostStalker    时间: 2010-7-15 10:45
用 Pulse Accumulator就行了~
这个方法也可以 我以前也是这么弄的
后来看DS发现Pulse Accumulator就改了~
作者: 清水鱼儿    时间: 2010-7-21 08:47
很好
作者: 似曾相识    时间: 2011-2-20 08:51
HAO
作者: 阳光...海岸    时间: 2012-3-1 11:25
找到了
maichong =(PACNTH<<8)+PACNTL;
作者: 雪男    时间: 2012-4-5 20:55
谢啦




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2