P10点矩阵导致NodeMcuEsp8266崩溃

问题描述

我正在尝试从本地服务器获取数据并将其打印在P10点矩阵Led上。 首先,我尝试从服务器和程序代码获取数据,效果很好。 然后,我尝试另一个程序,并将任何纹理成功写入P10。 之后,我尝试合并程序并运行脚本。 这是代码

/**
   BasicHTTPClient.ino

    Created on: 24.05.2015

*/

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

//P10 Kutuphanesi
#include <SPI.h>
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
//P10 Kutuphanesi
//P10 Tanimlamalari

#define ESP8266

#define pin_A 16
#define pin_B 12
#define pin_sclk 0
#define pin_noe 15
#define panel_width 1
#define panel_heigh 1

SPIDMD dmd(panel_width,panel_heigh,pin_noe,pin_A,pin_B,pin_sclk);  // DMD controls the entire display
//P10 Tanimlamalari
ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();


  Serial.printf("Connecting");
  Serial.flush();
  delay(4000);


  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("XXX","XXX");


  
//P10 Setup
  dmd.beginNoTimer();
  dmd.setBrightness(255);
  dmd.selectFont(SystemFont5x7);

  dmd.begin();
//P10 Setup
}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    WiFiClient client;

    HTTPClient http;

    Serial.print("[HTTP] begin...\n");
    if (http.begin(client,"http://XX.XX.XX.XX/XXX")) {  // HTTP


      Serial.print("[HTTP] GET...\n");
      // start connection and send HTTP header
      int httpCode = http.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTP] GET... code: %d\n",httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = http.getString();
          Serial.println(payload);
          //P10 Ekrana Yansitma
          DMD_TextBox Box(dmd,2,4,32,16);
          Box.print(payload); //print the led pannel
          //P10 Ekrana Yansitma

          
        }
      } else {
        Serial.printf("[HTTP] GET... Failed,error: %s\n",http.errorToString(httpCode).c_str());
      }

      http.end();
    } else {
      Serial.printf("[HTTP} Unable to connect\n");
    }
  }

  delay(10000);
}

运行代码后,程序将运行并将数据成功写入P10 led矩阵10-20秒。但是几秒钟后,它崩溃了。 这是crach代码和异常解码器代码

