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

news2025/4/6 2:55:19

【关于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.coloradmin.cn/o/110184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第二证券|两大板块掀涨停潮,有个股猛拉20cm!这只港股复牌一度暴跌

A股商场周五上午窄幅震动&#xff0c;上证指数微涨0.09点&#xff0c;核算机等板块领涨。 新股体现持续分解&#xff0c;4只今日上市的新股中&#xff0c;两只科创板新股上涨&#xff0c;两只北交所新股则破发。 港股全体小幅调整&#xff0c;全体动摇不算大&#xff0c;但仍…

【推荐】智慧农业解决方案资料合集30篇

智慧农业 是农业中的智慧经济&#xff0c;智慧经济形态在农业中的具体表现。智慧农业是智慧经济重要的组成部分&#xff1b;对于发展中国家而言&#xff0c;智慧农业是智慧经济主要的组成部分&#xff0c;是发展中国家消除贫困、实现后发优势、经济发展后来居上、实现赶超战略的…

16含风光水的虚拟电厂与配电公司协调调度模型(场景削减MATLAB程序)

参考文献 含风光水的虚拟电厂与配电公司协调调度模型——董文略&#xff08;复现场景削减部分&#xff09; 主要内容 代码主要做的是风电、光伏以及电价场景不确定性模拟&#xff0c;首先由一组确定性的方案&#xff0c;生成50种光伏场景&#xff0c;为了避免大规模光伏场景…

小结 | 支持向量机 (SVM)

一.基本原理 SVM是一种二分类模型 基本思想&#xff1a;在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类&#xff0c;具体来讲&#xff0c;有三种情况&#xff08;不加核函数的话就是线性模型&#xff0c;加了之后才会升级为一个非线性模型&#xff09; 当训练…

MybatisPlus详解 | DQLDML快速开发... | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘MybatisPlus&#xff0c;顺便上传笔记。。。 下图是我总结的 MP 知识的初级思维导图&#xff0c;后续会不断补充 文章目录1 MyBatisPlus入门案例与简介1.1 入门案例回顾SpringBoot整合Mybatis的开发过程:步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤…

二苯并环辛炔-聚乙二醇-生物素DBCO-PEG-Biotin简介 DBCO-PEG-Biotin衍生物可以在没有金属催化剂(铜离子)作用下发生点击化学反应

中文名&#xff1a;二苯并环辛炔-聚乙二醇-生物素&#xff0c;生物素-聚乙二醇环辛炔 英文名&#xff1a;DBCO-PEG-Biotin&#xff0c;Biotin-PEG-DBCO 溶剂&#xff1a;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等&#xff0c;在水中有很好的溶解性…

变分自编码器VAE的数学原理

变分自编码器(VAE)是一种应用广泛的无监督学习方法&#xff0c;它的应用包括图像生成、表示学习和降维等。虽然在网络架构上经常与Auto-Encoder联系在一起&#xff0c;但VAE的理论基础和数学公式是截然不同的。本文将讨论是什么让VAE如此不同&#xff0c;并解释VAE如何连接“变…

【JVS低代码】一分钟学会如何快速创建应用

应用中心功能介绍 在JVS角色中有“应用管理员”的角色&#xff0c;如果赋予该角色&#xff0c;则用户为应用管理员&#xff0c;应用管理员有进入应用配置中心的权限。 创建空白应用&#xff1a; 从模板创建应用&#xff1a; 应用中心入口 具备应用管理员权限的用户&#xff…

嵌入式软件开发为什么需要DevOps?

DevOps提出至今已逾十年&#xff0c;作为热门概念&#xff0c;DevOps近年来频频出现于各大技术社区和媒体文章中&#xff0c;备受行业大咖追捧。作为新一代持续集成/持续开发&#xff08;CI/CD&#xff09;的方法论&#xff0c;DevOps正被快速引入嵌入式软件开发领域中。 为什…

【C++】类和对象(C++门槛)

唯有奋力奔跑&#xff0c;才能方得始终。 文章目录一、struct > class(类 方法/成员函数 属性/成员变量)1.自定义类型 struct 和 class 的区别2.类放在内存中的什么存储区&#xff1f;3.类中函数的两种定义方式3.1 声明和定义分离&#xff08;增强代码可读性&#xff0c;…

