pcbway





introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applicationsHi Friends! Hope you are doing well. We always strive to give you valuable information as per your needs and requirements so you keep coming back for what we have to offer. Today, I’ll uncover the details on the Introduction to ATmega168. It is an 8-bit AVR microcontroller that comes with 32-pin interface and is mainly based on RISC CMOS technology. The Program memory is 16K, based on Flash, and incorporates read-write capabilities.

The module comes with a wide temperature range from -40 to 85 ºC while operating voltage ranges from 1.8 to 5.5 V. If you are working on project that is related to automation and embedded systems, you can not write off the importance of this module that comes with an ability of performing a number of functions at once on a single chip.

In this post, I’ll cover each and everything related to this module including main features, pinout, pin description, functions, the compiler used and real-time applications. Let’s jump right it, and get down to the nitty-gritty of this little toy.

Introduction to ATmega168

  • ATmega168 is an 8-bit AVR microcontroller that comes in three packages named as PDIP, MLF, and TQFP, where the first two contain 28 pins on each module while other comes with 32-pin interface.
  • The Program memory is 16K that is based on Flash while other two memories RAM and EEPROM contain 1K and 512 Bytes respectively with data retention capability of around 20 years.
  • The 10-bit ADC module is added in the device that plays a vital role for sensor interfacing and contains total 8 channels that are enough to provide analog to digital conversion to a number of pins.
  • Only a few controllers incorporate all three communication protocols i.e. SPI, I2C and USART and ATmega168 is one of them. These protocols are widely used for setting up a communication with external devices.

introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applications

  • Apart from providing decent pace for executing a number of instructions, other features this module includes a watchdog timer, power up timer, oscillator start-up timer, Brown out Detection and In-Circuit Serial Programming.
  • What Makes this AVR module Different from PIC Microcontrollers is the instruction set. PIC microcontrollers require a number of clock cycles per instruction while AVR executes most instructions in one clock cycle. Also, PIC contains a ‘W’ register, while AVR comes with 32 general purpose registers where three pairs can be employed as pointers.

1. ATmega168 Features

Features of any device are very important to get a hold of major functions and characteristics associated with it. Following table shows the main features of this module.

ATmega168 Features
No. of Pins28
CPURISC 8-Bit CMOS
Operating Voltage1.8 to 5.5 V
Program Memory16K
Program Memory TypeFlash
RAM1K
EEPROM512 Bytes
ADC

Number of ADC Channels

10-Bit

8

Comparator1
In-circuit serial programming
Yes
Oscillatorup to 20 MHz
Timer (3)16-Bit Timer (1)

8-Bit Timer (2)

Capture/Compare/PWM1/1/6
Power Up TimerYes
I/O Pins23
USARTYes
SPI2
I2CYes
Watchdog TimerYes
Brown out Detection (BOD)Yes
Power on ResetYes
Data Retention20 Years
Minimum Operating Temperature-40 ºC
Maximum Operating Temperature85 ºC

2. ATmega168 Pinout and Description

In this section, we will cover the pinout and pin description of each pin of the controller so you can anticipate the main functions associated with the pins.

The following figure shows the pinout of ATmega168.

introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applications

  • ATmega168 comes in three packages named as PDIP, MLF, and TQFP where first is used for the development of individual projects while the other two are added to the industrial and electronic devices.
Pin Description

Following table shows the pin description of each pin that will help you foresee the major functions associated with each pin of the controller.

Pin#Pin NamePin Description
1
PC6
RESET
PCINT14
Digital I/O Pin

RESET will be generated by keeping this pin LOW for longer than the minimum pulse length

Interrupt

2
PD0
RXD
PCINT16
Digital I/O Pin

Serial Receive Pin (USART)

Interrupt

3
PD1
TXD
PCINT17
Digital I/O Pin

Serial Transmit Pin (USART)

Interrupt

4
PD2
INT0
PCINT18
Digital I/O Pin

External Interrupt

Interrupt

5
PD3
INT1
OC2B
PCINT19
Digital I/O Pin

External Interrupt

Dedicated Pin for Timer (PWM Channel)

Interrupt

6
PD4
T0
XCK
PCINT20
Digital I/O Pin

T0 ( Timer0 External Counter Input)

XCK ( USART External Clock I/O)

Interrupt

7
VCC
Voltage Supply
8
GND
Ground Pin
9
PB6
OSC1
XTAL1
PCINT6
Digital I/O Pin

Oscillator Input Pin

Interrupt

