Introduction to ATmega128

Hey Guys! Hope you are doing well. I am back to feed you with valuable information relating to engineering and technology. Today, I'll uncover the details on the Introduction to ATmega128. It is an AVR, 8-bit low power microcontroller, that comes with a 64-pin interface and is based on RISC architecture.  Availability of 133 Powerful Instructions with single clock cycle and 32 x 8 General Purpose Working Registers make this device an ideal choice for many applications where decent code execution is required. The memory space incorporates on this module is more than normal AVR controllers including Program memory around 128K, enough to store the number of instructions on a single chip. In this post, I'll try to cover each and everything related to ATmega128, so you can get clear idea what is this about before aiming to pick it for your relevant project. Let's jump right in and get down to the nitty-gritty of this module.

Introduction to ATmega128

  • ATmega128 is an AVR, 8-bit low power microcontroller that contains 64-pin interface and is based on RISC architecture.
  • It is mainly used in an embedded system and industrial automation.
  • This AVR controller differs from PIC controllers in accordance with the instruction set where AVR requires one clock cycle to execute a number of instructions while PIC controllers need a number of clock cycles to execute a single instruction.
  • The ADC is included in the device that makes it an ideal choice for sensor interfacing where it receives the analog signal and converts it to a digital one. There are total 8 channels available on the ADC module.
  • Apart from communications protocols like SPI, I2C, and USRAT, this tiny module comes with watchdog timers, external interrupts, power up timer, 6 sleep modes and programming enable pin.
  • The Program Memory is based on Flash and comes with a memory space around 128K while EEPROM and SRAM are 4K each.
  • If you are an expert or newbie, you need this module every now and then for the development of the electronic projects where automation is a major concern. Ability to perform a number of functions without buying external components makes this device highly economical and best choice for the tech geeks.

1. ATmega128 Features

This AVR microcontroller comes with very useful features. Large memory space and number of pins make this device a step ahead for driving automation in the relevant project. Following table shows the main features of ATmega128.
No. of Pins 64
CPU 8-Bit AVR
Operating Voltage 4.5 to 5.5 V
Program Memory 128K
Program Memory Type Flash
RAM 4K
EEPROM 4K
ADC Number of ADC Channels 10-Bit 8
Analog Comparator Yes
PWM Channels 6
Oscillator up to 16 MHz
Timer (4) 16-Bit Timer (2) 8-Bit Timer (2)
Packages (3) PDIP TQFP QFN
Power Up Timer Yes
I/O Pins 53
Manufacturer Microchip
SPI Yes
I2C Yes
Watchdog Timer Yes
Brown out Detection (BOD) Yes
USART Yes
Sleep Modes 6
Minimum Operating Temperature -40 C
Maximum Operating Temperature 85 C

2. ATmega128 Pinout and Pin Description

The pinout and pin description of each pin will help you understand the major functions associated with each pin. Some pins are able to perform more than one functions on each pin.
Pinout
Following figure shows the pinout of ATmega128.  
  • The AVCC is the voltage applied to the ADC module while AREF is the reference voltage applied to the controller. The VCC and GND are the voltage supply and ground pins respectively.
