Can't Program Arduino on Custom PCB

Hi, I made a circuit board for my project but when I have the mega 2560 mounted on it I can't program it. The light on the arduino flashes and then the IDE says timeout. When I remove the arduino it programs no problem. Something is tying it up but I have no idea what. I attached some images of the schematic, hoping someone can spot something. Thanks

I haven't look at the circuit but, your board may have unetched micro tracks between traces/pads.

You need to program an ATmega2560 using ICSP, the chips don't come with bootloaders on them.

Look up ArduinoISP

There are a lot of traces on this board. I'm not using the actual mega IC, the already assembled mega 2560 board plugs into my board. When I plug the USB into the mega while its mounted I can't open the serial window. It's like I'm using the Tx and Rx pins but I'm not. I'm using Tx1/Rx1 and Tx2/Rx2.

Use an ohm meter, check for zero resistance between pins/GND.

Ok, which pins, all pins from the arduino?

Start with RX/TX, shouldn't take more than ten minutes especially if you have a beeper on your DVM. Make sure power is disconnected.

They seem to be ok. Definitely no beeps and when I leave it on the data I get .714 on basically any pin with the other probe going to ground. I checked with it off the board and I have the exact same readings.

Make sure the power supply isn't being pulled down.


Its definitely not power supply related. I have a wire going to pin 49 from the reset, could that have anything to do with it?

Yes, cut the trace to see what happens. Solder the cut trace after testing this out.

never thought of that lol.

It works!!! Thank-you for your help. Any idea why that happens? Right now I had that going straight to pin 49 no resistors in between.

In the setup() function I have this.

  digitalWrite(resetPin, HIGH);  // reset pin is 49
  pinMode(resetPin, OUTPUT);

Reset is used when programming. Your design was interfering with the reset circuitry.


Ok, makes sense why it couldn't program if it couldn't reset it.

So what's the proper way of adding a reset circuit? When I added this I read that this was a good method but yeah obviously not.

What I'm trying to accomplish is when I press a button on the display the arduino does a complete reset. The method I used worked good but it can't tie up the programming process of the arduino.

Why do you need to reset the controller? If I ever have to reset the controller I do it with a manual switch. You could do it with a hardware one shot circuit but, I do not see why this would be necessary. Controller reset using an I/O pin is not recommended.


Well I'm making a 3 arduino aquarium controller, 2 mega 2560's and 1 Due. I'm using the same I/O setup on my Due board for resetting it. I need that reset for after a user changes the time on the RTC. For it to take effect it had to be restarted. With the Due its not as bad but still a problem. When I go to program it the first attempt only erases the memory and the IDE says COM not found. Then I press reset on the board which is easy to get to and upload again and it works. After the first attempt the Due is empty. I tried a software reset on the Due for the RTC but nothing would work. I didn't realize until now the problem on the Due is also because I have the reset pin going to I/O.

On the mega I want it to reset via a GUI button in case something goes wrong with it. But I can probably get a way with a soft reset. The Due is my main problem, I'm not sure what to do because nothing else worked for the RTC.