docker 搭建 Nuget 服务器,CentOS,宝塔面板

docker 搭建 Nuget 服务器&#xff0c;CentOS,宝塔面板创建容器挂载目录给目录指定写入权限创建并运行 Nuget 服务创建Nuget包项目属性修改包版本号预生成事件执行重新生成手动上传vs菜单命令上传 记得上传在前修改版本号添加外部工具添加自定义命令项目文件夹下面新建 push.cm…

stable diffuison论文阅读

论文链接&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models 文章目录摘要引言普及高分辨率图像合成向潜空间出发相关工作图像合成的生成模型两阶段法图像合成方法感知图像压缩隐空间扩散模型扩散模型隐空间表征的生成模型条件机制实验感知压缩权衡基于…

【发表案例】计算机科学类SCI,仅1个月零6天录用,涵盖软件、信息、数据云计算、网络、建模等研究方向

【期刊简介】IF:0.5-1.0&#xff0c;JCR4区&#xff0c;中科院4区 【版面情况】SCI 在检&#xff0c;正刊 【征稿领域】计算机科学和控制系统相关问题的广泛领域&#xff0c;包括&#xff1a;软硬件工程&#xff1b;管理系统工程&#xff1b;信息系统和数据库&#xff1b;嵌入…

GPS(rinex格式)数据解析详细解读

RINEX格式现如今已成为GPS测量应用中的标准数据格式&#xff0c;目前应用最为广泛、最普遍的是RINEX格式的第2个版本&#xff0c;该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据。在该版本中定义了6种不同类型的数据文件&#xff0c;分别用于存放不同类型的数据&a…

【经典设计】构建业务架构的3大视图

​ 在软件设计过程中&#xff0c;架构设计、功能设计和数据设计是三个不同层次的设计工作。而业务架构是系统整体规划中重要的基础工作&#xff0c;通常用业务架构图来表达业务架构。 业务架构定义了企业的治理结构、业务能力、业务流程、业务数据。业务能力说明企业做什么&a…

I/O指令和I/O地址译码

目录 掌握 I/O指令和I/O地址译码 独立编址&#xff08;标准的I/O寻址方式&#xff09; 8086/8088采用 特点 统一编址&#xff08;存储器映像I/O寻址方式又称存储器对应I/O寻址方式&#xff09; 特点 优点 缺点 输入输出指令 输入指令 输出指令 I/O接口的端口地址译…

rtt 线程管理

1.线程管理的定义 在日常生活中&#xff0c;我们要完成一个大任务&#xff0c;一般会将它分解成多个简单、容易解决的小问题&#xff0c;小问题逐个被解决&#xff0c;大问题也就随之解决了。在多线程操作系统中&#xff0c;也同样需要开发人员把一个复杂的应用分解成多个小的、…

第二证券|这个板块全线上涨,机构看好板块估值修复空间!

本周部分个股获杠杆资金逆市买入&#xff0c;医药生物股最受资金喜爱。 职业教育股早盘领涨两市 12月23日早盘&#xff0c;职业教育板块强势走高&#xff0c;概念指数上涨3.89%。其间全通教育20cm涨停&#xff0c;凯文教育、陕西金叶10%涨停&#xff0c;世纪鼎利、天舟文化早盘…

web前端-javascript-初识 RegExp 正则表达式(说明,创建的语法,正则的test方法,邮箱正则)

初识 RegExp 正则表达式 1. 说明 正则表达式用于定义一些字符串的规则计算机可以根据正则表达式&#xff0c;来检查一个字符串是否符合规则 或者将字符串中更符合规则为的内容提取出来 2. 创建正则语法 var 变量 new RegExp(“正则表达式”,“匹配模式”);使用typeof检查…

LeetCode 93 双周赛

2496. 数组中字符串的最大值 一个由字母和数字组成的字符串的 值 定义如下&#xff1a; 如果字符串 只 包含数字&#xff0c;那么值为该字符串在 10 进制下的所表示的数字。否则&#xff0c;值为字符串的 长度 。 给你一个字符串数组 strs &#xff0c;每个字符串都只由字母…