Az az ötletem támadt, hogy ki kéne deríteni mi okozza a resetet. Erre tökétesen alkalmas a MCUCSR regiszter.
A HW inicializálás legelejére illesztd be ezt a kódot:
uint8_t mcucsr_status = 0x00;
mcucsr_status = MCUCSR;
MCUCSR = 0x00;
Ezttán a program futása közben, ahol jónak látod kiirathatod a regiszter tartalmát egy porton, vagy UART-on keresztül.
Ennek a regisztenek a leírását megtalálod a datasheet-ben és rögtön látod mi okozta a resetet.