Wemos D1 - wifi plus MAX7219 64x16

Well with no code to look at it is a bit hard to tell what is happening.

The ESP8266 is much more complex than an UNO. The fact that you can use the Arduino IDE gives a false sense that it is easy. The ESP8266 has a lot of code running in the background to get a wireless connection, handle the TCP/IP stack, handle asynchronous browser requests, maintain network communication, etc. It shares the processor with the user code, but the housekeeping code must be run on a regular basis (every 10’s of milliseconds). This is done by sharing the processor with the user code. At the start of each loop() iteration control is given to the esp8266 code, it does necessary housekeeping then continues with the user code. Some other function calls also call the housekeeping code before returning to the user. For example delay() (this is why adding a delay() sometimes “fixes” a crash). There is a watchdog timer set that causes an exception if it times out. This timer is reset by the background code. If the background code is not called often enough it times out and the system crashes.

If your combined code takes too long without the housekeeping getting control you will get the exception you are seeing. If you need a long loop you should call yield() occasionally to give the background code an opportunity to run.