AVR ATmega is popular 8 bit controller family manufactured by ATmel.
ATmega16/32 has four General Purpose Input Output ports for their I/O operations.
AVR ATmega16/ATmega32 has inbuilt 10-bit ADC (Analog to Digital Converter) to convert Analog voltage to digital value.
AVR ATmega16/ATmega32 has three timers which are generally used for generating delay and waveform.
AVR Atmega16/ATmega32 has a feature of Input Capture Mode through which it can capture signal rising or falling edge events on its pin.
AVR ATmega16/ATmega32 has feature of Clear Timer value whenever it matches with compare register value.
USART (Universal Synchronous Asynchronous Receiver Transmitter) which transfers the data bits serially. Using USART, we can communicate with the PC and serial UART devices like GSM module, GPS etc.
AVR based ATmega16/32 has inbuilt Pulse Width Modulation (PWM) unit through which width of a pulse is varied while keeping the frequency constant.
AVR ATmega16/ATmega32 External Interrupts feature provides a way to get noticed by external events.
ATmega16 have 512 bytes of EEPROM, which is used to store user defined contents which will remain even power is off, due to non-volatile type memory.
AVR based ATmega16/ATmega32 has on-chip Analog Comparator which compares two input Analog voltage signals and gives which is higher in between them.
AVR based ATmega16/32 Watchdog Timer (WDT) is a hardware timer which automatically resets the system when its timeout occurs. It is mostly used in Real Time Applications.
ATmega16/ATmega32 based on AVR has inbuilt SPI which is used to communicate with SPI enabled devices such as seven segment displays, EEPROM, MMC and SDC memory cards etc.
AVR based ATmega16/ATmega32 supports I2C protocol, it also called as Two Wire Interface (TWI) protocol which is used to communicate with I2C enabled devices like Magnetometer, Accelerometer, RTC, EEPROM etc.