首页 理论教育 如何操作捕获单元寄存器?

如何操作捕获单元寄存器?

时间:2023-06-29 理论教育 版权反馈
【摘要】:捕获单元的操作由4个16位的寄存器CAPCONA/B和CAPFIFOA/B控制。位9 CAP12TSEL:捕获单元1和2的通用定时器选择位。位8 CAP3TOADC:捕获单元3事件启动模数转换位。位5~4 CAP2EDGE:捕获单元2的边沿检测控制位。捕获控制寄存器B其格式如下:寄存器CAPCONB的位定义与CAPCONA相似,不再详述。捕获FIFO状态寄存器A捕获FIFO状态寄存器A包含3个捕获单元各自FIFO堆栈的状态位。CAP4对脉冲上升沿进行捕获,通用定时器T1对脉冲计数,再计算脉冲宽度。

如何操作捕获单元寄存器?

捕获单元的操作由4个16位的寄存器(Capture Unit Re gisters)CAPCONA/B和CAPFI⁃FOA/B控制。由于使用了通用定时器1~4为捕获单元提供时钟,因此也使用了寄存器Tx⁃CON(x=1、2、3、4)来控制捕获单元的操作。

(1)捕获控制寄存器A(CAPCONA)

其格式如下:

位15 CAPRES:捕获复位。读该位总为0。

●0:所有捕获单元的寄存器清零。

●1:无操作。

位14~13 CAP12EN:捕获单元1和2使能位。

●00:禁止捕获单元1和2,FIFO堆栈保持它们的内容。

●01:使能捕获单元1和2。

●10~11:保留。

位12 CAP3EN:捕获单元3使能位。

●0:禁止捕获单元3,其FIFO堆栈保持它的内容。

●1:使能捕获单元3。

位11保留位。

位10 CAP3TSEL:捕获单元3的通用定时器选择位。

●0:选择通用定时器2。

●1:选择通用定时器1。

位9 CAP12TSEL:捕获单元1和2的通用定时器选择位。

●0:选择通用定时器2。

●1:选择通用定时器1。

位8 CAP3TOADC:捕获单元3事件启动模数转换位。

●0:无操作。

●1:当CAP3INT标志置位时,启动模数转换。

位7~6 CAP1EDGE:捕获单元1的边沿检测控制位。

●00:检测。

●01:检测上升沿。

●10:检测下降沿。

●11:检测两个边沿。

位5~4 CAP2EDGE:捕获单元2的边沿检测控制位。

●00:无检测。

●01:检测上升沿。

●10:检测下降沿。

●11:检测两个边沿。

位3~2 CAP3EDGE:捕获单元3的边沿检测控制位。(www.xing528.com)

●00:无检测。

●01:检测上升沿。

●10:检测下降沿。

●11:检测两个边沿。

位1~0 保留位。

(2)捕获控制寄存器B(CAPCONB)

其格式如下:

寄存器CAPCONB的位定义与CAPCONA相似,不再详述。

(3)捕获FIFO状态寄存器A(CAPFIFOA)

捕获FIFO状态寄存器A(CAPFIFOA)包含3个捕获单元各自FIFO堆栈的状态位。如果CAPnFIFO(n=1、2、3)在更新(由于发生了一个捕获事件)的同时,正对其状态位进行写操作,则写操作优先。CAPFIFOx(x=A、B)寄存器具有编程优先性。例如,向CAP⁃nFIFO位写入01,事件管理器模块认为在FIFO中已经存在一个值。随后每次FIFO得到一个新值时,将会产生一个捕获中断。

其格式如下:

位15~14 保留位。

位13~12 CAP3FIFO:捕获单元3的FIFO堆栈状态位。

●00:空。

●01:捕获到1个值。

●10:捕获到两个值。

●11:捕获到两个值,且至少丢失了1个先前捕获的值。

位11~10 CAP2FIFO:捕获单元2的FIFO堆栈状态位。

●00:空。

●01:捕获到1个值。

●10:捕获到两个值。

●11:捕获到两个值,且至少丢失了1个先前捕获的值。

位9~8 CAP1FIFO:捕获单元1的FIFO堆栈状态位。

●00:空。

●01:捕获到1个值。

●10:捕获到两个值。

●11:捕获到两个值,且至少丢失了1个先前捕获的值。

位7~0 保留位。

(4)捕获FIFO状态寄存器B(CAPFIFOB)

其格式如下:

寄存器CAPFIFOB的位定义与寄存器CAPFIFOA类似,不再详述。

【例6-3】 编程用捕获单元CAP4对脉冲的宽度进行捕获。CAP4对脉冲上升沿进行捕获,通用定时器T1对脉冲计数,再计算脉冲宽度

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