多任务单片机系统中保证脉冲宽度正确测量的装置的制作方法

文档序号:5917243阅读:262来源:国知局
专利名称:多任务单片机系统中保证脉冲宽度正确测量的装置的制作方法
技术领域
本实用新型涉及单片机应用技术领域,尤其是涉及一种多任务单片机系统中保证脉冲宽度正确测量的装置。
背景技术
如今,单片机的应用越来越广,其中51系列单片机是基础入门的一个单片机,也是应用最广泛的一种单片机。51系列单片机是单任务工作的,基于该单片机的多任务操作一般采用时间片来控制的协同式或者采用中断方式的抢占式来实现,下面对这两种方式中脉冲宽度的测量分别予以介绍多任务单片机系统中用时间片来控制的协同式测量脉冲宽度一般采用等待的方式当测量脉冲宽度的时间片到来时,判断脉冲电平是高电平时,程序等待;是低电平时, 先清零定时器T0,再启动定时器TO计数(TR0 = 1),同时程序等待。当脉冲电平由低电平变为高电平时,停止定时器TO计数(TR0 = 0)。此时定时器TO的计数值乘以定时器TO的时钟滴答周期即为脉冲宽度。多任务单片机系统中断方式的抢占式是采用中断执行每个任务,其测量脉冲宽度是用外部中断INTO和INTl来实现的脉冲的下降沿由INTO捕捉,下一个脉冲的上升沿由 INTl捕捉。在INTO中断服务程序中先清零定时器T0,再启动定时器TO开始计数,在INTl 中断服务程序中先判断定时器TO是否已经开启,如果开启则停止TO定时器计数,此时TO 定时器中的计数值乘以定时器TO的时钟滴答周期即为脉冲宽度。但是,上述协同式实现多任务操作实时性差,单片机资源浪费严重,利用率不高。 而抢占式实现多任务操作虽然实时性好且单片机资源利用率高,但中断之间会发生冲突, 尤其对于在多任务数据采集中实时性要求很高的脉冲宽度测量,发生冲突时测量的脉冲宽
度会出错ο

实用新型内容本实用新型实施例提供了一种多任务单片机系统中保证脉冲宽度正确测量的装置,避免在利用抢占式实现多任务操作时,其脉冲宽度测量任务数据出错。—方面,本实用新型实施例提供了一种多任务单片机系统中保证脉冲宽度正确测量的装置,所述单片机为C8051F020,包括反相器、第一电平转换芯片、第二电平转换芯片,PWM脉冲的一路信号输入至所述单片机的P0. 4管脚作为所述单片机系统的INTO外部中断,PWM脉冲的另一路信号输入至所述反相器的输入端,所述反相器的输出端连接至所述单片机的P0. 5管脚作为所述单片机系统的ITm外部中断,串口信号UARTO通过所述第一电平转换芯片连接至所述单片机的P0. 1管脚作为第一串口输入,串口信号UARTl通过所述第二电平转换芯片连接至所述单片机的P0. 3管脚作为第二串口输入,模拟信号ADCO连接至所述单片机的ΑΙΝ0. 0管脚,作为模拟输入,所述单片机内的中断服务程序单元用于在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断INTO的中断标志,如果遇到外部中断INTO的中断标志,则清除所述外部中断INTO的中断标志;以及检测是否遇到外部中断INTl的中断标志,如果遇到外部中断INTl的中断标志,则检测单片机内的定时器TO是否已经启动,如果定时器TO已经启动,则停止定时器TO计数。优选的,本实用新型实施例还包括设置在第一串口输入端上用于消除串口通信电缆中的信号反射的第一匹配电阻,以及设置在第二串口输入端上用于消除串口通信电缆中的信号反射的第二匹配电阻。优选的,本实用新型实施例还还包括由电容C1、C2、石英晶体Gl和单片机U3构成的振荡器,所述石英晶体Gl的两端分别连接至所述单片机的XTALl管脚及XTAL2管脚以为所述单片机系统提供时钟。另一方面,本实用新型实施例还提供了一种多任务单片机系统中保证脉冲宽度正确测量的装置,所述单片机为C8051F020,其特征在于,包括反相器、第一电平转换芯片、 第二电平转换芯片,PWM脉冲的一路信号输入至所述单片机的P0. 4管脚作为所述单片机系统的INTO外部中断,PWM脉冲的另一路信号输入至所述反相器的输入端,所述反相器的输出端连接至所述单片机的P0. 5管脚作为所述单片机系统的INTl外部中断,串口信号UARTO 通过所述第一电平转换芯片连接至所述单片机的P0. 1管脚作为第一串口输入,串口信号 UARTl通过所述第二电平转换芯片连接至所述单片机的P0. 3管脚作为第二串口输入,模拟信号ADCO连接至所述单片机的ΑΙΝΟ. 0管脚,作为模拟输入,所述单片机内的中断服务程序单元用于在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断 INTO的中断标志,如果遇到外部中断INTO的中断标志,则先清零定时器TO再开启定时器 TO进行计数,最后清除所述外部中断INTO的中断标志;以及检测是否遇到外部中断INTl 的中断标志,如果遇到外部中断INTl的中断标志,则检测定时器TO是否已经启动,如果定时器TO已经启动,则停止定时器TO计数。优选的,本实用新型实施例还包括设置在第一串口输入端上用于消除串口通信电缆中的信号反射的第一匹配电阻,以及设置在第二串口输入端上用于消除串口通信电缆中的信号反射的第二匹配电阻。优选的,本实用新型实施例还包括由电容C1、C2、石英晶体Gl和单片机U3构成的振荡器,所述石英晶体Gl的两端分别连接至所述单片机的XTALl管脚及XTAL2管脚以为所述单片机系统提供时钟。本实用新型实施例通过在除脉冲宽度测量任务以外的串口数据采集及模拟信号采集任务的中断服务程序中引入对脉冲宽度测量任务启动和停止的判断,并根据该判断来控制定时器T0,从而保证了单片机中脉冲宽度测量数据的正确性。

