大家好、
我有辐射计数仪器、我们使用 MSP430FR5989。 我在该仪表上有显示不同参数的显示屏、如时间、计数、模式、HV 等
当该仪器对辐射进行计数时、LCD 上显示或显示的时间比实际计时器快2.4%。 因此、如果在实际100秒内仪器速度更快、显示为102.4秒。 我尝试在 Main.c 文件中进行更改 、然后我发现、我可以使它比现在更快或更慢。 如何将此问题修复为最接近 的误差、最高可达+-0.5%? 非常感谢您的帮助或解决方案。
谢谢。
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.
大家好、
我有辐射计数仪器、我们使用 MSP430FR5989。 我在该仪表上有显示不同参数的显示屏、如时间、计数、模式、HV 等
当该仪器对辐射进行计数时、LCD 上显示或显示的时间比实际计时器快2.4%。 因此、如果在实际100秒内仪器速度更快、显示为102.4秒。 我尝试在 Main.c 文件中进行更改 、然后我发现、我可以使它比现在更快或更慢。 如何将此问题修复为最接近 的误差、最高可达+-0.5%? 非常感谢您的帮助或解决方案。
谢谢。
我假设这会设置 TASSEL/TBISSEL 域(尽管它没有说明它设置的值)、并省略分频器(ID/CCR0/TAIDEX)和模式(MC)。 您能显示调用此函数的代码吗? (调试器显示("Registers"视图)的计时器的寄存器可能足以继续。)
我要查找的内容有:
1)尝试使用 ACLK (32.768kHz) 1毫秒(0.001秒与0.000977秒)"节拍"。 这不仅不起作用、还会产生您描述的症状。
2) 2)忘记在向上计数模式下从 CCR0值减1。
3) 3)计算的定时器周期(CCR0)值中的取整/截断误差。
我在 main.c 中进行了更改、我发现我可以使它比我们的速度更快或更慢。 我只是对寄存器进行了分页。
CSCTL2 = SELA_LFXTCLK | SELM_DCOCLK | SELM_DCOCLK;// ACLK=LFXT (32kHz)|SMCLK=DCO|MCLK=DCO、
在上面的代码行中、我从 SELA_LFXTCLK 中更改了 SELA_VLOCLK、这是我在.h 文件中最接近的寄存 器、但它使它更快、然后、我也从 SELA_LFXTCLK 中更改了 SELA_7、这使它变得非常慢。
我还在 main.c 文件中更改了分频器、但它使其变得更快或更慢。
LFXTCLK (额定32kHz)的运行速度确实比 VLOCLK (额定10kHz)[参考数据表(SLAS789D)表5-4和5-7]要快很多。 VLOCLK 无论如何都不适合"壁式时钟"时间(+/-50%精确)。 我不知道 SERA_7有什么作用。
您更改了哪些分频器? 通常、这些东西可以在时钟源和目标频率已知后计算、但从外部看、我们都猜到了
-------------- 。
未经请求:这看起来可疑:
> PJSEL1 &=~0x0010;//
> PJSEL0 |= 0x0010;//
因为它只启用 LFXIN、而不启用 LFXOUT。 在这种情况下、我希望看到 CSCTL4:LFXTBYPASS = 1 [参考用户指南(SLAU367P)第3.2.2]节、但该代码设置 LFXTBYPASS = 0。
您的32kHz 使用什么时钟源? 它是外部时钟(一根线进入 PJ.4)还是外部晶振(两根线进入 PJ.4和 PJ.5)? [如果需要、请检查原理图。] 在前一种情况下、应设置 LFXTBYPASS = 1;对于后一种情况、应设置 PJSEL0中的0x0030 (而不是0x0010)位[参考数据表.6-40]
> 我们将使用32kHz 外部晶体。
然后(如上所述)您应该使用
根据数据表、> PJSEL0 |= 0x0030;// PJ.4/5作为 LFXIN/LFXOUT 表6-40
我不确定您的32kHz 现在是如何工作的(可能是您尚未发布的一些代码?)。
--------------------
除此之外,我建议您不要再更改 CS 寄存器--保留 SELA_LFXTCLK 并保留所有 DivX,就像原来一样。 如您所见、此类更改往往会进行较大的调整、您需要进行较小的调整。
此外、在 LCD 上没有显示 CPU 时钟(ACLK/SMCLK/MCLK/VLOCLK/LFXTCLK)的机制、相反、你需要将该时钟提供给一个定时器(TimerA、TimerB、RTC)、这就是可以进行小调整的地方。
LCD 时钟显示屏使用什么计时器? 以及如何配置它?
MSP430FR58xx、MSP430FR59xx 和 MSP430FR6xx 系列的第3.2.8节 CS 模块失效防护操作用户指南(修订版 P) 包含:
[引用]如果 LFXT 提供任何系统时钟(ACLK、MCLK 或 SMCLK)、并且检测到故障、则系统时钟会自动切换到 LFMODCLK 作为其时钟源。[/quot]
和 第3.1节"时钟系统简介"包含:
[引用] MODCLK:频率典型值为5MHz 的内部低功耗振荡器。 LFMODCLK 是 MODCLK 除以128。[/引用]
也许、频率误差是由 未配置校正的32kHz 外部晶振以及 正在使用内部低容差 LFMODCLK 来解释的。
我之前说过、创建一个更小的项目来展示问题并与我们分享。 通常、当您发现问题时、您会发现问题。