This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F6779A:RTC_C模块在主电源切断后正在初始化。

Guru**** 2546020 points
Other Parts Discussed in Thread: TIDM-AUX-MODULE, MSP430F6779

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/583815/msp430f6779a-rtc_c-module-is-initializing-after-main-power-cut

部件号:MSP430F6779A
主题中讨论的其他部件:TIDM-AUX-MODULE,MSP430F6779

您好,

我正在使用slaa577g lib. Ref作为能量计,在这种情况下,每次切换主电源时RTC都会初始化。实际上,我是微控制器的新用户,在过去一周内一直处于这种状态,因此我需要解决方案。

我已将备用电池连接到VBAT引脚,这意味着32kHz晶体始终在运行,因此我想要解决如何在关闭和打开电源后获得RTC的增量值的问题...

 我需要紧急解决方案,因为我正在进行电子计量项目,如果有人有解决方案plxzz回复a.s.a.p.

谢谢...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Sumit:

    您是否询问如何使用RTC来跟踪电源故障后主电源关闭的时间?

    此致,

    詹姆斯

    MSP客户应用程序
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,James:

    谢谢你很快回复我...

    是的,同样,但略有不同,我希望在未开机后更新我的日期和时间。

    这是我的RTC部分的示意图....

    谢谢...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    RTC部分的Shcematic。

    谢谢...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,James:
    在过去的两天里,我一直在等待您的回复,我已经回答了您的问题,并附上了我的RTC部分的示意图,请查看并提供解决方案。

    此致,
    Sumit
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我对您的理解正确,您需要测量断电和重新通电之间的时间。

    因此,您可以在断电时使用RTC_C模块触发RTC,并在重新打开电源时停止RTC。 计数为断电时的秒数。

    另一种方法是在启用两个外部事件(一个用于断电,另一个用于重新打开电源)的情况下使用日历模式。 引脚RTCCAP0和RTCCAP1可用作外部开关(机械或电子)的事件或篡改检测输入。 设备通电后,可通过在RTCTCCTL0寄存器中设置TCN位来启用此功能。 只要具有有效的RTC电源,所有MSP430操作模式都支持带有时间戳的事件和篡改检测。 当RTCCAPx引脚上存在事件并且启用了时间捕获功能(TCEN =1)时,RTCCAPxCTL寄存器中相应的CAPEV位将被设置,相应的时间戳信息(秒,分钟,小时,月,月和年的某一天)将存储在相应的备份寄存器中 (RTCCECBAKx,RTCMINBAKx,RTCHOURBAKx,RTCDAYBAKx,RTCMONBAKx和RTCYEARBAKx)。 有关此模式的更多详细信息,请参阅 《MSP430x5xx/x6xx用户指南》中的第24.3 2节。

    此致,

    詹姆斯

    MSP客户应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,James:
    感谢xx为我提供支持,当然您已经正确理解了我。现在我将实施您提供的解决方案,然后我将向您更新结果。
    非常感谢…
    此致,
    Sumit
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Sumit:

    我忘记提及的另一个参考是TIDM-AUX-MODULE TI设计。 除了突出显示如何使用辅助电源模块和RTC模块之外,此设计还提供了代码示例,突出显示触发时间捕获的外部事件。 这些应该对您的入门非常有帮助。 我建议您参考 《电表电池管理和辅助电源选项设计指南》第14至15页中讨论的以下示例。

    • MSP430F6779_AUX_14.c
    • MSP430F6779_AUX_15.c
    • MSP430F6779_AUX_16.c

    此致,

    詹姆斯

    MSP客户应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,James:

    很抱歉回复太晚了,

    只需检查此代码片段,我出错了, 并解决了问题...我没有得到

    #if defined (rtc_support)
         如果(!check_rtc_sumcheck())
         {
           
           rtc.year  = 0x11;
           rtc.month = 0x03;
           rtc.day   = 0x1C;
           rtc.hour  = 0x02;
           rtc.minute = 0x03;
           rtc.second = 0x04;
           set_rtc_sumcheck();
       #IF已定义(__MSP430_HUS_RTC_C__)||已定义(__MSP430_HUS_RTC_CE__)
          
             RTCCTL0_H = RTCKEY_H;                 //解锁RTC
           如果(RTCCTL0和RTCOFIFO){// 如果设置了RTCOFIFO,则初始化
             RTCCTL13 = RTCBCD+RTCHOLD+RTCMODE+RTCTEV_0;//初始化RTC
             RTCCTL0_L &=~RTCOFIFO;                                                   //RTCCTL0_L &=~RTCOFIFO;  //清除标志
             RTCSEC = rtc.second;
             RTCMIN = RTC.minute;                //RTC.minute = RTCMIN;
             RTCHOUR = RTC.Hour;                  //RTC.Hour = RTCHOUR;
           //   RTCDOW  = rtc.DayOfWeek;
             RTCDAY  = RTC.Day;
             RTCMON  = RTC.Month;
             RTCYEAR = RTC.year + 0x2000;
             RTCCTL13 &=~RTCHOLD;                  //启用RTC
           }
          否则
           {
             RTCCTL3 |= RTCLOCK;
             RTCCTL13 = RTCBCD+RTCMODE+RTCTEV_0;//初始化RTC
           }
           RTCCTL0_H = 0;  //锁定RTC
       #endif
       }
       #endif

    请帮助我......

    谢谢,

    Sumit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,James:

    我已经发布了在slaa577g lib中获取的代码片段。在CHECK_RTC_Sumcheck()函数中,始终返回零,而且如果此函数返回零,则RTC将不会更新...

    我不明白为什么此函数总是返回零值。

    这就是乐趣:

    int check_rtc_sumcheck (void)

       return rtc.sumcheck ==(~(rtc.second + rtc.minute + rtc.hour + rtc.day + rtc.month + rtc.year)和0xFF);
    }

    请浏览该文档,然后Plzz帮助我解决此问题。

    正在等待帮助...

    谢谢

    Sumit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,James:

    很抱歉再次回复延迟,我想告诉您我已成功完成我的项目,现在我的RTC运行良好...

    我已在RTCCTL3中设置了RTCLOCK位,允许保留所有3.5
    写入和重置操作的保留逻辑...感谢您的大力支持,非常感谢

    此致,

    Sumit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    太棒了! 感谢您的跟进。 如果社区中的其他人面临类似的问题,这可能会对他们有所帮助。

    此致,

    詹姆斯

    MSP客户应用程序