为了更清楚地说明本实用新型实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本实用新型实施例提供的一种多任务单片机系统中保证脉冲宽度正确测量的装置结构示意图。
具体实施方式
下面将结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。如图1所示为本实用新型实施例提供的一种多任务单片机系统中保证脉冲宽度正确测量的装置结构示意图,在本实施例中单片机选用C8051F020。由图1可见,该装置包括反相器D1B、电平转换芯片Ul、电平转换芯片U2,PWM脉冲的一路信号输入至单片机的Po. 4管脚作为单片机系统的INTO外部中断信号,PWM脉冲的另一路信号输入至反相器DlB的输入端3,反相器DlB的输出端4连接至单片机的P0. 5 管脚作为单片机系统的ITm外部中断信号。需要指出的是,在本实施例中由于引入了反相器D1B,因此单片机在利用外部中断 INTO及INTl执行脉冲宽度测量任务时,只需要将外部中断INTO及INTl都设置成下降沿触发即可。串口信号UARTO通过电平转换芯片Ul连接至所述单片机的P0. 1管脚作为第一串口输入。比如,电平转换芯片Ul采用MAX485芯片,串口信号UARTO连接至MAX485芯片的 6、7管脚,另外MAX485芯片的2、3、4、5管脚接地,8管脚接电源,而1管脚则连接至单片机的P0. 1管脚。串口信号UARTl通过电平转换芯片U2连接至单片机的P0. 3管脚作为第二串口输入。比如,电平转换芯片U2采用MAX485芯片,串口信号UARTl连接至MAX485芯片的6、7管脚,另外MAX485芯片的2、3、4、5管脚接地,8管脚接电源,而1管脚则连接至单片机的P0. 3管脚。模拟信号ADCO连接至所述单片机的ΑΙΝΟ. 0管脚,作为模拟输入。作为本实用新型的一个实施例,还包括设置在串口信号UARTO端上用于消除串口通信电缆中的信号反射的匹配电阻R1,该匹配电阻Rl的两端分别连接至串口信号UARTO的两输入端。另外还包括设置在串口信号UARTl端上用于消除串口通信电缆中的信号反射的匹配电阻R2,该匹配电阻R2的两端分别连接至串口信号UARTl的两输入端。作为本实用新型的一个实施例,还包括由电容C1、C2、石英晶体Gl和单片机U3构成的振荡器,电容Cl 一端接地,另一端连接至石英晶体Gl的第一端,电容C2 —端接地,另一端连接至石英晶体Gl的第二端,石英晶体Gl的第一端及第二端则分别连接至所述单片机的XTALl管脚及XTAL2管脚以为单片机系统提供时钟。在本实施例中,单片机内的中断服务程序单元可以在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断INTO的中断标志,如果遇到外部中断 INTO的中断标志,则清除所述外部中断INTO的中断标志。这样,在单片机执行其它任务的过程中如果遇到需要开始脉冲宽度测量任务的时候,就相当于使该脉冲宽度测量任务暂不执行,等待下一个周期再继续进行执行。反之,如果不进行上述操作,那么单片机会在上述其它任务执行完之后再去执行INTO的中断服务程序,即先清零定时器T0,再启动定时器TO 开始计数,从而导致最后所得到的测试结果会比实际值小。[0026]单片机内的中断服务程序单元还可以在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断INTl的中断标志,如果遇到外部中断INTl的中断标志,则检测单片机内的定时器TO是否已经启动,如果定时器TO已经启动,则停止定时器TO 计数。这种做法是在执行其它任务之前,如果已经开始执行了脉冲宽度测量任务,且该脉冲宽度测量任务是在执行其它任务的过程中停止的,则需要在其它任务的中断服务程序中强制停止定时器TO计数,取出此时定时器TO的计数值然后乘以定时器TO的时钟滴答周期即为脉冲宽度,从而可以保证最后获取数据的正确性。反之,如果不进行上述操作,那么单片机会在上述其它任务执行完之后再去停止执行脉冲宽度测量任务,从而导致最后所得到的测试结果会比实际值大。作为本实用新型的另一个实施例,单片机内的中断服务程序单元在检测到外部中断INTO的中断标志时,也可以先清零定时器TO再启动定时器TO计数,最后清除外部中断 INTO的中断标志,应用这种方式的时候,需要脉冲宽度不是太短,即需要在其它任务执行完毕后才能遇到下一脉冲的上升沿,这样即使在其它任务执行过程中启动了定时器T0,也能保证最后测量结果的正确性。下面基于上述装置对本实用新型如何保证脉冲宽度任务正确测量进行进一步详细描述首先,程序初始化设置外部中断INTO和INTl均为下降沿触发,定时器TO为定时方式;其中PWM脉冲的下降沿(t0)由INTO捕捉,下一个脉冲的上升沿(tl)由INTl捕捉。 在INTO的中断服务程序中置定时器TO的计数为0 (ΤΗ0 = 0,且TLO = 0,其中THO为定时器 TO的高8位,而TLO为定时器TO的低8位),同时启动定时器开始计数(TRO = 1);在INTl 的中断服务程序中先判断定时器TO是否已经开启,如果开启则停止定时器TO计数(TR0 = 0),取出此时定时器TO的计数值然后乘以定时器TO的时钟滴答周期即为脉冲宽度。为了保证PWM脉冲宽度的正确测量,本实用新型实施例在UART0,UARTl,ADCO中断服务程序中增加了以下两种检测判断a、如果遇到外部中断INTO的中断标志(ΙΕ0 = 1),即遇到脉冲的下降沿,则清除外部中断INTO的中断标志(ΙΕ0 = 0),或者先清零定时器TO再启动定时器T0,最后清除外部中断INTO的中断标志(ΙΕ0 = 0);b、如果遇到外部中断INTl的中断标志(IEl = 1),即遇到下一个脉冲的上升沿,并且定时器TO已经开始计数(TR = 1)时,则停止定时器TO计数(TR0 = 0)。本实用新型实施例通过在除脉冲宽度测量任务以外的其它任务的中断服务程序中引入对脉冲宽度测量任务启动和停止的判断,并根据该判断来控制定时器T0,从而保证了单片机中脉冲宽度测量数据的正确性。以上所述的具体实施例,对本实用新型的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本实用新型的具体实施例而已,并不用于限定本实用新型的保护范围,凡在本实用新型的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本实用新型的保护范围之内。
权利要求1.一种多任务单片机系统中保证脉冲宽度正确测量的装置,所述单片机为 C8051F020,其特征在于,包括反相器、第一电平转换芯片、第二电平转换芯片,PWM脉冲的一路信号输入至所述单片机的P0. 4管脚作为所述单片机系统的INTO外部中断,PWM脉冲的另一路信号输入至所述反相器的输入端,所述反相器的输出端连接至所述单片机的P0. 5 管脚作为所述单片机系统的INTl外部中断,串口信号UARTO通过所述第一电平转换芯片连接至所述单片机的P0. 1管脚作为第一串口输入,串口信号UARTl通过所述第二电平转换芯片连接至所述单片机的P0. 3管脚作为第二串口输入,模拟信号ADCO连接至所述单片机的 ΑΙΝΟ. 0管脚,作为模拟输入,所述单片机内的中断服务程序单元用于在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断INTO的中断标志,如果遇到外部中断INTO的中断标志,则清除所述外部中断INTO的中断标志;以及检测是否遇到外部中断INTl的中断标志,如果遇到外部中断INTl的中断标志,则检测单片机内的定时器TO是否已经启动,如果定时器TO已经启动,则停止定时器TO计数。
2.如权利要求1所述的多任务单片机系统中保证脉冲宽度正确测量的装置,其特征在于,还包括设置在第一串口输入端上用于消除串口通信电缆中的信号反射的第一匹配电阻,以及设置在第二串口输入端上用于消除串口通信电缆中的信号反射的第二匹配电阻。
3.如权利要求1所述的多任务单片机系统中保证脉冲宽度正确测量的装置,其特征在于,还包括由电容C1、C2、石英晶体Gl和单片机U3构成的振荡器,所述石英晶体Gl的两端分别连接至所述单片机的XTALl管脚及XTAL2管脚以为所述单片机系统提供时钟。
4.一种多任务单片机系统中保证脉冲宽度正确测量的装置,所述单片机为 C8051F020,其特征在于,包括反相器、第一电平转换芯片、第二电平转换芯片,PWM脉冲的一路信号输入至所述单片机的P0. 4管脚作为所述单片机系统的INTO外部中断,PWM脉冲的另一路信号输入至所述反相器的输入端,所述反相器的输出端连接至所述单片机的P0. 5 管脚作为所述单片机系统的ITm外部中断,串口信号UARTO通过所述第一电平转换芯片连接至所述单片机的P0. 1管脚作为第一串口输入,串口信号UARTl通过所述第二电平转换芯片连接至所述单片机的P0. 3管脚作为第二串口输入,模拟信号ADCO连接至所述单片机的 ΑΙΝ0. 0管脚,作为模拟输入,所述单片机内的中断服务程序单元用于在执行串口输入信号采集以及模拟输入信号采集任务时,检测是否遇到外部中断INTO的中断标志,如果遇到外部中断INTO的中断标志,则先清零定时器TO再开启定时器TO进行计数,最后清除所述外部中断INTO的中断标志;以及检测是否遇到外部中断INTl的中断标志,如果遇到外部中断 INTl的中断标志,则检测定时器TO是否已经启动,如果定时器TO已经启动,则停止定时器 TO计数。
5.如权利要求4所述的多任务单片机系统中保证脉冲宽度正确测量的装置,其特征在于,还包括设置在第一串口输入端上用于消除串口通信电缆中的信号反射的第一匹配电阻,以及设置在第二串口输入端上用于消除串口通信电缆中的信号反射的第二匹配电阻。
6.如权利要求4所述的多任务单片机系统中保证脉冲宽度正确测量的装置,其特征在于,还包括由电容C1、C2、石英晶体Gl和单片机U3构成的振荡器,所述石英晶体Gl的两端分别连接至所述单片机的XTALl管脚及XTAL2管脚以为所述单片机系统提供时钟。
专利摘要本实用新型实施例提供了一种多任务单片机系统中保证脉冲宽度正确测量的装置,包括反相器、第一电平转换芯片、第二电平转换芯片,PWM脉冲的一路信号输入至所述单片机的P0.4管脚作为所述单片机系统的INT0外部中断,PWM脉冲的另一路信号输入至所述反相器的输入端,所述反相器的输出端连接至所述单片机的P0.5管脚作为所述单片机系统的INT1外部中断,串口信号UART0通过所述第一电平转换芯片连接至所述单片机的P0.1管脚作为第一串口输入,串口信号UART1通过所述第二电平转换芯片连接至所述单片机的P0.3管脚作为第二串口输入,模拟信号ADC0连接至所述单片机的AIN0.0管脚,利用外部中断INT0和INT1来进行脉冲宽度测量任务;在执行其它任务时,利用这些任务的中断服务程序检测是否遇到外部中断INT0的中断标志。
文档编号G01R29/00GK202102054SQ20112022026
公开日2012年1月4日 申请日期2011年6月27日 优先权日2011年6月27日
发明者孟祥聪, 李建生, 樊巧玲 申请人:中国国土资源航空物探遥感中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1