打印
[AVR单片机]

求助,用INT0和T0配合测量脉冲宽度?

[复制链接]
3368|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cctv|  楼主 | 2007-1-20 01:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 如题,方波送入INT0,我想通过测量两个下降沿的时间间隔(T0)来计算脉冲的频率。因为需要逐个逐个的分析然后分类,所以不采用统计的方法来计算频率。 

曾经做过以下尝试,但结果怎么调试都不正常: 


interrupt [EXT_INT0] void ext_int0_isr(void) 


if (plus_edge) {                     //是否第一个下降沿 
                  plus_width=TCNT0;   //不是,则读出T0 
                  plus_readed=1 ;      //标志,说明测量完毕. 
                  #asm("cli")        //关闭中断 
                  plus_edge=0; 



else {  TCCR0=1;                     //是第一个下降沿,则启动T0 

        plus_edge=1;                 //标志说明已不是第一个 






main() 


.......... 
if (plus_readed)  { 
                    ................ 
                    putchar(plus_width); 
                    plus_readed=0; 
                    plus_edge=0; 
                   #asm("sei")  
  
                      } 

functionb(); 



问题如下: 
1 如果functionb(); 执行周期小于脉冲宽度,则软件仿真正确,可是在M16上执行(无JTAG),输出的数据完全不对 

2 如果FUNCTIONB(); 远大于脉冲周期,则采回来的数据完全不对!参差不齐! 

求教,问题在哪里? 

相关帖子

沙发
wenlw| | 2007-1-20 17:13 | 只看该作者

用输入捕捉

用输入捕捉

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