之前有项目使用过69P42,已量产。后来有项目需要驱动LCD,就选了一片55A,所有程序写完,烧录时选内部RC,烧录后发现休眠电流1.7mA,查所有外部I/O,无冲突,查程序,无明显BUG,断开所有I/O,只剩VCC和GND,电流仍然为1.7mA,百思不得其解。遂从程序逐步排查:1.MCU什么事情不做,上电后直接STOP,测试电流2uA,OK。2.上电后加载初始化程序,然后直接STOP,发现当不加载ADC初始化程序后,电流OK,说明ADC初始化程序有问题,3.再逐个检查ADC初始化部分,发现ADC启动转换标志位($2F地址之GO/DONE位)有问题,当该位启动转换以后(=1启动转换),必需要等到该位自动=0,即必须要等到AD转换完成后,才可以进入STOP,否则电流如上所说,非常大。即使关闭ADC使能位($14之ADCON位),再进STOP,也无效。最离奇的是,强制停止ADC转换(GO/DONE强制=0),再关闭ADC使能位($14之ADCON位),再进STOP,居然无效!!!!!!!!!~~~~~~~~~~电流还是原来那么大。只能等转换完成(GO/DONE位自动=0后),再进STOP,电流立马OK。但是之前的69P42无此问题,不管怎样,甚至不用关闭ADC,直接执行STOP,就可以,毫无问题。不知道是不是BUG? |