本人近期有接触过 vxworks实时系统、ni实时系统和rtx实时系统,但感觉各个定时器都有差别,即使两个都是rtx定时器也会有细微差别,请问下这个定时器实现是基于什么的?和系统的cpu主频有关系吗? (本人不怎么懂硬件这一块)
分频出来的
@linuxwww 网上搜了一下“分频”的概念:受外部周期信号激励的震荡,其频率恰为激励信号频率的纯分数,都叫做分频。是这个意思吗? 也就是有个外部的周期信号激励?那么这个周期信号是哪个产生的呢? cpu吗?
不说软的定时器,硬件的定时器都是计数器,驱动时钟一般是cpu主频分频的低频时钟驱动,向上或者向下的计数,符合条件就触发中断或者事件。所谓的区别,无非是寄存器和计数器的运行差别吧。
@woyouzui 现在这边两个系统(简称A系统、B系统,A和B之间有一个公共区域)之间都是实时系统(定时器分辨率ns级别的),A定时1ms往公共区域写一次数据并自加一,B定时1ms从公共区域读一次数据,时间长了,B会读到两个连续一样的数据,个人感觉是两个定时器一长一短,我不知道这个是不是和这些系统的主频有关。
很正常啊,时钟不是同频的,有累积误差,当误差大于一个周期的时候,就会错一个周期。
@woyouzui 嗯 就是说最好用主频相同的cpu才能避免这个时间累积误差问题吧
和主频相同没关系,世界上不存在完全一样的两个晶振,你这个属于异步的通信,但是使用的同步的方式。
@woyouzui 嗯是的,两个系统是独立的,A系统会1ms内解算出数据,并定时发送数据,B系统也是1ms在解算,工作,AB是两个不同厂家,不同的开发环境,还没想到好法子解决。