Click here to Skip to main content
16,019,876 members
Articles / Internet of Things / Arduino

Arduino Uno: Using Your ATMega328p-u As Stand-alone

Rate me:
Please Sign up or sign in to vote.
5.00/5 (2 votes)
3 Jul 2018Apache4 min read 17.3K   7   2
Arduino Uno: Using your ATMega328p-u as stand-alone

Note: This article was pulled from my blog at: http://www.raddev.us/Arduino/

If you've spent any time at all with an Arduino, then you know how to write a program for it. I uploaded the program (shown below) to simply blink an LED on digital pin 5 on my Arduino Uno (knock-off) board (Amazon link).

arduino uno

setup(){
 int LED = 5;
 pinMode(LED, OUTPUT);
}
loop(){
  delay(500);
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
}

We use the Arduino Uno to program the ATmega328p chip that is connected to the board on the IC (integrated circuit) socket.

Once You're Done Programming the Chip

But, after you're done programming the chip, it doesn't make sense that you keep it attached to the Arduino Uno board. The board takes up a lot of space and is really used to provide you with an easy way to program the chip.

Here's what it looks like when you remove the chip from the Uno.

You can see the socket that I removed the chip from and you can see that the chip itself is far smaller than the board. That means your final product can be much smaller.

atmega328p

But, how do we get the chip to run our program?

Build the Circuit to Power the ATmega328p

Here's a quick snapshot of the initial circuit we are going to build.

bread board circuit

It's very simple. It's one GND (ground) wire connected to pin 8 of the ATmega328p. It's one 5V wire (coming off bread board rail) to pin 7 of the ATmega328p.

Then you can see that I've connected the anode (positive) pin of the LED to PD5 of the ATmega328 because that is the same pin as digital pin 5 on the Arduino Uno.

That _should_ be all you need. But as you can see, the LED is not lit up.

The ATmega328p is actually powered in the picture, but for some reason, it is not running our sketch. Why not?

How is the ATmega328p Set Up on Arduino Uno?

This all has to do with the way the ATmega328p is set up to work on the Uno. When the manufacturer sets up the chip for use with the UNO, they have to set some internal switches on the ATmega328p called fuse bits, so that it works properly with the associated Arduino Uno hardware.

These settings are conventions (arbitrarily chosen but are expected by Arduino users).

You cannot set the fuses unless you have an AVR(Atmel) ISP (In System Programmer/Programming).

ATMega328p Can Run At Various Speeds

An ATmega328p can run at various clock speeds. It can run at 1Mhz (one million cycles per second), 8Mhz and 16Mhz. However, it can only run at 16Mhz if it has an external crystal attached to it.

16Mhz Crystal On Arduino Uno Board

The Arduino Uno board does have a 16Mhz crystal on board.

I've highlighted the crystal in the following picture:

16Mhz crystal

Since the manufacturer has set these chips to run with the external crystal (oscillator), the chip will not run properly without one.

ATmega328p Datasheet

If you take a look at the datasheet and go down to section 5.1, you'll see a nice pinout diagram for the ATmega328p-u (dip dual inline package).

atmega28p-u pinout

Crystal Pins

You can see that pin 7 is VCC and pin 8 is GND just as I mentioned earlier. But now, we need to find the place where we should install the crystal. If you look closely, you'll see pin 9 is marked xtal1 and pin 10 is marked xtal2. xtal is the abbreviation for crsytal.

Two 22pF Capacitors

However, by looking at this diagram, you would not know that you also need to add two 22pF ceramic (non-polarized) capacitors to those pins also.

You will connect one pin of one cap to the pin 9 and the other pin to ground. You will then connect one pin of the other cap to pin 10 and the other pin to ground. Then you will connect the 16Mhz crystal so that one pin is on pin 9 and one pin is on pin 10.

Here's a quick snapshot of it on the breadboard (and then at the bottom of this article, I'll provide you with a schematic so you can more easily see how things are connected).

atmega28p-u with crystal on pins 9 & 10

Now, when you power this circuit up, it will actually run the sketch.

atmega28p-u running stand-alone

Clears Up A Few Things

Hopefully, this will clear up a few things:

  1. You can actually run the chip stand-alone -- and you should since it is a smaller footprint.
  2. If you haven't been successful getting it to work, it may be because you didn't add the 16Mhz crystal: it won't work without it.
  3. You definitely need 22pF caps. I tried it what 47pF and it didn't work. Use 22pF caps.

Keep on building, keep on learning.

~raddevus (roger deutsch)

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Software Developer (Senior) RADDev Publishing
United States United States
"Everything should be made as simple as possible, but not simpler."

Comments and Discussions

 
QuestionCrystal capacitors Pin
fatman4512-Jul-18 6:58
professionalfatman4512-Jul-18 6:58 
Great article! I'm really enjoying all of your Arduino articles. I just have a question about the capacitors for the crystal. How did you arrive at 22pf for a value? The capacitors on the Uno board are just chip capacitors, and they don't have values on them. I tried to find the answer from the Atmel website, but didn't see anything there either.
Da Bomb

AnswerRe: Crystal capacitors Pin
raddevus6-Aug-18 9:36
mvaraddevus6-Aug-18 9:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.