Today we take a quick look into the Atmel ATmega328 microcontroller that is at the heart of the Arduino Uno board. There are a lot of features packed into this small 28 pin 8-bit microcontroller.
Some of the ATmega328 Specifications
- 131 Instructions
- Mostly single clock cycle execution of instructions
- 20 MHz maximum clock speed
- 32 kB of program memory
- 1 kB eeprom
- 2 kB SRAM
- 2 x 8 bits timer/counters
- 1x 16 bit timer/counter
- 6 PWM channels
- 6 channel, 10bit analogue to digital converter in the DIP package
- 2x master/slave SPI interface
- 1x USART
- 1x 12C interface
- 23x I/O lines
- 1.8V to 5.5V operating voltage
ATmega328 Clock speed and Instruction Cycles
When looking at the running speed of the microcontroller, using 1 clock cycle per instruction allows up to 20MIPS (mega instructions per second) with a 20MHz clock speed which is 4 times the speed of some other microcontollers that can also be clocked at 20MHz but require 4 clock cycles per instruction making the maximum MIPS at only 5MHz which is still good for most simple applications.
On Board Memory
32kB of program memory is generous allowing larger programs to be written.
1KB of eeprom can be used to store in program variable or settings but for data logging of large numbers it’s best to use external eeprom or better still and SD memory card.
It also comes with 2KB of SRAM which is good for storing temporary data during the program operation.
ATmega 328 Communications Interface
The ATmeg328a has several interfacing modes built in giving the designer plenty of options for communicating with other peripheral devices or microcontrollers. It has a USART, I2C and 2x SPI intertaces built in.
The USART can be used for communicating with other microcontrollers or even a PC, where as the SPI and I2C interfaces can be used to communicate with other devices such as sensors and LCD displays.
There are up to 23 I/O pins that can be used for digital input and output, but when other features are used the number of the I/O pins may be used for those features.
ATmega328 Power Requirements
The ATmega328 has an operating voltage range from 1.8V to 5.5V allowing the microcontroller to be powered by a single 3V button cell if the project your doing requires to be compact. In general use, the device it self uses 0.2mA but this can be reduced to 0.75µA by reducing the clock speed to 32kHz for those projects with limited battery capacity.
Overall the ATmega328 is a good microcontroller offering many useful features in a small package. It also comes in a DIP package allowing hobbyists to use them on prototype breadboards and for though hole soldering on PCB’s.
Before you move on, I would love for you to suggest some topics you would like to see covered on the Smartmicrocontroller.com website this year by leaving a comment in the comments section in the youtube channel, or send us a message through one of the social media links on the about page.