09:08:07.953 -> Exception (0):
09:08:07.953 -> epc1=0x40204fe0 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
09:08:07.988 -> 
09:08:07.988 -> >>>stack>>>
09:08:07.988 -> 
09:08:07.988 -> ctx: cont
09:08:07.988 -> sp: 3ffff9d0 end: 3fffffc0 offset: 0190
09:08:07.988 -> 3ffffb60:  3fffc200 3ffee458 3ffee3f4 402049cd  
09:08:07.988 -> 3ffffb70:  3ffef254 3ffef264 3fffc248 4000050c  
09:08:07.988 -> 3ffffb80:  400043e6 00000030 00000016 ffffffff  
09:08:07.988 -> 3ffffb90:  400044ab 3fffc718 3ffffc80 08000000  
09:08:07.988 -> 3ffffba0:  60000200 08000000 08000000 00000000  
09:08:08.024 -> 3ffffbb0:  0000ffff 00042035 00002035 003fd000  
09:08:08.024 -> 3ffffbc0:  4023f9b0 0000049c 003fd000 00000030  
09:08:08.024 -> 3ffffbd0:  3ffee26e ff3fffff 00000000 fcffffff  
09:08:08.024 -> 3ffffbe0:  02000000 cfffffff 00000000 00000190  
09:08:08.024 -> 3ffffbf0:  7d28de69 40222b64 3fFeed24 00000030  
09:08:08.024 -> 3ffffc00:  feefeffe feefeffe feefeffe feefeffe  
09:08:08.024 -> 3ffffc10:  feefeffe feefeffe feefeffe feefeffe  
09:08:08.024 -> 3ffffc20:  feefeffe 80af1999 feefeffe feefeffe  
09:08:08.056 -> 3ffffc30:  ffffffd3 00000000 40240000 ffffff1a  
09:08:08.056 -> 3ffffc40:  4023b867 00000017 00000018 42d60000  
09:08:08.056 -> 3ffffc50:  00000d68 402382c2 00000001 00000001  
09:08:08.056 -> 3ffffc60:  00000000 4000444e 00000005 3ffffda0  
09:08:08.056 -> 3ffffc70:  00000002 40105c93 00000001 60000200  
09:08:08.056 -> 3ffffc80:  00000002 4000410f 00001001 00000005  
09:08:08.056 -> 3ffffc90:  3fffc718 40004a3c 000003fd 4023f9b0  
09:08:08.090 -> 3ffffca0:  3fffc718 40105f24 000003fd 401004bc  
09:08:08.090 -> 3ffffcb0:  402335e0 000003fd 00000001 402335c9  
09:08:08.090 -> 3ffffcc0:  3ffef954 402336b3 3ffef4b4 0000049c  
09:08:08.090 -> 3ffffcd0:  000003fd 3ffffda0 3ffef4b4 40233696  
09:08:08.090 -> 3ffffce0:  ffffff00 55aa55aa 00000d90 00000020  
09:08:08.090 -> 3ffffcf0:  00000020 000000fa 000000fa aa55aa55  
09:08:08.090 -> 3ffffd00:  000003ff 40233b96 3ffef4b4 3ffef4b4  
09:08:08.090 -> 3ffffd10:  00000001 3ffed5c4 00000001 00000001  
09:08:08.123 -> 3ffffd20:  40100e69 00000001 3ffef4c4 40233d94  
09:08:08.123 -> 3ffffd30:  3ffee080 3ffef4b4 00000001 3ffffda0  
09:08:08.123 -> 3ffffd40:  3ffffdc0 3ffef4eb 00000d90 00000020  
09:08:08.123 -> 3ffffd50:  3ffef574 3ffffe01 00000001 40233e66  
09:08:08.123 -> 3ffffd60:  3ffffda0 4023f610 3ffee410 3ffee4f4  
09:08:08.123 -> 3ffffd70:  3ffef8b4 3ffffdc0 3ffef4b4 40233e35  
09:08:08.123 -> 3ffffd80:  3ffef4b4 40233e9c 00000001 00000000  
09:08:08.157 -> 3ffffd90:  40201ecc 00000001 feefeffe 40201ea8  
09:08:08.157 -> 3ffffda0:  00000000 3ffe8616 3ffffe50 4020f1bc  
09:08:08.157 -> 3ffffdb0:  feefeffe feefeffe feefeffe feefeffe  
09:08:08.157 -> 3ffffdc0:  feefef00 0000000a fe3020fe feefeffe  
09:08:08.157 -> 3ffffdd0:  feefeffe feefeffe feefeffe feefeffe  
09:08:08.157 -> 3ffffde0:  402332b2 3ffee4b4 3ffee410 00000001  
09:08:08.157 -> 3ffffdf0:  40234497 feefeffe feefeffe feefeffe  
09:08:08.191 -> 3ffffe00:  3fFeed24 40201f34 3ffffe30 402048d0  
09:08:08.191 -> 3ffffe10:  000000fe 3ffee410 00000006 40201a65  
09:08:08.191 -> 3ffffe20:  3fffc200 3ffee458 3ffee3f4 402049cd  
09:08:08.191 -> 3ffffe30:  3ffef250 3ffef260 3ffef270 3ffef280  
09:08:08.191 -> 3ffffe40:  3ffee478 3ffe8304 00000000 40205001  
09:08:08.191 -> 3ffffe50:  3fffff0a 401001e8 00000020 40100204  
09:08:08.191 -> 3ffffe60:  3fffff00 0000003f 3fffc248 4000050c  
09:08:08.191 -> 3ffffe70:  3ffee3e8 00000030 00001388 ffffffff  
09:08:08.226 -> 3ffffe80:  40000fb0 00000040 00000521 3fffc200  
09:08:08.226 -> 3ffffe90:  00000561 ffffffff 00000020 3ffee4f4  
09:08:08.226 -> 3ffffea0:  3fffdad0 00000000 3ffee4b4 402011ae  
09:08:08.226 -> 3ffffeb0:  3ffee3f4 3ffee458 3ffee4f4 00000030  
09:08:08.226 -> 3ffffec0:  3fffff0a 00000008 3ffee478 4020c9e8  
09:08:08.226 -> 3ffffed0:  00000000 400042db 00000008 0000000a  
09:08:08.226 -> 3ffffee0:  000008b0 3ffef47c 0000049c 003fe000  
09:08:08.226 -> 3ffffef0:  000008a0 feefeffe feefeffe 3ffee4f4  
09:08:08.259 -> 3fffff00:  000008c0 40201be7 00000020 40100b3c  
09:08:08.259 -> 3fffff10:  3ffe861d 4020b87c 00000020 3ffee4f4  
09:08:08.259 -> 3fffff20:  3ffee588 3ffee3f4 00000020 40100b3c  
09:08:08.259 -> 3fffff30:  3ffee450 00000001 0000000f 4010041d  
09:08:08.259 -> 3fffff40:  3fffdad0 3ffee3f4 00000000 40100b85  
09:08:08.259 -> 3fffff50:  3ffef24c 3ffef25c 3ffef26c 3ffef27c  
09:08:08.259 -> 3fffff60:  3fffdad0 3ffee3f4 3ffee3f4 40204950  
09:08:08.292 -> 3fffff70:  401002ed 3ffee3f4 3ffee450 3ffee4f4  
09:08:08.292 -> 3fffff80:  3ffee458 3ffee3f4 3ffee454 402050d0  
09:08:08.292 -> 3fffff90:  3fffdad0 00000000 3ffee3f4 3ffee4f4  
09:08:08.292 -> 3fffffa0:  3fffdad0 00000000 3ffee4b4 40206e28  
09:08:08.292 -> 3fffffb0:  feefeffe feefeffe 3ffe84e8 40100dc1  
09:22:47.342 -> <<<stack<<<
09:22:47.342 -> 
09:22:47.342 -> --------------- CUT HERE FOR EXCEPTION DECODER ---------------
09:22:47.342 -> 
09:22:47.342 ->  ets Jan  8 2013,rst cause:2,boot mode:(3,6)
09:22:47.342 -> 
09:22:47.342 -> load 0x4010f000,len 3584,room 16 
09:22:47.342 -> tail 0
09:22:47.342 -> chksum 0xb0
09:22:47.342 -> csum 0xb0
09:22:47.342 -> v2843a5ac
09:22:47.376 -> ~ld




