MCUSR - покажет причину сброса.
добавьте этот код или подобный себе в main:
Код
main()
{
unsigned char tmp = MCUSR; // store system reset source flags
MCUSR = 0x00; // clear the sys reset source
printf("MCUSR_%x\r\n", tmp);
}
Если в MCUSR будет 0 - тогда сброса не было и имеет место программный сбой (прыжек по адресу 0).