Pin Description
Following table shows the description of each pin.
1 PEN Programming Enable
2 PE0 RXD PDI I/O Pin Serial Receive Pin (USART)
3 PE1 TXD PDO I/O Pin Serial Transmit Pin (USART)
4 PE2 XCK0 AIN0 I/O Pin External Interrupt PinAnalog Comparator Positive
5 PE3 OC3A AIN1 I/O Pin Dedicated Pin for Timer (PWM Channel) Analog Comparator Negative
6 PE4 OC3B INT4 I/O Pin Dedicated Pin for Timer (PWM Channel) Interrupt
7 PE5 OC3C INT5 I/O Pin Dedicated Pin for Timer (PWM Channel) Interrupt
8 PE6 T3 INT6 I/O Pin Timer 3 Interrupt
9 PE7 ICP3 INT7 I/O Pin Timer/Counter3 Input Capture Pin Interrupt
10 PB0 SS I/O Pin SS (Slave Select Input for SPI).  This pin is set to low when the controller acts as a slave
11 PB1 SCK I/O Pin SCK (Serial Clock for SPI). This clock is shared between the controller and external devices for accurate data transfer
12 PB2 MOSI I/O Pin MOSI (Master Output Slave Input) for SPI communication. The data is received by this pin when the microcontroller acts as a slave
13 PB3 MISO I/O Pin MISO (Master Input Slave Output) for SPI communication. The data is sent to the master using this pin when microcontroller acts as a slave
14 PB4 OC0 I/O Pin PWM Channel Output
15 PB5 OC1A I/O Pin PWM Channel Output
16 PB6 OC1B I/O Pin PWM Channel Output
17 PB7 OC2 OC1C I/O Pin PWM Channel Output
18 PG3 TOSC2 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 PG4 TOSC1 I/O Pin SCK (SPI Bus Serial Clock). This clock is shared between the controller and other devices for data transfer Interrupt
20 RESET Voltage Supply Pin for ADC
21 VCC Voltage Reference
22 GND Ground Pin
23 XTAL2 Crystal Oscillator Output
24 XTAL1 Crystal Oscillator Input
25 PD0 SCL INT0 I/O Pin I2C communication External Interrupt 0
26 PD1 SDA INT1 I/O Pin I2C communication External Interrupt 1
27 PD2 RXD1 INT2 I/O Pin Serial Communication Receive Pin (USART) External Interrupt 2
28 PD3 TXD1 INT3 I/O Pin Serial Communication Transmit Pin (USART) External Interrupt 3
29 PD4 ICP1 I/O Pin Timer/Counter1 Input Capture Pin
30 PD5 XCK1 I/O Pin External Clock I/O for USART
31 PD6 T1 I/O Pin Timer 1
32 PD7 T2 I/O Pin Timer 2
33 PG0 WR I/O Pin Control Pin for writing to the external memory
34 PG1 RD I/O Pin Control Pin for reading from the external data memory
35 PC0 A8 I/O Pin
36 PC1 A9 I/O Pin
37 PC2 A10 I/O Pin
38 PC3 A11 I/O Pin
39 PC4 A12 I/O Pin
40 PC5 A13 I/O
41 PC6 A14 I/O Pin
42 PC7 A15 I/O Pin
43 PG2 ALE I/O Pin ALE (Address Latch Enable), it is used when multiple memory chips are connected to the microcontroller and only one of them needs to be selected
44 PA7 AD7 I/O Pin
45 PA6 AD6 I/O Pin
46 PA5 AD5 I/O Pin
47 PA4 AD4 I/O Pin
48 PA3 AD3 I/O Pin
49 PA2 AD2 I/O Pin
50 PA1 AD1 I/O Pin
51 PA0 AD0 I/O Pin
52 VCC Voltage Supply Pin
53 GND Ground
54 PF7 ADC7 TDI I/O Pin ADC Channel 7 JTAG Interface
55 PF6 ADC6 TDO I/O Pin ADC Channel 6 JTAG Interface
56 PF5 ADC5 TMS I/O Pin ADC Channel 5 JTAG Interface
57 PF4 ADC4 TCK I/O Pin ADC Channel 4 JTAG Interface
58 PF3 ADC3 I/O Pin ADC Channel 3
59 PF2 ADC2 I/O Pin ADC Channel 2
60 PF1 ADC1 I/O Pin ADC Channel 1
61 PF0 ADC0 I/O Pin ADC Channel 0
62 AREF Reference Voltage
63 GND Ground
64 AVCC Voltage Supply Pin for ADC

3. ATmega128 Main Functions

ATmega128 can perform a number of functions on a single chip. Large memory space with more number of pins interface put this device ahead of other controllers available in the AVR community. Following are the major functions associated to this tiny module.
Timer
Atmega128 comes with four timers i.e. two 8-bit and two 16-bit timers. These timers play a vital role in creating a delay of any running functions and can be used both ways i.e. timers as well as counters where former is used to control the internal functions of the controller and increments the instruction cycle, while later counts the number of intervals by incrementing the rising and falling edge of the pin and is mainly used for external functions. Two other timers added in the device are
  • Oscillator Start-up Timers
  • Power Up Timer
Oscillator start-up timer resets the controller to stabilize the crystal oscillator. And power-up timer is used to generating a minor delay once you power on the device, helps in stabilizing the power signals.
Number of Sleep Modes
This device incorporates Six Sleeping Modes for power saving purpose. These modes include:
  • Power-save
  • Power-down
  • Idle
  • ADC Noise Reduction
  • Standby
  • Extended Standby
Brown Out Detect (BOD)
The BOD, also known as BOR (Brown Out Reset), is a valuable addition to the device that helps in resetting the module once the Vcc (voltage supply) goes below a brownout threshold voltage. In this mode, multiple voltage ranges are produced to save the module once the power drops at the voltage supply line. If you aim to bring back the device from BOD function, it is advised to enable the Power Up Timer for creating a slight delay.
Watchdog Timer
Most of the chips, if not all, produced by Microchip, incorporate a built-in watchdog timer that resets the controller if the running program hangs up during compilation or gets stuck in the infinite loop. The main purpose of this timer is to prevent the controller from resetting it manually, giving you a slight edge over other processors where you need to wrestle your mind to manually reset the controller in case there comes a glitch in the running function. The watchdog timer behaves like a countdown timer.
Interrupt
The interrupts are very helpful for calling the desired function that puts the main running function on hold until the required instruction is executed. The controller goes back to the main program once the interrupt is executed.
I2C Communication
I2C protocol is used to layout the communication between low-speed devices like ADC and DAC converters and microcontrollers. It is a two wire communication that mainly contains two lines
  • Serial Clock (SCL)
  • Serial Data (SDA)
