在线情况
楼主
  • 头像
  • 级别
    • 积分7
    • 经验505
    • 文章12
    • 注册2007-05-29
    430F5418的RTC能够用吗?
    设计了一个产品,本来用F247的,后来看到新出来的5418,RAM大了好多,程序也可以多4倍,特别看中的竟然有个硬件实时钟,所以毫不犹豫的就选它了,可是一用下来,却发现有很多毛病,也许是TI公司受到ARM挤压,匆忙弄了一个上去的吧,下面是我发现的问题:1,RTC的读出没有问题,但是它的写入却有非常大的问题,在计数器状态下写入还可以,但是在实时时钟状态下写入非常难,我试验了多次,写分和秒没有问题,写小时却经常写不进去!或者你写了个07H,读出来就是06H,但是有时又可以写进去,开始可以写进去几次,后来就难了!还有日也是这样的,都是要不写错,要不根本写不进去,我后来想,干脆写完就读,只要读出来不对就继续写,这样总行了吧?可是有时没有问题,但是有时就死在里面了,就是说,不管你怎么写,也写不进去,那只能是死循环了!这个先不谈,另外还有一个根本问题:它的复位是计数器状态,如果你要把它改变成实时时钟,那就会把时间值年月日全部清除的!试问,我们要实时时间干嘛,不就是为了关机状态下它能够继续走,能够准确的记录时间吗?如果我们用的电脑每天开机都要做设置时间的工作,那不是太好笑了吗?不知道TI的设计工程师怎么想的,你要不开机复位不要默认计数器状态,要不就不要画蛇添足的在改变状态时把它清0,也许有人会说,你不会把它复位前保存起来,复位后再写进去吗?但是这样一是会造成时间不准确,二是许多情况下复位是不能预先知道的!比如看门狗复位,当碰到干扰时自动恢复了,可是时间没有了!你说这样的RTC能够用吗?所以我说它只是为了竞争勉强凑进去的。
        请看我们这个论坛翻译的比较雷人的关于RTC的读法:为了安全的读取计数器数据,多次读取RTCRDY位取平均值和同步读取操作等上述方法都可以被使用,可以多次读去计数器寄存器,由软件多次读取来确定正确的数据。取平均值?显然不是指RTCRDY位了,那么时间是可以取平均值的吗?如果读一次10点,读一次8点,那么正确的时间应该是9点?真是太可笑了,后面那句“由软件多次读取来确定正确的数据”其实也是不对的,软件怎么能够判断时间啊?除非是不可能发生的时间,比如32号61分钟!否则就不可能判断那个是正确的时间,只能是多次读,取多的那钟,但是前提是不能读出来有很多不一样的数值。但是我用了多年的实时时钟芯片,从来就没有这样读的,也不可能在MCU复位时就需要重新设置把时间值写进去,这样启不是变成玩具了?
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    楼主写得很详细,但当中可能存在着一些误解。相信TI的RD不会那么差。
    对于你的其中一个问题。RTC由第一次设置指定的时间后,以后断电后需要后备电池来提供给RTC工作。也就是说第一次上电后由计数模式改定时模式,这样一直工作在RTC模式。所以要靠电池为提供MCU的工作,需要做掉电检测。检测掉电后使MCU处理低功耗模式,此时RTC在运作中。这样就不存在着再次上电被复位。
    其他的问题我未一一证实,相信有不少用户也用过RTC的时钟。希望他们能给你意见。
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分7
      • 经验505
      • 文章12
      • 注册2007-05-29
      很高兴看到DC的回答,但是我上面写的很清楚了,很多情况下复位是不能够避免的,比如看门狗复位,如果一个系统仅仅指望它开机或者电池工作时只复位一次是不可能的。
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
        • 积分7
        • 经验505
        • 文章12
        • 注册2007-05-29
        其实430的芯片确实有很多问题,我们公司是它的大用户,我也用F427,F135,F435做过几款产品,它的IO口复位是不可靠的,就是说,进入低功耗状态时,你按中断有时它是醒不过来的,这个毛病我和TI的技术支持也反映过,一百次有几次会死了,得把电池拆下来过一回重新装回去才行,这样有时我们在客户面前很难堪,我做的系统都是断电进入低功耗的,但是用其他公司的芯片就没有这个问题,后来我把它的IO口和复位连在一起了,开机进入非屏蔽状态,关机进入复位状态,才解决这个问题。另外它的12位AD也是总出事情,会莫名其妙的坏了,就是数据大了好多,其他正常,如果换了新的就好了,我做设计时就坏了好几片,435,135都是,就是AD坏,没有任何原因。我后来吓的手都不敢碰,怕静电把它弄坏了,这一点PIC比它好的多,焊反了,烫下来重新装回去也没有事情,我手里其他美国的芯片没有碰到坏过的,就是碰到430会,感觉它好象是美国的乡镇企业,哈哈
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
        • 门派
        • 职务总版主
        • 声望+9
        • 财富5
        • 积分3065
        • 经验390701
        • 文章6744
        • 注册2006-03-07
        楼主说的RTC情况有向TI FAE反映吗?他们怎么表示,有没有给出一个好的解决办法.如果有,请告诉大家一下.
        确实,复位的情况确实不可能完全没有.如果MCU复位了使RTC从计时模式变为计数模式的话确实令人无法接受.这样还不如用外部的RTC芯片算了.也不贵.
        另外,请教楼主说的“把它的IO口和复位连在一起了,开机进入非屏蔽状态,关机进入复位状态,才解决这个问题。”具体是怎样做?能否详尽一点的做法和原理。
        关于ADC12模块的问题,TI的FAE又是怎样回应的?
        楼主的真枪实干和问题的反映情况有助于我们了解得更多真相,谢谢楼主!
        [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
        在线情况
        6
        • 头像
        • 级别
          • 积分7
          • 经验505
          • 文章12
          • 注册2007-05-29
          DC:不好意思,工作忙,没有很多时间上网,所以回答晚了,以前我向FAE反应过的问题,一般都是态度很热情,然后回点资料,如果真的问题,那还是要问总部的,在等待的过程中就忘记问题了。
              因为在进入睡眠时,用外部IO口中断换醒不可靠,所以我后来把要换醒的IO口和复位连接在一起了,这样按了这个键肯定能够醒来,但是这样正常工作时会产生问题,如果在存取数据时按这个键,会立即复位,造成有可能数据出错,所以在刚上电时把复位口设置成非屏蔽中断口,这样当按下键时进入非屏蔽中断,在中断程序中设一个关机标志位,然后返回到正常程序中做完所有工作后再关机进入睡眠,也可以做成象手机关机那样在中断程序中判断这个IO口是否一直按着超过2秒,不超过就返回什么也不要做,超过了就设置的关机标志(这在手持仪表中经常会用到,防止意外关机),由主程序进入睡眠。进入睡眠前,必须把它还设置成复位口,这样按一下肯定百分之百能够醒过来。
          微控网感谢您的参与
          在线情况
          7
          • 头像
          • 级别
            • 积分7
            • 经验505
            • 文章12
            • 注册2007-05-29
            自己问题的结果:RTC在看门狗复位时是不改变状态的,这样也就勉强可以用了
            微控网感谢您的参与
            在线情况
            8
            • 头像
            • 级别
              • 积分4
              • 经验149
              • 文章12
              • 注册2009-06-26
              我也遇到这个问题,问导师,他也说可能芯片本身有问题,用循环检测,没办法中的办法了,希望有谁能解决一下这问题
              微控网感谢您的参与
              在线情况
              9
              • 头像
              • 级别
              • 门派
              • 职务总版主
              • 声望+9
              • 财富5
              • 积分3065
              • 经验390701
              • 文章6744
              • 注册2006-03-07
              想起这个问题,我想给些提示给大家参与。
              比如万一系统真的产生出错而导致内部芯片复位时,系统是产生PUC信号还是产生POR信号。这两者对系统各模块寄存器影响是不一样的。若只是产生PUC而没有产生POR,那么PUC会不会影响到RTC模块的工作模式?如果PUC不影响到RTC的定时模式,那么这个应该好办点。这样我们可以让单片机不易产生POR,这个可以在电源设计解决。
              否则,如果PUC也将影响到RTC模块的工作模式(使其复位在计数模式)。那么此时真的有点头痛了。
              大家看看我的想法对不对....我意思是指PUC和POR是否对RTC的寄存器影响情况。
              [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
              在线情况
              10
              • 头像
              • 级别
                • 积分7
                • 经验505
                • 文章12
                • 注册2007-05-29
                PUC的确不会影响RTC的工作模式,POR会,但是PUC会影响它的RTCHOLD位,也就是说,每次复位以后它是停止的,要启动它才能工作,这样时间就会有误差,我前面说过它是个匆忙凑上去的一个器件,所以根本没有考虑它是否能够实际运用,严格来说,其实就是一个废器件,因为我做了好多实验,它的写入的确有很大的问题,可以说经常写进去要丢位或者写不进去,它的时,和日这个单元经常出这样的事情,一般复位以后可以写几次正确的,以后就不行了,我一怒之间下用了条:LOOP:MOV.B R8,RTCDAY / CMP.B R8,RTCDAY  /JNZ LOOP ;这样你不让我写正确我就不走了!但是最终就死机了,就是说不管你写多长时间,就是写不进,这样的RTC怎么能够用呢?后来我想,不就是个万年历吗,我编个软件就行了,就把RTC当个秒中断使用,每秒我自己在RAM做时间,但是也不行!因为它会在PUC以后多几秒出来,我另外用个TA1做个秒中断,那就时间很正确,PUC对它一点没有影响,所以只能不用这个RTC了,除非我手里这个5418正好有问题(我有5颗样片,懒的再贴了),否则这RTC就是个废品了
                微控网感谢您的参与
                在线情况
                11
                • 头像
                • 级别
                  • 积分4
                  • 经验149
                  • 文章12
                  • 注册2009-06-26
                  我做了两个不同的板子,在RTC这一块上都出了月份这一位的问题,我用的是5438,比你的还早一些,用秒中断来做实时时间,断电了再上电后有什么方法能保证它还是对的,是每回使用的时候都用串口修改你自己编的软件参数?例外问一下版主,430其他系列的有实时时钟的芯片有没有出现过这个问题?
                  微控网感谢您的参与
                  在线情况
                  12
                  • 头像
                  • 级别
                  • 门派
                  • 职务总版主
                  • 声望+9
                  • 财富5
                  • 积分3065
                  • 经验390701
                  • 文章6744
                  • 注册2006-03-07
                  看来这个贴子都有共同的问题,主要来自RTC新模块的出现。大家对此模块都不太了解其性能,这点咱们应该可以理解的。另外,如果TI官方能够证实这个BUG的存在。应该给予正确的应用指引说明,如果连楼主这种大客碰见这种问题都未能得到TI最终的解决办法。我们作为论坛第三方,应该没有多大的能力去解决这类问题。
                  坦白说,对于我个人而言。我使用此型号并没有做太多的实例,所以楼主所说的RTC情况并没有碰过。
                  对于这个问题,我建议是用电池来维护MCU不产生POR动作。另一个楼主提到的不写入数据问题。我认为,作为RTC应用。时间只要设置好一次的话。以后基本上很少要再次设置的,就算有也是过一个时间较长时才人为设置一下(可能人为需要调整时间做修正)。所以,我觉得没太多不必经常写入数据什么的。我不知道这想法是否正确,但最起码作为RTC--实时时钟功能一般调整是比较少的。
                  [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
                  Powered by LeadBBS 9.2 .
                  Page created in 0.1719 seconds with 6 queries.