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

news/2025/1/12 8:41:42/

【关于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定时库


http://www.ppmy.cn/news/6163.html

相关文章

XXE漏洞挖掘和防护

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是XXE漏洞挖掘和防护。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设…

【图神经网络】Pytorch图神经网络库——PyG创建消息传递网络

PyG创建消息传递网络消息传递基类&#xff1a;MessagePassingGCN层的实现实现Edge Convolution内容来源&#xff1a;将卷积算子推广到不规则域通常表示为邻域聚合或消息传递方案。在第(k−1)(k-1)(k−1)层中节点iii的节点特征用xi(k−1)∈RF\mathrm{x}_{i}^{(k-1)}\in \mathbb{…

300行HTML+CSS+JS代码实现动态圣诞树

文章目录1. 前言2. 效果展示3. 准备&#x1f351; 下载编译器&#x1f351; 下载插件4. 源码&#x1f351; HTML&#x1f351; JS&#x1f351; CSS5. 结语1. 前言 一年一度的圣诞节和考研即将来临&#xff0c;那么这篇文章将用到前端三大剑客 HTML CSS JS 来实现动态圣诞树…

前端(htmlCSSJavaScript)基础

关于前端更多知识请关注官网&#xff1a;w3school 在线教程全球最大的中文 Web 技术教程。https://www.w3school.com.cn/ 1.HTML HTML(HyperText Markup Language)&#xff1a;超文本标记语言 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息…

硬盘恢复工具软件哪个好?分享这些硬盘数据恢复工具软件

您刚刚删除了一些非常重要的文件&#xff01; 不要惊慌……您仍然有很大的机会可以以很少甚至免费的方式取回它们。 我们正在深入研究当今最好的硬盘恢复软件。 我们认为有一个明显的赢家&#xff0c;但我们提供了一些其他选项&#xff0c;以防您需要更高级的功能或使用不同…

c# winform 重启自己 简单实现

1.情景 有些时候&#xff0c;系统会出问题&#xff0c;问题原因很难排除&#xff0c;但是重启问题就能修正&#xff0c;这时候我们就需要在一个检测到问题的时机&#xff0c;让系统进行一次重启。 2.代码 using System; using System.Windows.Forms;namespace 程序重启自己 …

PHP 精度计算问题(精确算法)

1. PHP 中的精度计算问题 当使用 php 中的 -*/ 计算浮点数时, 可能会遇到一些计算结果错误的问题 这个其实是计算机底层二进制无法精确表示浮点数的一个 bug, 是跨域语言的, 比如 js 中的 舍入误差 所以大部分语言都提供了用于精准计算的类库或函数库, 比如 php 中的 bc 高精…

Kaggle手写识别-卷积神经网络Top6%-代码详解

目录 1. Introduction 简介 2. Data preparation 数据准备 2.1 Load data 加载数据 2.2 Check for null and missing values 检查空值和缺失值 2.3 Normalization 规范化 2.4 Reshape 重塑 2.5 Label encoding 标签编码 2.6 Split training and valdiation set 拆分训…