完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我无法弄清楚为什么我的草图会以随机间隔不断崩溃
我已经做了一个 CrashDecode,但不幸的是,这对我的技能水平没有太大帮助。 基本上我得到这个例外: 代码:全选Exception (0): epc1=0x4000e25d epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 >>>stack>>> ctx: cont sp: 3ffefac0 end: 3ffefe50 offset: 0190 3ffefc50: ffffffff 3ffeecbc 3ffeecb8 40100ece 3ffefc60: 3ffe9934 7fffffff 00000000 00000020 3ffefc70: ffffffff 0000000f 00000000 40100404 3ffefc80: c003b025 00000000 0000001f 40100168 3ffefc90: 00000005 00000000 00000020 00000022 3ffefca0: 3fffc200 40100340 3fffc258 4000050c 3ffefcb0: 4000067d 00000030 00000010 ffffffff 3ffefcc0: 00000000 f3b9abe0 38d79cc3 00000000 3ffefcd0: 00004bc6 f3b9abe0 00000000 fffffffe 3ffefce0: 0000be93 3fffc6fc 8f2dabe0 4bc6a7f0 3ffefcf0: 00000000 c008da42 00000000 00000030 3ffefd00: 402011c8 14c975f8 60000304 00000005 3ffefd10: 00004bc6 00000000 00000000 fffffffe 3ffefd20: 00000000 3fffc6fc 00000000 3ffee990 3ffefd30: 00000000 3fffdad0 3ffee9d0 00000030 3ffefd40: 40102838 3fffc200 00000022 00000000 3ffefd50: 4023447a 00000030 0000001b ffffffff 3ffefd60: 40201050 3ffeee30 402011d8 00000000 3ffefd70: 00000000 00000000 00000000 fffffffe 3ffefd80: ffffffff 3fffc6fc 00000001 3ffe85bc 3ffefd90: 00000000 3fffdad0 3ffee9d0 00000030 3ffefda0: c008da42 4bc6a7f0 c008da42 00000000 3ffefdb0: c008da42 00000000 4bc6a7f0 00000000 3ffefdc0: 00000000 00000001 401001e4 4bc6a7f0 3ffefdd0: 00000000 00000000 3ffeebc4 40206a05 3ffefde0: 38d79cc2 00000000 00001388 411f1e8d 3ffefdf0: 00000000 00000000 00000000 3ffe84f0 3ffefe00: 3fffdad0 00000000 3ffe84f0 40206b5a 3ffefe10: 00000000 00000000 00000001 40100168 3ffefe20: 3fffdad0 00000000 3ffee990 3ffee9d0 3ffefe30: 3fffdad0 00000000 3ffee990 402011f8 3ffefe40: feefeffe feefeffe 3ffe85bc 40100515 << 3000 || powertmp < 2 ) { return; } power = powertmp; //Find kwh elapsed elapsedkWh = (1.0 * pulseCount/(ppwh * 1000)); //multiply by 1000 to convert pulses per wh to kwh } 这是完整的循环代码:第 422 行标记为第二个 DHT 块开始的位置 代码:全选void loop(void){ httpServer.handleClient(); if( millis() >= rebootInterval ) { ESP.restart(); } // read front DHT if ( millis() > front.timer ) { //Serial.print("DHT front ... "); //// Read sensor float tmpTemp = dhtfront.readTemperature(); float tmpHumidity = dhtfront.readHumidity(); // Check if any reads failed and exit early (to try again). if (isnan(tmpHumidity) or isnan(tmpTemp)) { //Serial.println("Failed to read front sensor!"); front.timer = millis() + dhtDelayFail; // if sensor reading failed try again after FAILFREQUENCY } else { //Serial.println("OK"); front.temp = tmpTemp; front.humidity = tmpHumidity; front.timer = millis() + dhtDelayRead; // Compute heat index and dewpoint front.dew = dewPoint(front.temp, front.humidity); front.hi = dhtfront.computeHeatIndex(front.temp, front.humidity, false); printDhtSerial(front); //// printing it all on the Serial if we actually got values } } // read door DHT if ( millis() > door.timer ) { // <<<< line 422 in sketch that is being complained about in the decode //Serial.print("DHT door ... "); //// Read sensor float tmpTemp = dhtdoor.readTemperature(); float tmpHumidity = dhtdoor.readHumidity(); // Check if any reads failed and exit early (to try again). if (isnan(tmpHumidity) or isnan(tmpTemp)) { //Serial.println("Failed to read door sensor!"); door.timer = millis() + dhtDelayFail; // if sensor reading failed try again after FAILFREQUENCY } else { //Serial.println("OK"); door.temp = tmpTemp; door.humidity = tmpHumidity; door.timer = millis() + dhtDelayRead; // Compute heat index and dewpoint door.dew = dewPoint(door.temp, door.humidity); door.hi = dhtdoor.computeHeatIndex(door.temp, door.humidity, false); printDhtSerial(door); //// printing it all on the Serial if we actually got values } } if ((relay1.offDelay > 0) && ((millis() - relay1.lastSwitch) > relay1.offDelay)) { relay1.status = OFF; digitalWrite(relay1.pin, relay1.status); } } 但我什至不知道从哪里开始为什么这两个会导致崩溃, 在此先感谢。 草图有点长,但它似乎总是崩溃,因为相同的堆栈跟踪指向相同的 2 条有问题的行 很高兴分享整个草图,但如果这有帮助的话。 |
|
相关推荐
1个回答
|
|
这个例外表示芯片出现了问题,导致程序无法正常运行。可能的原因有很多,例如程序错误、内存泄漏、电路问题等等。以下是一些可能的解决方法:
1. 重新编写代码:如果程序存在错误,可能需要检查和调试代码。确保没有逻辑或语法错误,并且所有指针和数组都没有越界。另外,确保所有的库都是最新版本,并且与ESP8266版本兼容。 2. 增加堆栈空间:如果程序内存不足,可以通过增加堆栈空间来解决。可以尝试将堆栈大小设置为更大的值,以便更好地容纳变量和函数。 3. 更换ESP8266芯片:如果芯片本身损坏,可能需要更换ESP8266芯片。确保使用的芯片是最新版本,并且与其他硬件兼容。 4. 检查供电:确保芯片得到稳定的电源供应,而不是因为电压过高或过低而造成问题。同时,确保电源和地线连接稳固,不会在振动中松动。 5. 检查接线:如果使用外部电路或传感器,可能需要检查接线是否正确。确保每个引脚都正确连接,电路板上没有裸露的导电部分。 以上是一些可能的解决方法。如果仍然无法解决问题,请考虑向ESP8266开发者社区咨询或寻求专业帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
1019 浏览 1 评论
562浏览 6评论
469浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
454浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 15:59 , Processed in 0.714168 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号