I just finished designing my attempt at an ATmega328P-A board, had some trouble understanding how to program the MCU. The manual of the MCU didn't specify really well how, or I just didn't find the section I was supposed to read. I finally settled on using a CH340G.

I was just wondering if anyone could verify if my schematic actually works or not. I am worried that when I print it I won't be able to program it through USB. I am not also sure about the condition of the reset pin while I am programming it. (Note: I am using 5 V from the USB to run the board.)

enter image description here

  • \$\begingroup\$ (Also i know the capacitors on the VCC are wrong , but i fixed them in the pcb design, i just forgor to change the schematic) \$\endgroup\$
    – dimpanas
    Commented Jan 25 at 18:56
  • 1
    \$\begingroup\$ Unfortunately, you need to have ISP programmer. For example USBasp or if you have Arduino uno board, you can use it as an ISP programmer as well. \$\endgroup\$
    – G36
    Commented Jan 25 at 19:23
  • \$\begingroup\$ @dimpanas If you don't give us the correct schematic, we can't give an answer if it will work or not. Even if the schematic is OK, there might still be PCB design issues not shown on schematic. \$\endgroup\$
    – Justme
    Commented Jan 26 at 10:46

1 Answer 1


I can verify it does not work, and if the AVR is not already pre-programmed with a suitable bootloader, there is no way to program it.

There are a lot of beginner mistakes, which could be avoided by reading the datasheet examples, reading the hardware design guides, and looking at other working designs.

The list will be somewhat long so I can add them later. Right now I focused on what you really asked and wanted to know.

There is no way to program the AVR. AVRs cannot be programmed via UART unless you already have programmed it with a bootloader that supports further programming through UART. Arduinos come with bootloaders pre-programmed, so that is why you may think this will work for a fully blank AVRs too. You can likely buy AVRs with a bootloader pre-programmed, or program it yourself before soldering it to this board.

So you need to program it first with other means like put an in-system programming header and use an in-system programmer or another programmer where you can insert the chip.

There are also more modern 32-bit ARM MCUs that come with UART bootloaders built-in, so it might be worth thinking if you want to use an easier, better and faster MCU, or stay with an older AVR if you have a valid reason to do so.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.