Exception 0: Illegal instruction
PC: 0x40204fe0: _Unwind_Find_FDE at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 1061
EXCVADDR: 0x00000000

Decoding stack results
0x402049cd: search_object at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 750
0x40100e69: timer1Interrupt() at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_waveform.cpp line 310
0x40201ecc: DMDFrame::DMDFrame(unsigned char,unsigned char) at C:\Users\ab107016\Documents\Arduino\libraries\DMD2\DMDFrame.cpp line 34
0x40201ea8: DMDFrame::DMDFrame(unsigned char,unsigned char) at C:\Users\ab107016\Documents\Arduino\libraries\DMD2\DMDFrame.cpp line 28
0x4020f1bc: tcp_output at core/tcp_out.c line 1378
0x40201f34: DMDFrame::setPixel(unsigned int,unsigned int,DMDGraphicsMode) at C:\Users\ab107016\Documents\Arduino\libraries\DMD2\DMDFrame.cpp line 75
0x402048d0: add_fdes at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 699
0x40201a65: DMDFrame::drawChar(int,int,char,DMDGraphicsMode,unsigned char const*) at C:\Users\ab107016\Documents\Arduino\libraries\DMD2\DMD2_Text.cpp line 78
0x402049cd: search_object at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 750
0x40205001: _Unwind_Find_FDE at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 1059
0x401001e8: timer0_isr_handler(void*) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_timer.cpp line 84
0x40100204: timer0_isr_handler(void*) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_timer.cpp line 89
0x402011ae: SPIClass::setHwCs(bool) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\SPI\SPI.cpp line 124
0x4020c9e8: tcp_receive at core/tcp_in.c line 1859
0x40201be7: DMD_TextBox::clear() at C:\Users\ab107016\Documents\Arduino\libraries\DMD2\DMD2_TextBox.cpp line 126
0x40100b3c: realloc(void*,size_t) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 840
0x4020b87c: dns_recv at core/dns.c line 1293
0x40100b3c: realloc(void*,size_t) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 840
0x4010041d: __digitalWrite(uint8_t,uint8_t) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_wiring_digital.cpp line 88
0x40100b85: realloc(void*,size_t) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\umm_malloc\umm_malloc.cpp line 894
0x40204950: add_fdes at /workdir/repo/gcc/libgcc/unwind-dw2-fde.c line 721
0x401002ed: timer0_attachInterrupt(timercallback) at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_timer.cpp line 100
0x402050d0: __cvt at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_float.c line 111
0x40206e28: _strtod_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdlib/strtod.c line 1121
0x40100dc1: timer1Interrupt() at C:\Users\ab107016\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\cores\esp8266\core_esp8266_waveform.cpp line 267

我意识到,当我删除dmd.begin();时,程序不会崩溃,但不会写入led矩阵。 有人可以帮助我吗?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)