通过掩膜选项,可以选择石英晶体振荡器或RC振荡器,两者都可作为系统时钟。不管用哪种振荡器,其信号都支持系统时钟。HALT模式会停止系统振荡器并忽略任何外部信号,由此来节省电能。
WDT看门狗振荡器是一个芯片内部自由振荡的RC振荡器,不需连接外部元件,甚至系统进入省电模式时,系统时钟停止了,但WDT振荡器仍然依大约65us/5V的周期工作。由掩膜选项确定,WDT振荡器能停振来达到省电目的。
看门狗定时器
WDT的时钟源是一个专用的RC振荡器(WDT振荡器)或是由指令周期(系统时钟4分频)来实现的,由掩膜选项决定。WDT是用于防止程序不正常运行或是跳到未知或不希望去的地址,而导致不可预见的结果。WDT可以被掩膜选项禁止,如果WDT定时器被禁止,所有与WDT有关的 *** 作都是空 *** 作。
如果单片机工作在于干扰很大的环境中,那么强烈建议使用片内RC振荡器(WDT OSC),因为HALT模式会使系统时钟终止运作。
在正常运作下,WDT溢出会使系统复位并设置TO状态,但在HALT模式下,溢出只产生一个“热复位”,只能使PC程序计数器和堆栈SP复位到零,要清除WDT的值(包括WDT前置分频器)可以有三种方式:外部复位(低电平输入到RES端),用软件指令和HALT指令三种。软件指令由CLR WDT和另一组CLR WDT1及CLR WDT2组成。这两组指令中,只能选取一种,选择的方式由掩膜选项的CLR WDT的次数决定。如果“CLR WDT”被选择(即CLR WDT次数为1),那么只要执行CLR WDT指令就会清除WDT。在CLR WDT1和CLR WDT2被选择的情况下(即CLR WDT的次数为2),要执行两条指令才会清除WDT,否则WDT会由于溢出而使系统复位。
暂停模式(HALT)
暂停模式是由HALT指令来实现的,产生如下结果:
· 关闭系统振荡器,但WDT振荡器继续工作(选WDT振荡器时)
· RAM及寄存器的内容保持不变。
· WDT和WDT前置分频器被清除并再次重新计数(选WDT振荡器)。
·
· PD标志位被置位,TO标志位被清除。
由于外部复位、中断、外部输入一个下降沿信号到PA口或WDT溢出,可使系统脱离暂停状态,外部复位能使系统初始化而WDT溢出使系统“热复位”。测试TO和PD状态后,系统复位的原因就可被确定,PD标志位是由系统上电复位和执行CLR WDT指令被清除,而它的置位是由于执行了HALT指令。如果WDT产生溢出,会使TO标志位置位,还能产生唤醒使得程序计数的PC和堆栈指针SP复位,其它都保持原状态。
PA端口的唤醒和中断方式被看成正常状态,PA口的每一位都可以通过掩膜选项来单独设定为对系统的唤醒,如果唤醒是来自于I/O口的信号变化,程序会重新继续执行下一条指令。如果唤醒是来自于中断,那么有两种情况可能发生:如果相关的中断被禁止或中断是允许的,但堆栈已满,那么程序将继续执行下一条指令,如果中断允许且堆栈未满,那么这个中断响应就发生了。如果在进入HALT模式以前,中断请求标志位被置“1”,那么相关的中断唤醒功能被禁止。一旦唤醒事件发生,要花1024tsys(系统时钟周期)系统才重新正常工作。也即在唤醒后被插入了一个等待时间。如果唤醒来自于中断响应,那么实际的中断程序执行就延迟了一个或一个以上的周期。但是如果唤醒导致下一条指令执行,那么在一个等待周期结束后指令就立即被执行。
为了省电,在进入HALT模式前必须小心处理I/O端口状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)