打印
[ZLG-ARM]

用捕获中断功能测试脉冲宽度的问题

[复制链接]
2071|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mountain25|  楼主 | 2007-1-1 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 PINSEL1 = 0x08000000;  //设置P0.29 为捕获功能 
 T0PR=0;
 T0CCR=0x06;            //设置CAP0.0下降沿捕获 并启用捕获中断
 T0TC=0;                
 T0TCR=0x01;            //启动定时器0
请教下大家: 想通过捕获中断来测试 脉冲周期(两次中断得到相邻两次下降沿对应的TC值,然后求两者之差),请问如何进入捕获中断,程序该如何编写 ,谢谢!!

相关帖子

沙发
mountain25|  楼主 | 2007-1-2 10:27 | 只看该作者

捕捉功能求教

#include  "config.h"
fp32  t;
uint32  b[2];
uint8   i=0;
void __irq  IRQ_Time0(void)
{  
    i++;     
    T0IR = 0x01;       // 清除中断标志
    VICVectAddr = 0x00;       // 通知VIC中断处理结束
}

int main(void)
{
 PINSEL1 = 0x08000000;  //设置P0.29 为捕获功能   
 T0PR=0;
 T0CCR=0x06;            //设置CAP0.0下降沿捕获 并产生中断
 T0TC=0;                
 T0TCR=0x01;            //启动定时器0
 
 VICIntSelect = 0x00;    // 所有中断通道设置为IRQ中断  
 VICVectCntl0 = 0x24;    // 定时器0中断通道分配最高优先级(向量控制器0)  
 VICVectAddr0 = (uint32)IRQ_Time0;         // 设置中断服务程序地址向量    
 VICIntEnable = 0x00000010;                // 使能定时器0中断         
 
 while(i<2)
 {
    b = T0CR0;       //读取 T0CR0中的 TC值  得到 b[0]、b[1];
 }
 
 VICIntEnClr = 0x00000010;               //关闭定时器0中断;            
 t=b[1]-b[0];     //算出两次下降沿间的时间间隔,即脉冲周期                   
 return(0);

}
这是我写的一段程序,但调试后发现进不了中断,请教各位大侠这是什么原因?

使用特权

评论回复
板凳
mountain25|  楼主 | 2007-1-3 14:51 | 只看该作者

求教

怎么没有人回答呢 没有人用过 定时器的捕获中断 的功能吗?还请大侠们指教啊

使用特权

评论回复
地板
aliyang| | 2007-1-3 16:23 | 只看该作者

re

以前我用查询的方式,检查某一io状态,如果有变化(低到高),则启动定时计数器,如果再有变化(高到低)则停止计数,读出结果。
实际操作过程发现,这种方法很不准确,就舍弃了!!

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