non blocking LoRa receiver fails after ten thousand iterations



  • from network import LoRa
    import socket
    
    lora = LoRa(mode=LoRa.LORA)
    s = socket.socket(socket.AF_LORA, socket.SOCK_RAW)
    
    s.setblocking(False)
    
    print('start program')
    
    while True:
        c = s.recv(1)
    

    this result into

    Task watchdog got triggered. The following tasks did not feed the watchdog in time:
    Tasks currently running:
    CPU 0: MicroPy
    Aborting.
    Guru Meditation Error: Core 0 panic'ed (Unhandled debug exception)
    Register dump:
    PC : 4000bff0 PS : 00060036 A0 : 80084de8 A1 : 3ffd51f0
    A2 : 0000000a A3 : 0000000a A4 : 00000004 A5 : 00000000
    A6 : 00000000 A7 : fffffff8 A8 : 00000000 A9 : 3ffd5160
    A10 : 00000000 A11 : 3ffdd7b3 A12 : 3ffd512f A13 : 00000030
    A14 : 00000000 A15 : 00060d23 SAR : 0000001d EXCCAUSE: 00000001
    EXCVADDR: 00000000 LBEG : 4000c46c LEND : 4000c477 LCOUNT : 00000000
    CPU halted.



  • Hi @Baruch1966,

    This was a known issue with the Watchdog Timer in the Wipy 2.0 and LoPy. Please download the latest firmare version and try your code again.

    Best,
    Roberto



  • Firmware 0.9.3.b2 had an issue where it wouldn't feed the watchdog, leading to crashes for anything that kept the Python core busy (for about 4 seconds), including large file transfers and tight loops. You could work around it by calling time.sleep_ms(1) but that would naturally cause a delay. This issue seems resolved in release 0.9.4.b1.


Log in to reply
 

Pycom on Twitter