完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我的项目中有多个任务在运行,使用了I2C,WIFI,ADC,PWM等外设,但是偶尔会出现Guru Meditation Error: Core 0 panic'ed (Interrupt wdt timeout on CPU故障,通过dump分析,问题位置出现在ADC采集任务ADC采集接口调用的函数中,最终定位到如下位置,
void IRAM_ATTR regi2c_ctrl_write_reg_mask(uint8_t block, uint8_t host_id, uint8_t reg_add, uint8_t msb, uint8_t lsb, uint8_t data) { portENTER_CRITICAL_ISR(&mux); i2c_write_reg_mask_raw(block, host_id, reg_add, msb, lsb, data); portEXIT_CRITICAL_ISR(&mux); } 异常信息如附件。 |
|
相关推荐
1个回答
|
|
|
从您的描述来看,问题可能是由于中断服务程序(ISR)中的代码执行时间过长,导致中断看门狗超时。以下是一些建议和解决方案:
1. **优化代码**:检查中断服务程序中的代码,看看是否有可以优化的地方。例如,减少循环次数、使用更快的算法等。 2. **使用中断标志**:在中断服务程序中,可以使用中断标志来通知主程序处理任务,而不是在中断服务程序中直接处理。这样可以减少中断服务程序的执行时间。 3. **中断优先级**:检查中断优先级设置,确保高优先级的中断能够及时响应。如果可能,降低ADC采集任务的优先级,以减少对其他任务的影响。 4. **中断看门狗配置**:检查中断看门狗的配置,确保其超时时间足够长,以适应中断服务程序的执行时间。如果可能,增加中断看门狗的超时时间。 5. **避免在中断服务程序中使用I2C通信**:在中断服务程序中使用I2C通信可能会导致执行时间过长。尝试将I2C通信移至主程序中,以减少中断服务程序的执行时间。 6. **使用DMA**:如果可能,使用DMA(Direct Memory Access)来处理数据传输,以减少CPU的负担。 7. **检查硬件问题**:检查硬件连接和配置,确保没有硬件故障或配置错误。 8. **使用调试工具**:使用调试工具(如GDB或ESP-IDF的调试器)来分析程序的执行情况,找出可能的问题所在。 9. **更新固件和库**:确保使用的固件和库是最新版本,以避免已知的问题。 10. **寻求社区帮助**:如果问题仍然无法解决,可以在相关社区(如ESP32的论坛或GitHub仓库)寻求帮助,看看是否有其他人遇到过类似的问题。 通过以上方法,您可以尝试解决ADC采集任务中的中断看门狗超时问题。希望这些建议对您有所帮助。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
933 浏览 0 评论
1653 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1284 浏览 1 评论
1218 浏览 1 评论
4959 浏览 2 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1249浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
927浏览 3评论
2329浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2524浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1051浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:36 , Processed in 0.680514 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2787
