ATmega 40 pin minimal board


After I wrote several articles about using ATmega microcontrollers (DIP40) in Arduino environment (here and at Instructables), I had some feedback that I was asked how to be effectively put into operation this project.

As I came into the Arduino world from classical microcontrollers development world, I have not found necessary to elaborate a method or hardware project for this. Meanwhile I realized that in Arduino world as there are many users who not have a background in digital electronics / microcontrollers development. This is the great advantage of Arduino, it is so easy to use that even if someone have no knowledge or experience with electronics or programming, can get a simple project running in hours (or minutes).

Personally, I use the Arduino as a platform for experimentation. Even if most of the times I bypass hardware “abstraction layer” (and working directly with microcontroller hardware) I continue to use the Arduino IDE because is so simple(and fast) to start experimenting with different algorithms or techniques to control various peripherals. I must admit that sometimes I use Arduino IDE as a replacement for AVR Studio, as long as USBASP is well supported.

So I think that this project will not be useless, although there are many similar projects each with advantages and disadvantages.


  • Can be used with DIP40 ATmega Microcontrollers: ATmega16, ATmega32, ATmega644, ATmega1284, ATmega1284P
  • Thru-hole components / easy to solder
  • Can be used with Arduino IDE (or other IDE / programmer / compiler )
  • Include filtering of AVCC for better analog input.
  • Include 10pin ISP connector / easy to use with USBASP (or another compatible programmer)
  • More freedom in the choice of connections with external modules
  • … I almost forgot … price…


  • No bootloader (limitation or advantage, depends on how you look at). However a bootloader can be easily added (…some hardware is required)
  • No standard Arduino footprint. (We can not plug directly standard shields, but can still use them in more traditional way, with jumper wires)


Here is a comparison between various common microcontrollers (DIP40 package) from ATmega family:
Please note that ATmega328P and ATmega2560 are not DIP40. I put them here for comparison (ATmega328P ~ Aruino Uno / ATmega2560 ~ Arduino Mega 2560).

Microcontroller ATmega 16 ATmega 328P ATmega 32 ATmega 644 ATmega 1284/1284P ATmega 2560P
Max Frequency 16MHz 16MHz 16MHz 20MHz 20MHz 16MHz
Digital Pins  32 23 32 32 32 54
Analog input  8 6 8 8  8 16
SRAM  1k 2k 2k 4k 16k 8k
FLASH 16k 32k 32k 64k 128k 256k
EEPROM (Bytes) 512 1024 1024 2048 4096 4096
UART  1 1  1 2 2 4
Interrups 3 2 3 3 3 8
PCINT Interrupts no 23 no 32 32 54
PWM pins* 4 6 4 6 6 16

*PWM pins comparison is not very acurate ( 8bit / 16bit, Timer0… )
I not tried to imitate exactly Arduino behavior(bootloader, form factor…). I thought that the most important is that we can use Ardino environment and its libraries (official or not).


At first I make schematic to illustrate minimum requirements to start an ATmega microcontroller at full speed.

Download schematic as pdf: ATmega DIP40 Schematic.pdf.


After schematic was done…


Download gEDA Project from here: atmega40pin gEDA


Also I made a stripboard version of this project, for testing purposes… and fun.

An article about this and some detailed comments on schematic can be found here:

PCB Ready

I sell on Tindie

If you want to use this project with Arduino IDE, you can read the following articles:

JOSÉ GONÇALVES from Portugal was inspired by this project and made his own design and home made PCB. Good work!

Updated: May 12, 2018 — 3:43 pm


Add a Comment
  1. If you put a zif socket and a socketed crystal,could this be used as a avr board ,to conecto to an avr programmer ?

    So basicly this could program atmega 644 ,1284 ,16 and 32 40 pin chip ?

    Best Regards


    1. Yes, you can put a socketed crystal, and could program atmega644, atmega1284/1284p, atmega32 and even atmega16, but zif socket is too big for this little board. instead we can put a classic socket (I use them in this way)

      It’s a compromise between usability as development board and breakout board.
      I assembled few with 16MHz and few with 20MHz. And when project is ready I leave them there(that’s no zif socket).

      This board was designed for final projects, when we need good mechanical fixing.

      Anyway, is opensource, it can be easily adapted.

      I checked right now, a zif socket will overlaps with right pins of C6 and C4 capacitors.

      Thank you!

  2. I thank you ,i made my own design under diptrace and manage to put a zif socket 🙂
    i have another question ,is the coil needed on the circuit or can i change with a fuse ,because here on my country coil is difficult to find :/

    Best Regards


    1. L1(10uH) and C4(100nF) is for better noise immunity of ADC section. This filter can be omitted If you consider that ADC will not be used (or analog input accuracy does not matter too much). Instead you can connect AVCC to VCC as you wish

  3. So ,Can i bypass the coil with a jumper wire?


    1. Short answer: Yes. 🙂

  4. Thank you very much 🙂

    If you are interested ,i can sent pics to enrich this post,if so,please sent to my email the one that i can sent to,and to ensure all that the design is ok 🙂

    Best REgards


  5. I sent an email to you. We keep in touch …

Leave a Reply

Your email address will not be published. Required fields are marked *

OpenHardware.Ro © 2017 Frontier Theme