[ZLG-MCU] 问一个测量方波信号占空比的问题

[复制链接]
2211|1
 楼主| jixieyang 发表于 2007-8-29 12:26 | 显示全部楼层 |阅读模式
我用的是arm7的开发板,想测一个频率为100hz左右的方波的占空比和脉冲宽度<br />以前用中断,现在就直接用查询的方法,利用定时器的捕获功能<br />把外部信号接到定时器的cap0,允许双边沿中断,中断时读取保存了T0TC的T0CCR<br />然后处理,部分程序如下:<br /><br />.....<br />while(1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;timer0_start();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//复位并开始计数<br />&nbsp;&nbsp;&nbsp;&nbsp;T0CCR=0X05;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许上升沿中断<br />&nbsp;&nbsp;&nbsp;&nbsp;while((T0IR&0X10)!=0X10);&nbsp;&nbsp;&nbsp;//查询中断标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;IR0_START=T0CR0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取计数值<br />&nbsp;&nbsp;&nbsp;&nbsp;T0IR=0X10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清中断标志位&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0CCR=0X06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许下降沿中断<br />&nbsp;&nbsp;&nbsp;&nbsp;while((T0IR&0X10)!=0X10);&nbsp;&nbsp;&nbsp;//查询中断标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;IR0_MID=T0CR0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取计数值<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0IR=0X10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清中断标志位&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0CCR=0X05;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许上升沿中断<br />&nbsp;&nbsp;&nbsp;&nbsp;while((T0IR&0X10)!=0X10);&nbsp;&nbsp;&nbsp;//查询中断标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;IR0_END=T0CR0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取计数值<br />&nbsp;&nbsp;&nbsp;&nbsp;T0IR=0X10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//清中断标志位<br />&nbsp;&nbsp;&nbsp;&nbsp;timer0_end();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//停止计数器<br />}<br />...........<br /><br />请问这个流程是否合理,或者谁有更好的方法?<br />我在实测的时候,IR0_START大约为0<br />IR0_MID大致和IR0_END相等,这不符合实际的波形,目前也分析不出原因。<br />请高手指点!<br />3x!<br />
ayb_ice 发表于 2007-8-30 18:42 | 显示全部楼层

查询不合理吧。。。

用外部中断好。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部