ATMEGA328PB printing all binary zeros upon reset

I have a board with FTDI and 328PB. Worked fine for a few days. Got bootloader on it and programmed it several times and tested its Serial1 communication with a GPS module using this board variant:

Today it stopped working. First it was still able to upload code but Serial1 stopped receiving correctly. I have a GPS module on this serial port. Logic analyzer says everything is fine coming from the GPS.

Later the main serial port stopped working so I can't upload code anymore. Upon opening serial port, a bunch of binary zeros print out before it freezes. I'm using a serial port program to monitor the comm and these are binary zeros, not ASCII '0'. I checked the soldering on the 328PB and FTDI. Both look fine and I also added a bit extra solder with flux paste to make sure there's no weak junctions.

I've seen this symptom of all zeros before but don't remember what caused it. I wonder if FTDI fried, 328PB fried, or a bit of both. The board is simple, a proven design I've used for quite some years with minimal addition ( a GPS header):

Maybe ESD destroyed it? It's winter here and ESD is an issue. I'm gonna do some rework on this board so I'd like some opinion which chip, FTDI or 328PB to replace first :slight_smile: Wearing ESD wristband from now on.

Thanks.

I removed the GPS module from the board and soldered it on a second board. The second board worked before, when I powered both first and second boards with USB and connected GPS TX to second board via a jumper wire. But as soon as I solder the module on the second board, it stops receiving on its Serial1 port. Sending via Serial1 port works fine, I can change GPS update rate between 1Hz and 5Hz. But RX1 seems to get nothing. If I connect RX1 to an FTDI adapter. The adapter gets all the GPS NMEA sentences. I'm confused. Why was it working when I only connected the GPS to it via jumper wire but after soldering it stopped working?

Seems like the component pins, in the image, are a bit overloaded with solder.

.

FTDI? ATMEGA? They all have proper amount of solder. There is no short circuit.

It was the 328 that looked overloaded, but your there in person.

.

Shiny solder with dark solder mask, it is a good looking board, I hope you can figure out what is damaged. I have a project that could use the second I2C on the 328pb. I kept hoping it would find its way onto the Ubuntu and Raspibin toolchains, but I'm losing hope.

Yes, I found the cause. It was EMI from the GPS sensor. I posted another thread specifically about garbled serial printout and got some help/hints:

http://forum.arduino.cc/index.php?topic=465110.0

After testing, I concluded it was EMI. I didn't know how GPS works now I do.