De millis() timer kan resetten. Afhankelijk van de grootte van je variabele. Zoek op "millis() overflow".
Als je deze gebruikt om te timen is het dus belangrijk dat je daarop let.
Zorg dat er geen condities kunnen ontstaan dat de processor ergens op blijft wachten wat om (onbekende) redenen niet komt. Werk daar met timeouts en foutafhandeling. Verder kan je nog een watchdogtimer opnemen, die moet je ook juist gebruiken.
Ik weet niet waarom die module zou resetten, ik ken ze niet.
Als je je foutafhandeling bijvoorbeeld zo in elkaar steekt dat als iets misult je maximaal 3x retried, en daarna softwarematig je arduino reset, waarbij in de initialisatie van dee arduino ook al je peripherals meegenomen worden, kan het best goed functioneren.
Je wilt denk ik wel loggen dat je module reset. Want als dat te vaak gebeurd en je hebt het niet door is dat wel een bron van mogelijke fouten.
Maar het is natuurlijk afhankelijk van je applicatie of een dergelijke "recover" geoorloofd is.