Program freezes after a while

Find a way to get some debugging output though - can you use other pins to softserial or SPI to another arduino to get something on the serial monitor or does your PCB design preclude this?