10
PB7
OSC2
XTAL2
PCINT7
Digital I/O Pin

Oscillator Output Pin
Interrupt

 

11
PD5
T1
OC0B
PCINT21
Digital I/O Pin

T1 ( Timer0 External Counter Input)

Dedicated Pin for Timer (PWM Channel)
Interrupt

 

12
PD6
AIN0
OC0A
PCINT22
Digital I/O Pin

Analog Comparator Positive

Dedicated Pin for Timer (PWM Channel)
Interrupt

 

 

13
PD7
AIN1
PCINT23

Digital I/O Pin

Analog Comparator Negative
Interrupt
14PB0

ICP1

CLKO

PCINT0

Digital I/O Pin

In Circuit Serial Programming
Clock
Interrupt
15PB1

OC1A

PCINT1

Digital I/O Pin

Dedicated Pin for Timer (PWM Channel)
Interrupt
16PB2

SS

OC1B

PCINT2

Digital I/O Pin

SPI Slave Select Input. When the controller acts as a slave, this pin is LOW

Dedicated Pin for Timer (PWM Channel)
Interrupt
17
PB3
MOSI
OC2A
PCINT3

Digital I/O Pin

MOSI (Master Output Slave Input) for SPI Communication. The data is received by this pin when the controller acts as a slave
Dedicated Pin for Timer
Interrupt
18
PB4
MISO
PCINT4
Digital I/O Pin

MISO (Master Input Slave Output) for SPI communication. When the controller acts as a slave, the data is sent by a controller to master through this pin
Interrupt
19
PB5
SCK
PCINT5
Digital I/O Pin
SCK (SPI Bus Serial Clock). This clock is shared between the controller and other devices for data transfer
Interrupt
20
AVCC
Voltage Supply Pin for ADC
21
AREF
Voltage Reference
22GNDGround Pin
23PC0

ADC0

PCINT8

Digital I/O Pin

Analog Channel 0
Interrupt
24PC1

ADC1

PCINT9

Digital I/O Pin

Analog Channel 1
Interrupt
25PC2

ADC2

PCINT10

Digital I/O Pin

Analog Channel 2
Interrupt
26PC3

ADC3

PCINT11

Digital I/O Pin

Analog Channel 3
Interrupt
27PC4

ADC4

SDA

PCINT12

Digital I/O Pin

Analog Channel 4
Serial Data (I2C)
Interrupt
28PC5

ADC5

SCL

PCINT13

Digital I/O Pin
Analog Channel 5
Serial Clock (I2C)
Interrupt




3. ATmega168 Main Functions

ATmega168 comes with an ability to execute and perform a number of functions. Following are the major functions related to this tiny module.

Timer

Atmega168 comes with three timers where two are 8-bit and one a 16-bit timer.  These timers can be used as a timer as well as a counter. The timer mode is used to create the dealy in any running function that increments the instruction cycle and mainly controls the internal functions of the controller.

While the counter mode counts the number of intervals in any function and is mainly used for external functions where it can increment the rising and falling edge of the pin.

  • Oscillator Start-up Timers
  • Power Up Timer

Oscillator start-up timer resets the controller until the crystal oscillator becomes stable. Similarly, power-up timer is added that generates a minor delay once you power on the device, that provides an appropriate time to stabilize the power where it can generate power signals in a continuous manner.

Brown Out Detect (BOD)

The BOD, also known as BOR (Brown Out Reset), is a very valuable function that resets the module once the Vcc (voltage supply) goes below a brownout threshold voltage.

In this mode, multiple voltage ranges are used and generated to protect the module once the power drops at the voltage supply line, setting you free from manually resetting the device. The Power Up Timer must be enabled, that creates the delay in bringing back the device from a BOD function.

Number of Sleep Modes

Six Sleep Modes are added to the device that help in saving power. These modes include:

  • Idle
  • ADC Noise Reduction
  • Power-save
  • Power-down
  • Standby
  • Extended Standby
SPI Communication

ATmega168 incorporates a serial peripheral interface (SPI) that nails down a communication between the microcontroller and other peripheral devices such as SD cards, shift registers, and sensors. It comes with separate clock and data lines with the addition of a select line to select the given device for communication.

Two pins called used for SPI communication are as follow

MOSI (Master Output Slave Input)

MISO (Master Input Slave Output)

The data is received by MOSI pin when the controller acts as a slave. And MISO is responsible for sending data by the controller when later acts as a slave.

Interrupt

