打印

lpc2294如何使用定时器测速

[复制链接]
1510|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lss1985|  楼主 | 2010-12-27 20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序的主要部分如下
void Time1Init(void)      //定时器1初始化
{
T1TC=0;
T1PR=0;   
T1CCR=0x05;      //CAP1.0上升沿跳变将TC装入CR0,并产生中断
T1TCR=0x01;     
}

void senddata(void)   //发送数据
{
for(i=0;i<6;i++)
{
   sprintf(str,"%8d",st[i]);
   ISendStr(60,21,0x30,str);
}
}
void Time1_irqInit(void)         //中断初始化
{
VICIntSelect=0x00;
VICVectCntl0=0x20|5;        //定时器1优先级slot0
VICVectAddr0=(uint32)Time1_irq;     //定时器中断地址1
VICIntEnable=0x00000010;
}


void __irq Time1_irq(void)  //中断程序
{
   
  p=T1CR0;            
  st[n]=p-k;
  k=p;
  n+=1;
  if(n==6)
  {
    T1TCR=0x00;
    senddata();
  }
  T1IR=0x00;
  VICVectAddr=0;
}

int main(void)       //主程序
{
  k=0;
  n=0;
  delay(3000);     //延时
  PINSEL0=0x00200000;//捕获1.0,P0.10口,
   
  Time1_irqInit();
  Time1Init();
  
  while(1);
  return(0);

}

大概意思就是用定时器1的CAP1.0捕获功能捕捉脉冲,并产生中断,在中断中处理数据,捕获几个脉冲,用后一个脉冲所获得的TC值减去前一次获得的TC值,这样就知道这一个脉冲的周期了,多做几次然后平均,输出求转速。程序是这么写的,但实际传感器信号接到CAP1.0运行之后,一直在等待中断产生,而传感器信号通过示波器看过之后是方波没有问题,就是无法测到脉冲周期,不知道错误在哪里,搞了几天很纠结,达人们帮我看看吧,谢啦

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

92

帖子

2

粉丝