打印

关于DS1302读取时的奇怪现象,高手来解释一下

[复制链接]
2240|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinyitong|  楼主 | 2011-7-9 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我读的ds1302的数据有个奇怪的现象

秒  对
分  错
时  对
日  错
月  对
周  错
年  对
下一次读时
秒 错
分 对
时 错
日 对
月 错
周 对
年 错
下一次读取
又反过来

源程序如下:
void Read_1302_Time()
{
    uchar i;
    uchar idata ucCurtime[7];
   uchar idata uc[7];
    uchar ucAddr = 0x81;
   
    for (i=0; i<7; i++)
    {
        ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
   
       uc[i]   = R1302(ucAddr);//这里加了一句测试用的语句
      
       ucAddr += 2;
    }
    Time_1302.u8_Second  = BcdToHex(ucCurtime[0]);
    Time_1302.u8_Minute  = BcdToHex(ucCurtime[1]);
    Time_1302.u8_Hour    = BcdToHex(ucCurtime[2]);
    Date_1302.u8_day    = BcdToHex(ucCurtime[3]);
    Date_1302.u8_month   = BcdToHex(ucCurtime[4]);
    Date_1302.u8_week    = BcdToHex(ucCurtime[5]);
    Date_1302.u8_year    = BcdToHex(ucCurtime[6]);
}

在第10行的地方,加了一句uc[i]   = R1302(ucAddr);(uc[i]是没用的数组)
后,可以实现,读出准确数据。

但是,系统初始化时,有时会出错,正好反过来了,
也就是uc[i]   = R1302(ucAddr);(uc[i]里全是有用的数据,ucCurtime[i]里成乱码了)


为什么?
纠结了两天了,急需解决啊。

相关帖子

沙发
xh0123456xh| | 2011-7-12 14:27 | 只看该作者
不用纠结,考虑下我们的时钟芯片SD2068,性价比高,而且有专门的技术支持

使用特权

评论回复
板凳
gspine| | 2013-5-11 15:06 | 只看该作者
这个有没有可能是CPU的工作频率跟DSP的时钟频率的问题呢?我也再纠结这个问题。。。在我初始化两次就不回出现这个现象

使用特权

评论回复
地板
Daojia211| | 2013-5-26 16:33 | 只看该作者
检查下程序是否出错,还有电路。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

87

帖子

0

粉丝