microcontroller - MSP430 停止响应高频查询
问题描述
我一直致力于将板载 ADC 与我在 MSP-EXP430FR2433 上的现有项目集成。为此,我使用了 WDT 间隔定时器,每次 WDT ISR 触发时都向 ADC 查询新数据(使用 ADCCTL0 |= ADCENC | ADCSC;)。在低频(WDT 间隔定时器)下,这种设计在大多数情况下都能正常工作,ADC ISR 会用数据响应查询。但是,当我增加 WDT 间隔定时器的频率时,ADC ISR 完全停止响应我的查询。我最近的想法是查询中必须存在某种保持时间违规,但在上下文中我不确定这是否有任何意义。我也在考虑这样一个事实,即我没有正确配置 ADC 以按照我想要的方式工作。为此,我在下面放弃了我的 ADC 配置。
SYSCFG2 |= ADCPCTL1;
ADCCTL0 |= ADCON;
ADCCTL1 |= ADCSHP | ADCSSEL1 | ADCSSEL0;
ADCCTL2 |= ADCRES;
ADCMCTL0 |= ADCINCH_1;
ADCIE |= ADCIE0;
解决方案
尝试用简单的软件延迟程序临时替换 WDT 间隔计时器。确保在程序开始时完全禁用 WDT。建议使用编译器内部函数__delay_cycles(1000)进行延迟。这将消除中断优先级或错误 WDT 配置的可能性。如果可行,则开始减少延迟量,直到您达到所需的速率。如果您达到所需的速率(您想要的最快 ADC 采样),那么 ADC 就不是问题。然后,您可能想用真正的硬件定时器替换 WDT 间隔定时器,或者只是忍受 __delay_cycles() 软件延迟。
推荐阅读
- python-3.x - 在 Python 函数中调用字符串时出现“TypeError: must be str, not NoneType”错误
- javascript - 为 sveltekit 注册套接字 IO 到 vite
- apache-spark - GroupBy 和 Sum,如果大于零标记行 True
- google-apps-script - 使用代码/脚本的里程计算看起来不是 4 个单元格,只有 2 个。需要帮助
- r - R中的userTimeline没有返回所需数量的推文并给出错误
- r - R Shiny One actionButton 用于多个输出
- python - 如何使用 Faker 生成指定长度的数据
- networking - 为特定应用/网站设置 WiFi 白名单
- python - OpenCV 与 Pytorch 作物转换冲突
- maven - Maven无法确定父maven文件中定义的版本spring cloud netflix zuul