我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1015|回复: 0

51单片机边沿触发中断响应时刻的测量 - 单片机/处理器 -

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 09:30:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
MCS51单片机系列属于8位单片机,它是Intel公司继MCS48系列的成功设计之后,于1980年推出的产品。由于MCS51系列具有很强的片内功能和指令系统,因而使单片机的应用发生了一个飞跃,这个系列的产品也很快成为世界上第二代的标准控制器。51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;若为1,则控制为边沿触发方式。这里是下降沿触发中断。   
1问题的引出
  
几乎国内所有的单片机资料对单片机边沿触发中断的响应时刻方面的定义都是不明确的或者是错误的。例如文献[1]中关于边沿触发中断响应时刻的描述为“对于脉冲触发方式(即边沿触发方式)要检测两次电平,若前一次为高电平,后一次为低电平,则表示检测到了负跳变的有效中断请求信号”,但实际情况却并非如此。
  
我们知道,单片机外部输入的中断触发电平是TTL电平。对于TTL电平,TTL逻辑门输出高电平的允许范围为2.4~5 V,其标称值为3.6 V;输出低电平的允许范围为0~0.7 V,其标称值为0.3 V[2],在0.7 V与2.4 V之间的是非高非低的中间电平。
  
这样,在实际应用中,假设单片机外部中断引脚INT0输入一路由+5 V下降到0 V的下降沿信号,单片机在某个时钟周期采样INT0引脚得到2.4 V的高电平;而在下一个时钟周期到来进行采样时,由于实际的外部输入中断触发信号由高电平变为低电平往往需要一定的时间,因此,检测到的可能并非真正的低电平(小于0.7 V),而是处于低电平与高电平之间的某一中间电平,即0.7~2.4 V的某一电平。对于这种情况,单片机是否会依然置位中断触发标志从而引发中断呢?关于这一点,国内的绝大部分教材以及单片机生产商提供的器件资料都没有给予准确的定义,但在实际应用中这种情况确实会碰到。
  
以美国Analog公司生产的运算放大器芯片AD708为例,其转换速率(slew rate)为0.3 V/μs,在由AD708芯片组成的比较器电路中,其输出方波的下降沿由2.4 V下降到0.7 V,所需时间约为: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需要约4.67 μs的过渡时间,下降沿才真正地由高电平下降为低电平,在实际应用电路中,这个下降时间往往可达10 μs以上。对于精密的测量系统,这么长的不确定时间是无法接受的,因此,有必要对单片机边沿中断触发时刻进行精确的测定。
  
2测试波形的设计与分析
  
为了测定MCS51单片机下降沿触发的实际时刻,使用Agilent公司生产的型号为33250A的80 MHz函数/任意波形发生器(function/arbitrary waveform generator),产生出如图1所示的周期为20 ms的周期波形。

图1周期为20 ms的周期波形  
将该波形通过单片机的外部中断0输入,可以测出下降沿中断触发的实际时刻,下面对该波形进行具体分析。建立如图2所示的直角坐标。

图2建立的直角坐标设  
图2所示波形的周期为T,单片机在电压下降到y=y′时刻触发中断,t1′、t2′、t3′分别为前后周期的中断触发时刻,则有:
  
求得L1方程为:
  
求得L2方程为:
  
由图2所示的电路及式(1)、式(2)、式(3),可求得:
  
将以上波形由单片机外部中断0输入,选择边沿触发方式,通过中断服务程序测取T1或者T2的值,从而可求出中断发生时刻的电平值y′,即边沿触发中断的实际时刻。
  
在使用单片机对中断时刻进行测量时,使用两个计数器,均设为方式1(16位计数方式)。其中,第一个计数器用于记录从程序开始执行到第一个下降沿到来所经历的时间,第二个计数器用来记录程序开始执行到第二个下降沿到来所经历的时间,将两个计数器的计数值相减便可以得到两个下降沿之间的时间间隔。由前面的分析可知,该时间间隔可能有两种情况: 一种是T1时间,即t1′与t2′之间的时间间隔;另一种是T2时间,即t2′与t3′之间的时间间隔。其中,T1+T2=T,T1时间要小于T2时间。通过测量得到T1或者T2时间,利用式(4)便可求得下降沿触发中断时刻的实际电平。
  
3测试流程和相应的单片机程序
  
该单片机的中断服务程序流程如图3所示。
图3中断服务程序流程相应的中断服务程序为:      
INCR1
MOVA,R1
CJNEA,#01H,SEC
CLRTR0
MOV20H,TL0
MOV21H,TH0
CLRIE0
RETI
SEC:CLRTR1
MOV22H,TL1
MOV23H,TH1
CLREX1
CLREX0
RETI

  
由于程序执行有一定的延时,在中断返回后,还需对两个计数器的输出值进行校正。本实验采用伟福公司生产的H51/L仿真器为单片机测量系统,测得T1值为6.514 ms,由式(4)可得:y′=0.729 V,即当y′约为0.73 V时,单片机下降沿触发中断。
  
4结论
  
本文通过设计一简单的波形,对单片机的边沿触发中断响应时刻进行了准确的测量,从而纠正了国内单片机学习资料在边沿触发中断时刻方面的不明确定义,且最终结果经过了实验验证。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表