The interrupt is used for a call of emergency which puts the main function on hold and executes the required instructions essential at that time. Once the interrupt is called and executed the running instruction brings the controller back to the main program.

I2C Communication

I2C protocol is a two-wire protocol used to connect low-speed devices like ADC and DAC converters, and microcontrollers. It comes with two wires called

Serial Clock (SCL)

Serial Data (SDA) 

The former behaves like a clock signal that is produced by the master device and synchronizes the data transfer between the devices. And the later is used to carry the desired data.

Watchdog Timer

ATmega168 comes with a built-in watchdog timer that brings the controller back in reset position if the program hangs up during compilation or gets stuck in the infinite loop. The watchdog timer acts like a countdown timer in the running function.

4. ATmega168 Memory Interface

This AVR controller encompasses the Harvard Architecture that provides separate memory locations for both Data and Program memory.

The memory is based on Atmel’s high-density technology where Program Memory, also known as Flash memory, can be reprogrammed through SPI serial interface using two ways i.e. Non-volatile memory programmer or On-chip boot code.

The CPU is very useful to access memories and perform calculations on the basis of the number of instructions fed into the controller.

Program Memory (ROM)

Program memory performs the instructions in every clock cycle at regular intervals. It is also known as ROM or non-volatile memory that stores the information permanently and works perfectly in the absence of power supply.

  • The controller program memory executes the required instruction followed by the next instruction. Every program memory address is able to access a 16- or 32-bit instruction.

Program memory comes with a memory space around 16K – lot more than some other controllers available in the AVR community.

  • Program Flash is mainly categorized into two sections i.e. Application Program section and the Boot Program section. Lock bits are reserved for read/write protection. The Boot Program Section houses Application Flash Memory that is responsible for SPM instruction writing.

introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applications

Data Memory (RAM)

The data memory contains 1K (1024 bytes) memory space. It categorizes the memory locations three ways where first 32 locations access the file register, next 64 locations are allocated for standard I/O memory and remaining are employed for internal data SRAM.

The data memory is categorized into five addressing modes known as

  • Direct,
  • Indirect
  • Indirect with Displacement
  • Indirect with Pre-decrement
  • Indirect with Post-increment

The memory space in the controller shows the linear and regular memory map. The address registers X, Y, and Z can increment and decrement with regular intervals when indirect addressing modes are coupled with both pre-decrement and post-increment.

It is important to note that, the I/O Memory can be accessed in two ways i.e. using data Space locations covering Register File, 0x20 – 0x5F or in a direct manner.

5. ATmega168 Compilers

Compilers are used for writing and compiling the code in the AVR microcontroller. Following are some compilers you can use for this AVR module.

  • The IAR is the best compiler for AVR. It is expensive and incorporates highly professional interface. If you are a beginner, it is advised to use this compiler as per your technical needs and requirements.
  • CodeVision is cheap and easy to use that incorporates CodeWizard.
  • The GCC Port is another compiler for AVR. It is available FREE for both Linux and Windows operating systems. It comes with little bit complex interface that may put you in trouble right off the bat.
  • ImageCraft is a valuable option but it lacks some GUI features where editor and project management are quite formidable and can create trouble for the code execution.

6. ATmega168 Interfacing with Arduino

ATmega168 can be interfaced with Arduino to drive automation in the relevant project. Both modules work perfectly in embedded systems where they can perform a number of useful functions.

The following figure shows the pinout how Arduino pins are connected with ATmega168.

introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applications



  • If you aim to work on this Arduino board then you must try these Arduino Projects for Beginners, they will help to get familiar with the Arduino Board.

7. ATmega168 Block Diagram

If you intend to closely look into the device and how major functions and components are connected and performed inside the device, a block diagram will help you out. The following figure shows the block diagram of ATmega168.

introduction to ATmega168, ATmega168 features, ATmega168 pinout, ATmega168 block diagram, ATmega168 applications

  • AVCC is a voltage supply for analog to digital converter that is necessary to power up the ADC module. Power on reset and brown out detect house in the same package that is also connected with the watchdog timer.

8. ATmega168 Projects and Applications

  • It is widely used in students projects
  • Used in embedded and robotics system
  • Industrial Automation
  • Home Security System
  • For the designing of quadcopters

That’s all for today. I hope you have found this article useful. If you are feeling skeptical or have any question, you can approach me in the comment section below. I’d love to help you in any way I can according to the best of my expertise. Feel free to keep us updated with your valuable suggestion, they help us provide you quality work as per your needs and demands. Thanks for reading the article.

Leave a Reply