之前一直使用Motorola(Freescale)单片机。总的来说,Freescale单片机性能很好,抗干扰能力很强,不愧是汽车电子首选。但是,Freescale单片机的价格实在不便宜,之前一直都从系里的Freescale开发中心“借”用,所以还没有体会。最近的这个电路需要的数量较多,便不好意思再开口了。没办法,改投Microchip的PIC16F系列单片机门下。
Freescale单片机开发,可以使用Codewarrior和Processor Expert等利器,十分方便,非常适合我这种一路跟随微软习惯了可视开发的懒人。转投Microchip以后,用MPLAB和PICC作为主要工具。初次体验了一下,特别是跟着PICC里面提供的一系列例子学习了之后,发现虽然没有图形化,但也不是那么不方便,几下搞出一个能用的电路也没有太大问题。
之前开发Freescale系列单片机,都没有使用仿真器或者调试器,纯粹靠手工加LED来差错,竟然也还过得去,基本上都能解决问题。改投Microchip后,发狠买了一个ICD2和测试板,调起来确实要方便一点。
这次要做的是通过一对现成的无线通信模块(smartRF,北京华荣汇提供的WAP200B和GW200B),实现无线RS232接口,并无线控制几个继电器的开合以及几个状态和模拟量的返回。整个开发过程还算顺利,基本没发现什么问题,功能都完全实现。但是,却总发现每次重新接通电源总有可能需要手动复位一次才能正常工作,百思不得其解。翻阅PIC16F887的数据手册,无意中看到它的上电延时复位电路(Power Up Timer),猛然想到这对应的可能就是上电出错的问题。立马修改Configure bits。果然,问题解决了……
这个事情在Freescale单片机上从未想过……