捕获单元的操作由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对脉冲计数,再计算脉冲宽度。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。