zoukankan      html  css  js  c++  java
  • 关于时钟芯片DS1302的问题

    数采仪上一直使用的是pcf8563。但是在雨情主板(msp430)上却出现了问题:
    问题1,延迟要特别长(甚至500ms)才能读出正确的数值。
    问题2,IIC的sda线上会出现半个电平(不是低电平,也不是高电平,而是介于两者之间)的情况。
    问题3,使用msp430 149时正常,但是使用msp430 1611时却读取不到时间。

    这些问题无法解决,因此决定试用开发板上使用的时钟芯片DS1302。
    该芯片很好用,用简单的飞线方式连接到msp430 1611主板上后,程序就可以跑起来,并可以正常读取和设置时间。

    但是新的问题出现了:前1天跑的好好的主板,把纽扣电池卸掉后,时间不走了。
    也怀疑是软件的问题,但是想不明白,在软件没有任何变化的情况下,为何结果会不一样,因此怀疑是DS1302芯片的问题,
    感觉是假的DS1302在跑了几天后就不能用了,硬件工程师也很确定的说,DS1302假货特别多,网上的查询结果也验证了
    这种说法,还有人说2元左右的DS1302都是假货,问过采购,我们的DS1302正是2元。把开发板上的DS1302换到新板子上,
    新板子可以正常跑起来,把新板子上认为有问题的DS1302换到开发板上,开发板跑不起来。于是更加坚定了批次性DS1302
    有问题的想法。可以这批DS1302是以前采油上用过的,用了几十片都是好的。
    真的让人很迷惑。

    怀疑是晶振坏了,也怀疑是匹配电容不对,还怀疑DS1302芯片是假货,总之大家忙活了1天,从硬件上去找问题。

    不断的测试,终于发现了1个规律:用开发板的程序在新板子上跑一次,时钟正常,不断电,再用雨情的程序在新板子上
    跑则时钟正常。终于确定是软件的问题。

    同时也发现换到开发板上的那个DS1302,晶振虚焊着(郁闷死了,问题测试一定要细心,否则会害死人的),重新焊好后,
    开发板正常。回想为何 把开发板上的DS1302换到新板子上,新板子可以正常跑起来 ,原因可能是先运行了开发板程序,
    再运行了雨情程序,当然能跑起来了。

    对比开发板程序和雨情程序的不同,最终发现,开发板程序在开始时设置了系统时间。修改雨情程序,把设置系统时间的
    语句加到程序开始处,程序运行正常。
    DS1302的手册上说明,要使得晶振起振,秒寄存器的最高位要置0,我以为开发板的Reset_DS1302已经做了这个事情,现在
    看来我的想法错了。正是因为开发板程序每次运行都要设置系统时间,该操作会导致秒寄存器的最高位置0,所以开发板的
    程序能正常跑。而雨情的程序到开发板上也能正常跑起来,是因为开发板上有备用电池,其能够保存住秒寄存器最高位的0。

    总之,问题顺利的解决,虽然解决的历程比较艰辛。
    出现问题的原因很复杂,有我的不够细心,也有硬件工程师的不够细心,还有各种的机缘巧合。没办法,这就是研发!!!

  • 相关阅读:
    Nginx 对访问量的控制
    Shell入门
    小程序如何处理键盘覆盖输入框
    移动端适配之二:visual viewport、layout viewport和ideal viewport介绍
    javascript-对象
    bind函数作用、应用场景以及模拟实现
    「面试题」如何实现一个圣杯布局?
    一款轮播组件的诞生
    超火js库: Lodash API例子
    js 中的 number 为何很怪异
  • 原文地址:https://www.cnblogs.com/gaotaozhaolei/p/1703606.html
Copyright © 2011-2022 走看看