DS1302是一款常用的时钟芯片,原来也经常使用,不过最近使用过程中发现了一个问题,就是DS1302的时间走得太快,难道是晶振的原因?
很显然,晶振的误差不可能导致时钟芯片运行快很多,所以最大的可能就是软件bug,通过排查,发现DS1302时间读取函数放到了主函数while中不断循环读取,这样会导致读取过快,影响读取时间数据的准确性。
问题找到了,解决方法就是通过定时读取,一秒钟读取几次,而不是原来的几十次甚至上百次。修改后,时钟数据果然恢复了正常。
DS1302是一款常用的时钟芯片,原来也经常使用,不过最近使用过程中发现了一个问题,就是DS1302的时间走得太快,难道是晶振的原因?
很显然,晶振的误差不可能导致时钟芯片运行快很多,所以最大的可能就是软件bug,通过排查,发现DS1302时间读取函数放到了主函数while中不断循环读取,这样会导致读取过快,影响读取时间数据的准确性。
问题找到了,解决方法就是通过定时读取,一秒钟读取几次,而不是原来的几十次甚至上百次。修改后,时钟数据果然恢复了正常。