控制/MCU
我在使用外部时钟源提供时钟信号的时候,可能会遇到一种尴尬的情况,就是外部时钟源突然就崩溃了,没有一点点预兆。这样就相当于系统就崩了。所以一个健康茁壮的系统,必须要有一个监测调度机构,就像守夜人一样。PIC16就提供了有这样功能的外设------故障保护时钟监视器(FSCM)。
故障保护时钟监视器(FSCM)使得器件在出现外部振荡器或外部时钟故障时,自动调度到内部时钟源继续进行工作。如果选择了振荡器模式,FSCM能在振荡器起振定时器(OST)延时结束后的任一时刻检测振荡器故障。当选择了外部时钟模式时,FSCM能在器件从复位释放后立即检测振荡器故障。
FSCM通过将配置字中的FCMEN位置1来使能。FSCM可用于外部振荡器模式(HS)、外部时钟模式(ECH、ECM、ECL和EXTRC)和辅助振荡器(SOSC)。
故障保护时钟监视器(FSCM)
SCS(在OSCCON寄存器中)= 00,由配置字中的FOSC<1:0>决定时钟来源。
配置字CONFIG1的bit 13(FCMEN)置1,使能故障保护时钟监视器;bit 2-0(FOSC<2:0>)= 010,选用外部晶振作为时钟源。
故障保护条件清除
SCS<1:0> = 1x:
修改OSCCON寄存器中SCS位,以选择内部振荡器模块。这会复位振荡器起振定时器OST并允许其重新工作。
OSFIF = 0:
将PIR2寄存器的OSFIF位清零(发生故障时OSFIF会被硬件置1,触发中断,这里先略过不提)。
SCS<1:0> = 00:
修改OSCCON寄存器的SCS位,以选择FOSC配置字时钟选择。这会启动振荡器起振定时器OST。CPU将继续依靠内部振荡器工作,直到达到OST计数。当OST超时后,时钟模块将切换到外部晶振且故障保护条件将被清除。
全部0条评论
快来发表一下你的评论吧 !