如果使用常规计数器,当扫描周期为1毫秒的时候程序只能处理频率为500赫兹的开关量计数。如果程序扫描周期为10毫秒的时候就只能处理50赫兹的计数。(前者为什么不是1000呢?)
你千万别说:可以用脉冲捕捉可以收集到更短快的脉冲。
如果使用0~7号中断,那么当发生了10kz的脉冲的时候。就是说每0.1毫秒要实施一次中断进行加一计算。 每处理一次中断增加50微秒,处理一个加1指令30到40微秒。当禁止中断扫描周期为1毫秒的时候,开放中断,那么1毫秒的周期中就要插入至少10个中断。扫描周期是1+n*(0.05+0.04)毫秒[n代表一个周期内的中断次数]约有1.9毫秒。事情发展到这1.9毫秒还没有结束呢。多出来的0.9毫秒还要插入中断了。中断一个接一个地来,cpu每0.1毫秒就要处理0.09毫秒的中断程序。只剩下0.01毫秒的时间处理前台工作。结果是扫描周期成级数地增加,中断变得阻止了扫描的进行。直到看门狗复位。
数是不是这样算呢?只是我想当然的罢了。
相比之下使用高速计数是不会影响扫描周期的。