当前位置: 首页 > news >正文

【关于eps8266自动重启 Soft WDT reset】

【关于eps8266自动重启 Soft WDT reset】

  • 1. 前言
  • 2. 分析问题
    • 2.1 长时间没有喂狗
    • 2.2 delayMicroseconds 函数触发
  • 3. 解决问题
    • 3.1 解决长时间没有喂狗
    • 3.2 解决`delayMicroseconds` 函数触发
  • 5. 小结

在这里插入图片描述

1. 前言

最近使用esp8266进行远程遥控时, 但是在驱动舵机servo库的过程中出现了esp8266 自动重启问题, 具体表现为串口助手不断输出错误信息,如下。
在这里插入图片描述

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Soft WDT reset

>>>stack>>>

ctx: cont
sp: 3ffffce0 end: 3fffffc0 offset: 01a0
3ffffe80:  00000002 40105a43 00000001 60000200 
3ffffe90:  00000002 4000410f 00001001 00000205 
3ffffea0:  3fffc718 40004a3c 000003fb 00000001 

在这里插入图片描述

2. 分析问题

2.1 长时间没有喂狗

显然是由于长时间没有喂狗导致的看门狗复位, 原因是在loop函数中长时间执行函数,没有延时函数delay

在这里插入图片描述

2.2 delayMicroseconds 函数触发

注意的是 delay 函数和 delayMicroseconds 函数之间的区别, 长时间执行 delay 函数不会出现复位, 但是长时间执行 delayMicroseconds 函数则会导致复位

delayMicroseconds(1000);
servo.write(90);//舵机驱动自带delayMicroseconds操作

由于远程控制中含有Ticker定时器与`delayMicroseconds``冲突

Ticker是ESP32 arduino的自带库,可以设置以固定时间间隔反复执行某个任务,特别适合以固定频率从传感器收集数据。
官方解释:Arduino Ticker 库允许您轻松创建 Ticker 回调,这些回调可以在预定的时间间隔内调用函数。您可以更改回调的重复次数,如果重复为 0,则代码以无限模式运行。工作方式类似于“线程”,必要时将运行辅助函数。该库不使用硬件计时器的中断,并使用micros() / millis()函数。您(实际上)不受股票代码数量的限制。

3. 解决问题

3.1 解决长时间没有喂狗

所以添加了喂狗函数或者delay函数,如下

ESP.wdtFeed();
delay(100);//延时100ms

3.2 解决delayMicroseconds 函数触发

解决delayMicroseconds 函数问题关键在于替代方法,delay 函数内部有喂狗机制, 而 delayMicroseconds 没有这个机制,自己写一个servo驱动函数,具体可见Arduino与SG90舵机握手

在这里插入图片描述

/*

int servopin 是端口号
int myangle  目标位置0~180度,此函数不精确,只有4分度-90 -45 45 90
int loops    循环次数,响应时间
*/
void servopulse(int servopin, int myangle, int loops) /*定义一个脉冲函数,用来模拟方式产生PWM值*/
{
  for (int i = 0; i <= loops; i++)  //给予舵机足够的时间让它转到指定角度
  {
    int pulsewidth = (myangle * 11) + 500;  //将角度转化为500-2480 的脉宽值
    digitalWrite(servopin, HIGH);           //将舵机接口电平置高
    delay(pulsewidth / 1000);               //延时脉宽值的微秒数
    digitalWrite(servopin, LOW);            //将舵机接口电平置低
    delay(20 - pulsewidth / 1000);          //延时周期内剩余时间
  }
  delay(1);
}

5. 小结

🥳🥳🥳通过对这篇文章我们掌握了关于eps8266自动重启 Soft WDT reset问题解决,接下来会有许多有趣的实验,尝试与Arduino通讯做语音小车,进而丰富我们的生活。🛹🛹🛹从而实现对外部世界进行感知,充分认识这个有机与无机的环境,🥳🥳🥳科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣

参考文献:

eps8266自动重启问题, Soft WDT reset (已解决)
Arduino:关于解决 pluseIn与官方舵机库冲突的办法
ESP32 Arduino Ticker定时库

相关文章:

  • python 2024-9
  • Python 入门指南:如何在 MacOS 上轻松安装 Python
  • Windows和Mac命令窗快速打开文件夹
  • 停车位检测-停车场车位识别
  • Prompt - 将图片的表格转换成Markdown
  • erlang学习: Mnesia Erlang数据库
  • 解释区块链技术的应用场景和优势
  • 【C++私房菜】序列式容器的迭代器失效问题
  • 预测淡水质量
  • 考研复试中的面试技巧
  • 计算机网络:路由协议
  • 【GPTs分享】GPTs分享之Write For Me
  • QEMU环境搭建
  • SetWindowLongPtr之GWLP_USERDATA
  • 华为OD机试真题 Python 实现【去除多余空格】【2022.11 Q4 新题】
  • LeetCode 8. 字符串转换整数 (atoi)(C++)
  • 作为程序员的你,常用的软件有哪些?
  • 当谈论 React hook,我们究竟说的是什么?
  • RocketMQ疑难杂症之No route info of this topic解决方案
  • 国产CAE的涅槃-岩土行业高性能离散元软件MatDEM
  • 我国登山鞋行业参与者越发广泛带来广阔潜在需求 女性市场值得期待
  • Go语言 Gin处理响应
  • 消除视觉Transformer与卷积神经网络在小数据集上的差距
  • SpringBoot Disruptor框架遇到的问题
  • 思维方式之概率思维
  • 小结 | 逻辑回归
  • 第二证券|两大板块掀涨停潮,有个股猛拉20cm!这只港股复牌一度暴跌
  • 【我亲身经历的2022年软件质量工作】
  • [leetcode 315] 计算右侧小于当前元素的个数
  • ESP32中micro-ROS与ROS2通信(点亮esp32指示灯)
  • Shell ❀ 条件测试语句
  • Transforming the Latent Space of StyleGAN for Real Face Editing翻译