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.

[参考译文] MSP430F5529:每4.3522万秒缺少1个PS1中断。

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/619482/msp430f5529-missing-1-ps1-interrupt-every-43522-seconds

部件号:MSP430F5529

我有一个MSP430F5529设计,它使用RTC_A来协调数据捕获。  我启用了RTCRDY和RT1PS,PS设置为64Hz。  连续运行4.3522万秒,效果完美。  我得到RDY中断 ,然后是64 PS中断。 然后在4.3522万秒后,我只得到63 PS中断。  然后它会继续拾起并继续运行4.3522万秒。  我将RTC校准设置为0,所以我不认为是校准逻辑推进时钟。   我已从设备附加了RTC_A寄存器转储, 并在发生错误时记录。   以前有人看过这个吗?

RTC__Real_Time_Clock
RTCCTL01 0xB014实时计时器控制0/1 [映射的内存]
RTCBCD 1 RTC BCD 0:二进制/1:BCD
RTCHOLD 0 RTC保持
RTCMODE 1 RTC模式0:计数器/ 1:日历
RTCRDY 1 RTC就绪
RTCSSEL 00 - RTCSSEL_0 RTC Source Select 1 (RTCSSEL 00 - RTCSSEL_0 RTC源选择1)
RTCTEV 00 - RTCTEV_0 RTC时间事件1
RTCTEVIE 0 RTC时间事件中断启用标志
RTCAIE 0 RTC Alarm Interrupt Enable Flag (RTCAIE 0 RTC警报中断启用标志
RTCRDYIE 1 RTC就绪中断启用标志
RTCTEVIFG 1 RTC时间事件中断标志
RTCAIFG 0 RTC警报中断标志
RTCRDYIFG 0 RTC就绪中断标志
RTCCTL23 0x0000实时计时器控制2/3 [映射的内存]
RTCCALF 00 - RTCCALF_0 RTC校准频率位1
RTCCALS 0 RTC校准标志
RTCCAL5 0 RTC校准位5
RTCCAL4 0 RTC校准位4
RTCCAL3 0 RTC校准位3
RTCCAL2 0 RTC校准位2
RTCCAL1 0 RTC校准位1
RTCCAL0 0 RTC校准位0
RTCPS0CTL 0x0101实时计时器预分频计时器0控制[映射的内存]
RT0SSEL 0 RTC Prescale Timer 0 Source Select 0:ACLK / 1:SMCLK
RT0PSDIV 000 - RT0PSDIV_0 RTC Prescale Timer 0 Clock Divide Bit:2.
RT0PSHOLD 1 RTC Prescale Timer 0保持
RT0IP 000 - RT0IP_0 RTC Prescale Timer 0 Interrupt Interval bit:2.
RT0PSIE 0 RTC Prescale Timer 0 Interrupt Enable Flag
RT0PSIFG 1 RTC Prescale Timer 0 Interrupt Flag
RTCPS1CTL 0x0102实时计时器预设计时器1控件[映射的内存]
RT1SSEL 00 - RT1SSEL_0 RTC Prescale Timer 1 Source Select Bit 1 (RT1SSEL 00 - RT1SSEL_0 RTC压力计时器1源选择位1)
RT1PSDIV 000 - RT1PSDIV_0 RTC Prescale Timer 1 Clock Divide Bit:2.
RT1PSHOLD 1 RTC Prescale Timer 1保持
RT1IP 000 - RT1IP_0 RTC Prescale Timer 1 Interrupt Interval bit:2.
RT1PSIE 1 RTC Prescale Timer 1 Interrupt Enable Flag
RT1PSIFG 0 RTC Prescale Timer 1 Interrupt Flag
RTCPS 0x8081实时计时器预设计时器控制[映射的内存]
RTCIV 0x0000实时时钟中断向量[已映射内存]
RTCTIM0 0x0935实时时钟时间0 [映射的内存]
RTCTIm1 0x0600实时时钟时间1 [映射的内存]
RTCDATE 0x0820实时时钟日期[映射的内存]
RTCYEAR 0x2017实时时钟年份[映射的内存]
RTCAMINHR 0x0000实时时钟最小/小时警报[已映射内存]
RTCADOWDAY 0x0000实时时钟警报周/日[映射的内存]
RTCSEC 0x35实时时钟秒[已映射内存]
SECONDS6 0实时时钟秒位:6
SECONDS5 1实时时钟秒位:5
SECONDS4 1实时时钟秒位:4
SECONDS3 0实时时钟秒位:3
SECONDS2 1实时时钟秒位:2
SECONDS1 0实时时钟秒位:1
SECONDS0 1实时时钟秒位:0
RTCMIN 0x09实时时钟分钟数[已映射内存]
联科特派团6 0实时时钟分钟位:6
联合国系统5 0实时时钟分钟位:5
联科特派团4 0实时时钟分钟位:4
1实时时钟分钟位:3
联科特派团2 0实时时钟分钟位:2
联科特派团1 0实时时钟分钟位:1
minutes01 Real Time Clock Minutes Bit:0
RTCHOUR 0x00实时时钟小时数[映射的内存]
HOUR6 0实时时钟小时位:6
HOUR5 0实时时钟小时位:5
HOUR4 0实时时钟小时位:4
HOUR3 0实时时钟小时位:3
沙漏2 0实时时钟小时位:2
HOUR1 0实时时钟小时位:1
HOUR0 0实时时钟小时位:0
RTCDOW 0x06实时时钟星期几[映射的内存]
DOW6 0实时时钟道琼斯指数:6
DOW5 0实时时钟道琼斯指数:5
DOW4 0实时时钟道琼斯指数位:4
DOW3 0实时时钟道琼斯指数比特:3
DOW2 1实时时钟道琼斯指数比特:2
DOW1 1实时时钟道琼斯指数比特:1.
DOW0实时时钟道琼斯指数比特:0
RTCDAY 0x20实时时钟日[已映射内存]
Day6 0实时时钟日位:6
Day 5 1 Real Time Clock Day Bit:5
Day4 0实时时钟日位:4
Day3 0实时时钟日位:3
Day2 0实时时钟日位:2
Day1 0实时时钟日位:1.
DAY0实时时钟日位:0
RTCMON 0x08实时时钟月[已映射内存]
MONTH6 0实时时钟月位:6
MONTH5 0实时时钟月位:5
MONTH4 0实时时钟月位:4
MONTH3 1实时时钟月位:3
MONTH2 0实时时钟月位:2
月份1 0实时时钟月位:1
MONTH0实时时钟月位:0
RTCAMIN 0x00实时时钟最小警报[已映射内存]
RTCAE 0实时时钟警报启用
联科特派团6 0实时时钟分钟位:6
联合国系统5 0实时时钟分钟位:5
联科特派团4 0实时时钟分钟位:4
联科特派团3 0实时时钟分钟位:3
联科特派团2 0实时时钟分钟位:2
联科特派团1 0实时时钟分钟位:1
minutes0实时时钟分钟位:0
RTCAHOUR 0x00实时时钟警报小时数[已映射内存]
RTCAE 0实时时钟警报启用
HOUR6 0实时时钟小时位:6
HOUR5 0实时时钟小时位:5
HOUR4 0实时时钟小时位:4
HOUR3 0实时时钟小时位:3
沙漏2 0实时时钟小时位:2
HOUR1 0实时时钟小时位:1
HOUR0 0实时时钟小时位:0
RTCADOW 0x00实时时钟警报(每周)[已映射内存]
RTCAE 0实时时钟警报启用
DOW6 0实时时钟道琼斯指数:6
DOW5 0实时时钟道琼斯指数:5
DOW4 0实时时钟道琼斯指数位:4
DOW3 0实时时钟道琼斯指数比特:3
DOW2 0实时时钟道琼斯指数比特:2
DOW1 0实时时钟道琼斯指数比特:1.
DOW0实时时钟道琼斯指数比特:0
RTCADAM 0x00实时时钟警报日[映射的内存]
RTCAE 0实时时钟警报启用
Day6 0实时时钟日位:6
Day5 0实时时钟日位:5
Day4 0实时时钟日位:4
Day3 0实时时钟日位:3
Day2 0实时时钟日位:2
Day1 0实时时钟日位:1.
DAY0实时时钟日位:0

 

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

    您好,James:

    我认为这可能仍然是导致这种情况的校准机制,即使校准位的所有设置都设置为0。 请参阅用户指南 www.ti.com/lit/pdf/slau208 的22.2 章节“实时时钟校准”-该章节末尾有一条注释,说明:

    "

    注意:可能的最小校准

    可能的最小校准为-4 ppm或+8 ppm。 例如,设置RTCCALS = 0和RTCCAL = 0h将导致频率减少-4 ppm。 同样,设置RTCCALS = 1,RTCCAL = 0h将导致频率增加+8 ppm。

    "

    因此,您显示的寄存器具有RTCCALS =0和RTCCAL =0,这意味着频率减少-4ppm。

    此致,

    Katie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    64Hz的周期为15.6 毫秒。 4 ppm校正仅为0.004 毫秒。 为什么更正0.004 会导致丢失一个PS中断?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Nick:

    请参阅MSP430F5xx/6xx 用户指南 www.ti.com/lit/pdf/slau208 的“22.2 4实时时钟校准”一节,第二段:

    "

    校准是通过根据RTCCALS和RTCCALx设置定期调整RT1PS计数器来完成的。 在日历模式下,RT0PS将标称3.7268万-Hz低频(LF)晶体时钟输入除以256。 64分钟周期为3.2768万个周期/秒×60秒/分钟×64分钟= 1.2582912亿个周期。 因此,频率降低–2-ppm (降低校准)大约等于每1.2582912亿个周期增加256个周期(256/1.2582912亿 = 2.035 ppm)。 这是通过在64分钟内按住RT1PS计数器并为RT0PS输出多保留一个时钟来实现的。

    "

    您正在计算RT1PS中断,对吗? RT1PS源自3.2768万/256,对于校准,RT1PS每64分钟保持1个周期(即256个ACLK周期)。 现在,在您的初始帖子中,您描述了在一段时间内看到64个中断,63个中断,然后在一段时间内再次看到64个中断,每组64个中断是1? 如果您继续跑步一段时间,那么之后是否总能看到64个跑步记录? 我的理论是,第二个发现63个中断 的地方恰好是 校准发生的地方。 如果连续运行64分钟,则会看到另一个循环,其中有63个中断,而不是64个。 这是我怀疑正在发生的事情-您可以确认吗? 测试的一种方法是设置每次滚动1秒(例如通过UART)时输出的中断数和寄存器的日历时间,并允许运行数小时以上。 然后,您可以看到63计数 的显示频率,以及间隔为64分钟是否有意义。

    此致,

    Katie