位置:51电子网 » 技术资料 » 其它综合

事件管理器捕获单元FIFO堆栈的使用

发布时间:2009/1/8 0:00:00 访问次数:1634

  每个捕获单元有一个专用的2级深的fifo堆栈,顶部堆栈包括capififo、cap2fifo和cap3fifo(eva)或 cap4fifo、capsfifo和 capgfifo(evb)。 底部堆栈包括caplfbot、capzfbot和cap3fbot(eva)或cap4fbot、cap5fbot和capgfbot(evb)。所有fifo堆栈的顶层堆栈寄存器是只读寄存器,它存放相应捕获单元捕获到的最早的计数值,因此读取捕获单元fifo堆栈时总是返回堆栈中最早的计数值。当读取fifo堆栈的顶层寄存器的计数值时,堆栈底层寄存器的新计数值(如果有)将被压人顶层寄存器。

  如果需要,也可以读取fifo堆栈的底层寄存器。读访问可使fifo的状态位变为01(如果先前是1o或11)。如杲原来fifo状态位是01,读取底层fifo寄存器时,fifo的状态位变为00(即为空)。

  (1)第一次捕获

  当捕获单元的输入引脚出现跳变时,捕获单元将使用的通用定时器的计数值写入到空的fifo堆栈的顶层寄存器,同时相应的状态位置为01。如果在下一次捕获操作之前,读取了fifo堆栈,则fifo状态位被复位为00。

  (2)第二次捕获

  如果在前一次捕获计数值被读取之前产生了另一次捕获,新捕获到的计数值送至底层的寄存器,同时相应的寄存器状态位置为1o。如果在下一次捕获操作之前对fifo堆栈进行了读操作,底层寄存器中新的计数值就会被压人到顶层寄存器,同时相应的状态位被设置为01。第二次捕获使相应的捕获中断标志位置位,如果中断未被屏蔽,则产生一个外设中断请求。

  (3)第三次捕获

  如果捕获发生时,fifo堆栈已有捕获到的2个计数值,则在顶层寄存器中最早的计数值将被弹出并丢弃,而堆栈底层寄存器的值将被压入到顶层寄存器中,新捕获到的计数值将被压入到底层寄存器中,并且fifo的状态位被设置为ii以表明1个或更多旧的捕获计数值已被丢弃。第三次捕获使相应的捕获中断标志位置位。如果中断未被屏蔽,则产生一个外设中断请求。

  3.捕获中断

  当捕获单元完成一个捕获时,在fifo中至少有一个有效的值(cap=fifo位显示不等于0),如果中断未被屏蔽,中断标志位置位,产生一个外设中断请求。因此,如果使用了中断,则可用中断服务子程序读取到一对捕获的计数值。如果不希望使用中断,则可通过查询中断标志位或堆栈状态位来确定是否发生了2次捕获事件,若已发生,则捕获到的计数值可以被读出。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  每个捕获单元有一个专用的2级深的fifo堆栈,顶部堆栈包括capififo、cap2fifo和cap3fifo(eva)或 cap4fifo、capsfifo和 capgfifo(evb)。 底部堆栈包括caplfbot、capzfbot和cap3fbot(eva)或cap4fbot、cap5fbot和capgfbot(evb)。所有fifo堆栈的顶层堆栈寄存器是只读寄存器,它存放相应捕获单元捕获到的最早的计数值,因此读取捕获单元fifo堆栈时总是返回堆栈中最早的计数值。当读取fifo堆栈的顶层寄存器的计数值时,堆栈底层寄存器的新计数值(如果有)将被压人顶层寄存器。

  如果需要,也可以读取fifo堆栈的底层寄存器。读访问可使fifo的状态位变为01(如果先前是1o或11)。如杲原来fifo状态位是01,读取底层fifo寄存器时,fifo的状态位变为00(即为空)。

  (1)第一次捕获

  当捕获单元的输入引脚出现跳变时,捕获单元将使用的通用定时器的计数值写入到空的fifo堆栈的顶层寄存器,同时相应的状态位置为01。如果在下一次捕获操作之前,读取了fifo堆栈,则fifo状态位被复位为00。

  (2)第二次捕获

  如果在前一次捕获计数值被读取之前产生了另一次捕获,新捕获到的计数值送至底层的寄存器,同时相应的寄存器状态位置为1o。如果在下一次捕获操作之前对fifo堆栈进行了读操作,底层寄存器中新的计数值就会被压人到顶层寄存器,同时相应的状态位被设置为01。第二次捕获使相应的捕获中断标志位置位,如果中断未被屏蔽,则产生一个外设中断请求。

  (3)第三次捕获

  如果捕获发生时,fifo堆栈已有捕获到的2个计数值,则在顶层寄存器中最早的计数值将被弹出并丢弃,而堆栈底层寄存器的值将被压入到顶层寄存器中,新捕获到的计数值将被压入到底层寄存器中,并且fifo的状态位被设置为ii以表明1个或更多旧的捕获计数值已被丢弃。第三次捕获使相应的捕获中断标志位置位。如果中断未被屏蔽,则产生一个外设中断请求。

  3.捕获中断

  当捕获单元完成一个捕获时,在fifo中至少有一个有效的值(cap=fifo位显示不等于0),如果中断未被屏蔽,中断标志位置位,产生一个外设中断请求。因此,如果使用了中断,则可用中断服务子程序读取到一对捕获的计数值。如果不希望使用中断,则可通过查询中断标志位或堆栈状态位来确定是否发生了2次捕获事件,若已发生,则捕获到的计数值可以被读出。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!