The former is a clock signal, mainly used to synchronize the data transfer between the devices and is generated by the master device, while the later is used to hold the desired data.
SPI Communication
ATmega128 houses a serial peripheral interface (SPI) that is mainly used for communication between the microcontroller and other peripheral devices such as sensors, shift registers, and SD cards. Separate clock and data lines are available, layered with a select line for selecting the relevant device for communication. Two pins used for SPI communication are as follow
  • MOSI (Master Output Slave Input)
  • MISO (Master Input Slave Output)
The MOSI pin is used for receiving the data when the microcontroller acts as a slave. Similarly, MISO helps in sending data by the microcontroller while later acts as a slave mode.

4. ATmega128 Compilers

Compilers are the basic software used for writing and compiling the code into the AVR controller. Some are free to use and some are paid. If you are getting your hands-on very first time with the controllers, it is advised to go with the free version, you can move to paid version as you grow and learn with the passage of time. Following are some basic compilers mainly used for AVR microcontrollers.
  • The IAR is a paid compiler and comes with a professional interface. As per the testimonials and personal experience of some of the experts, this compiler proves to the best version for the AVR microcontrollers.
  • CodeVision houses a CodeWizard and turns out to be highly economical for the controllers.
  • The GCC Port is another good pick to start with, but it comes with a bit complex interface. It works with both Windows and Linux operating systems.
  • ImageCraft is a valuable addition for compiling the code, but it doesn't incorporate some GUI features like editor and project management that may put you in big trouble during the code execution.

5. ATmega128 Memory Interface

Two memory types are mainly used in ATmeag128 named as Program Memory (Flash Memory) and SRAM memory where former makes use of a single pipelining for the execution of the instructions and later is a volatile memory mainly depends on the power supply source.  This AVR module incorporates a Harvard Architecture where separate memories spaces are reserved for both data and program. The memory space in the controller is nothing but a combination of the linear and regular memory maps. The Fast Access File Register is layered with 32 x 8 – Bit general purpose working registers. The single clock cycle is enough for accessing these registers and laying out the ALU (Arithmetic Logic Unit) operation where the result is stored in the Register file.
Program Memory (ROM)
Program memory has a memory space around 128K where recent instruction is called followed by the next instruction, executing the instructions in every clock cycle.
  • It is mainly categorized into two parts named as the Boot Program section and Application Program section. The former comes with Applications Flash Memory that plays the main part for SPM instruction writing.
Data Memory (RAM)
The data memory has a memory space around 4K. Five different addressing modes in the AVR architecture are used for addressing this RAM memory. These modes are named as
  • Direct
  • Indirect
  • Indirect with Displacement
  • Indirect with Pre-decrement
  • Indirect with Post-increment.
Three address registers, known as X, Y, and Z, increment and decrement in indirect addressing modes. Control registers are present in the flexible interrupt module that mainly come with global interrupt enable bit laying in the Status Register. These interrupts come with an Interrupt Vector Table where Interrupt Vector is a major part of it and both are inversely proportional to each other. It is important to note that, the Interrupt Vector table depends on the Interrupt Vector Position.
  • The ALU module operates in a single clock cycle and is divided into three main functions called direct, arithmetic and bit functions, that are directly connected with 32 general purpose registers.

6. ATmega128 Block Diagram

Following figure shows the block diagram of ATmega128.
  • ATmega128 comes with six software selectable power saving modes. The Power-down is very helpful for freezing the Oscillator and stops all other module functions while keeping the register contents saved. The functions remain disabled until the next interrupt is called and executed.
  • Similarly, the Idle mode allows the interrupt system, SPI Port, SRAM, Timers/Counter to function while keeping the CPU disabled.
  • The ADC Noise Reduction mode plays a vital role in minimizing the switching noise and freezes entire module except asynchronous ADC and Timers.
  • In the Power-save mode, the entire device is sleeping except asynchronous timer which continues to run.
  • The Standby mode puts the whole device in sleep mode except Crystal Oscialltor which continues to run, helping to consume low power. The Extended Standby mode allows both the Oscillator and the Asynchronous Timer to run while the rest of the device sleeps.
ATmega128 Applications
  • Embedded systems
  • Industrial Automation
  • Students Projects
  • Making of quadcopters
  • Home automation
That's all for today. I hope I have given you everything you needed to know about ATmega128. If you are unsure or have any question, you can approach me in the comment section below. I'll try and help you according to the best of my knowledge. Feel free to keep us updated with your valuable suggestions, so we keep providing quality work and you keep visiting us every now and then. Thanks for reading the article.
Syed Zain Nasir

I am Syed Zain Nasir, the founder of <a href=https://www.TheEngineeringProjects.com/>The Engineering Projects</a> (TEP). I am a programmer since 2009 before that I just search things, make small projects and now I am sharing my knowledge through this platform.I also work as a freelancer and did many projects related to programming and electrical circuitry. <a href=https://plus.google.com/+SyedZainNasir/>My Google Profile+</a>

Share
Published by
Syed Zain Nasir