工具与软件:
您好!
- 我想问的是 XT1晶体振荡器标志能否立即复位、还是需要等待。 我已经调试了我的程序、一切都很顺利、就像在调试期间、所有标志都被重置、但当我重新启动器件时、为该晶体设置了标志。 我注意到在示例中、在检查 DCO 标志时就像清除了一样。 因此我有点困惑、我还使用了 DCO 稳定时间。 之后我重置了标志、但正如我所说的、它仍然开启、直到我不会设置更高的稳定时间。 我缺少什么吗? 或者、在擦除 X1标志时、我应该设置延迟、是否有任何常数?
- 是否有任何其他更好在运行时检查的标志?
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.
工具与软件:
您好!
尊敬的 Peter:
清除挂起中断是一种确保器件在开始时处于已知状态的方法、如果标志的原因仍然存在、则将再次设置该标志。 如果您的稳定时间太短、那么您可以再次发出标记。
等待时间用于确保 DCO 在继续 MCU 操作之前保持稳定。 您还需要外部晶体上的稳定时间、因为您需要在其通电后使用外部晶体稳定(在为 XT1打开 USCTL6位后、为晶体供电)。
故障标志应该是您检查以验证晶振是否已正确启动的标志。
此致、
Luke
尊敬的 Luke:
因此我应设置 XCAP 和 XDRIVE、然后使用 UCSCTL6 &=~μ H XT1OFF 打开外部晶体;而且要比我要等待晶体通过持续检查和复位稳定还要好
尊敬的 Peter:
您可以使用 delay_cycles、周期延迟将基于 MCLK、在这部分、稳定调整不会导致任何错误的跳转。 如果您等到 Xft 稳定后再调整 DCO、这是更好的方法、以便实现稳定的晶体、并且可以将 DELAY_CYCLES 映射到实际时间。
如果调整 DCO、则使用延迟周期等待 DCO 稳定、时间将不是 CYCLES*CLK 频率、因为时钟频率将随着时间的推移而调整、以满足您的目标设置。
此致、
Luke
您好!
感谢您的回答。 由于时间可能会因温度条件等原因而异、因此我一直在等待晶体开始运行 for loop、并通过在循环中使用整数计数器来降低循环速率。 是不是更好的解决方案? 我是说 XT1可能迟早会稳定。 或者是否有任何副作用。
INT count = 50000;
应执行的操作
{
UCSCTL7 &=~μ H XT1LFOFFG;
SFRIFG1 &=~OFIFG;
_delay_cycles (50);
} while ((UCSCTL7 & XT1LFOFFG)&&--计数);
}
尊敬的 Peter:
如果您希望格外小心、可以输入晶体最大时间、如果晶体未列出任何启动 时间、则可以根据 ESR 和负载电容作为基准时进行计算、但您可能必须对启动时间进行实验才能找到适合系统的方法。
我们也有一个晶体振荡器文档、我建议阅读- MSP430晶体振荡器
此致、
Luke