Keep Faith » 日志 » 使用C8051F的Comparator功能实现边沿触发型中断
使用C8051F的Comparator功能实现边沿触发型中断
sardis 发表于 2007-10-25 17:58:45
C8051F型单片机中使用了CrossBar技术,可动态调整外围模块与GPIO管脚间的影射关系,应该来说,使用起来已经相当方便。
极大的增加了硬件的灵活性,也简化了硬件接口的设计。但GPIO与外围模块间的影射还是存在一定的限制的。比如:UART及SPI
等串行接口只能影射到少数的几个管脚中,而且影射是依照外围模块的优先级的. 在项目中,需要设置一个边沿触发的中断,然而由于
硬件设计时没有仔细考虑管脚连接,导致不能影射到INT0,INT1(对C8051F330而言,只能影射到P0口)及PCA功能(ECX0~ECX2最多
只能影射到P0~P1.3).庆幸的是,使用Comparator功能,照样可以实现边沿触发中断.
Comparator模块正常情况下需要设置CP+(偶数脚P0.0 P0.2...) 及CP-(奇数脚P0.1 P0.3...)对应的管脚. 这里我们可以仅将CP+或CP-
影射至目标管脚(视奇数脚或偶数脚而定),而将另一路设置为空(CPT0MX相应寄存器设置为8)......
最后使能上升延及下降沿中断,然后编写相应的中断处理函数.
(注意,如果我们带测的目标管脚为奇数脚时, CPT0CN中的上升延及下降沿标志与真实情况相反)
极大的增加了硬件的灵活性,也简化了硬件接口的设计。但GPIO与外围模块间的影射还是存在一定的限制的。比如:UART及SPI
等串行接口只能影射到少数的几个管脚中,而且影射是依照外围模块的优先级的. 在项目中,需要设置一个边沿触发的中断,然而由于
硬件设计时没有仔细考虑管脚连接,导致不能影射到INT0,INT1(对C8051F330而言,只能影射到P0口)及PCA功能(ECX0~ECX2最多
只能影射到P0~P1.3).庆幸的是,使用Comparator功能,照样可以实现边沿触发中断.
Comparator模块正常情况下需要设置CP+(偶数脚P0.0 P0.2...) 及CP-(奇数脚P0.1 P0.3...)对应的管脚. 这里我们可以仅将CP+或CP-
影射至目标管脚(视奇数脚或偶数脚而定),而将另一路设置为空(CPT0MX相应寄存器设置为8)......
最后使能上升延及下降沿中断,然后编写相应的中断处理函数.
(注意,如果我们带测的目标管脚为奇数脚时, CPT0CN中的上升延及下降沿标志与真实情况相反)
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
