Glossary

ISP

In-system programming (ISP), also called in-circuit serial programming (ICSP), is the ability of some programmable logic devices, microcontrollers, and other embedded devices to be programmed while installed in a complete system, rather than requiring the chip to be programmed prior to installing it into the system.

UPDI

The Unified Program and Debug Interface (UPDI) is a one-wire interface for external programming and on-chip debugging of newer ATtiny and ATmega devices. It is a successor to the PDI 2-wire physical interface, which is found on all AVR XMEGA devices. UPDI is a single-wire interface providing a bidirectional half-duplex asynchronous communication with the target device for purposes of programming and debugging. It can, in-system, download code into the Flash application and boot memories, EEPROM memory, fuses, lockbits, and signature information.

JTAG

JTAG is an industry standard for verifying designs and testing printed circuit boards after manufacture.

Bootloader

Microcontrollers are usually programmed through a programmer unless you have a piece of firmware in your microcontroller that allows installing new firmware without the need of an external programmer. This is called a bootloader.(read more)

FTDI cable

The FTDI cable is a USB to Serial (TTL level) converter which allows for a simple way to connect TTL interface devices to USB. The I/O pins of this FTDI cable are configured to operate at 5V.

TTL

Transistor–Transistor Logic (TTL) is a class of digital circuits built from transistors and resistors. It is called transistor–transistor logic because the logic function (e.g., AND) and amplification is performed by transistors. Many integrated circuits have TTL technology. They are used in applications such as computers, industrial controls, test equipment and instrumentation, synthesizers, etc.

Hex file

A HEX file is a hexadecimal source file typically used by programmable logic devices, such as microcontrollers in remote controls, office machines, and automobile engine control systems. It contains settings, configuration information, or other data saved in a hexadecimal format. HEX files may be stored in either a binary or text format.

PCB

A printed circuit board mechanically supports and electrically connects electrical or electronic components using conductive tracks, pads and other features etched from one or more sheet layers of copper laminated onto and/or between sheet layers of a non-conductive substrate.

AVR-GCC

AVR-GCC is a compiler that takes C language high level code and creates a binary source which can be uploaded into an AVR micro controller.(read more)

Flash programmer

A flash programmer is a device that allows us to program the flash memory of a microcontroller. By program, we mean we can transfer a program which we have written and compiled and send it the microcontroller for the microcontroller to execute the program.

A microcontroller typically has 3 types of memory: Flash, RAM, and EEPROM. Flash is a type of nonvolatile memory; that is, it's a memory that keeps the information transferred to it even when the power to the microcontroller is shut off. RAM is the memory for temporary storage, such as when the program is being actively executed. EEPROM, like Flash, is nonvolatile. However, it is slower and there is less of it, so more often than not, the Flash memory is the more used and important of the 2 nonvolatile memories.(read more)

Memory

  • Registers: A processor register is a quickly accessible location available to a computer's central processing unit. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only.

  • SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory): SRAM and DRAM are the modes of integrated-circuit RAM where SRAM uses transistors and latches in construction while DRAM uses capacitors and transistors. These can be differentiated in many ways, such as SRAM is comparatively faster than DRAM; hence SRAM is used for cache memory while DRAM is used for main memory.(read more)

  • EEPROM(electronically-erasable programmable read-only memory): EEPROM is a type of non-volatile memory used in computers, integrated in microcontrollers for smart cards and remote keyless systems, and other electronic devices to store relatively small amounts of data but allowing individual bytes to be erased and reprogrammed.

  • Flash: Flash memory is a type of EEPROM, but it can also be a standalone memory storage device such as USB drive. It is a non-volatile memory chip used for storage and for transferring data between a PC and other digital devices. Flash memory is different from RAM because RAM is volatile (not permanent). When power is turned off, RAM loses all its data. Flash can keep its data intact with no power at all.

  • AVR Fuses: AVR Fuses are the locations in non-volatile memory that define the hardware configuration of an AVR device. Fuses are placed in a select section of memory and consist of a few registers.(read more)

ROM vs RAM

RAM (Random Access Memory) is a kind of memory which needs constant power to retain the data in it, once the power supply is disrupted the data will be lost, that's why it is known as volatile memory.

ROM(Read-only memory) is a type of non-volatile memory used in computers and other electronic devices. Data stored in ROM cannot be electronically modified after the manufacture of the memory device.

AVR

AVR is a family of microcontrollers developed since 1996 by Atmel.

ARM

ARM architecture is a computer CPU architecture commonly used in embedded systems and mobile devices such as cell phones, tablet computers, and handheld game consoles such as the Game Boy Advance.

AVRDUDE

AVRDUDE is a utility to download/upload/manipulate the ROM and EEPROM contents of AVR microcontrollers using the in-system programming technique (ISP).(read more)

Microcontroller

A microcontroller is a compact integrated circuit designed to govern a specific operation in an embedded system. A typical microcontroller includes a processor, memory and input/output (I/O) peripherals on a single chip.

The core elements of a microcontroller are:

  • Central Processing Unit (CPU)

  • Program Memory (ROM - Read Only Memory)

  • Data Memory (RAM - Random Access Memory)

  • Timers and Counters

  • I/O Ports (I/O - Input/Output)

  • Serial Communication Interface

  • Clock Circuit (Oscillator Circuit)

  • Interrupt Mechanism

Serial Communication

Serial communication is a term used to describe systems used for telecommunications, as well as certain technologies used for computing. When using serial communication, only one bit is transferred at a time, for example over a communication channel or computer bus. This is different to parallel communication, where several bits are sent at the same time. Many computer networks, as well as many lines where data is transferred over a long distance use serial communication.

Microprocessor

A microprocessor is an electronic component that is used by a computer to do its work. It is a central processing unit on a single integrated circuit chip containing millions of very small components including transistors, resistors, and diodes that work together.

Microcontroller vs Microprocessor

Microcontroller and Microprocessor both terms seem similar but there is a huge difference between these two ICs. Microprocessor only have CPU in the chip like most of the Intel Processors but Microcontroller also have RAM, ROM and other peripherals along with the CPU or processor.

The microcontroller is designed for a specific task and once the program is embed on MCU chip, it can't be altered easily and you may be needed special tools to reburn it. The process of the microcontroller is fixed according to its application.

The microprocessor is used in an application where the task is not predefined and it is assigned by the user. It is used in computers, mobiles, video games, TVs, etc where the task is not fixed and it depends on the user. Generally, the microprocessor is used where intensive processing is required. A laptop is the best example where a microprocessor is used. The laptop is used for media streaming, simulation, editing image, web browsing, gaming, creating a document and many more.

I2C vs SPI vs UART

I2C

I2C is a serial protocol for two-wire interface to connect low-speed devices like microcontrollers, EEPROMs, A/D and D/A converters, I/O interfaces and other similar peripherals in embedded systems. It was invented by Philips and now it is used by almost all major IC manufacturers.(read more)

I2C combines the best features of SPI and UARTs. With I2C, you can connect multiple slaves to a single master (like SPI) and you can have multiple masters controlling single, or multiple slaves. This is really useful when you want to have more than one microcontroller logging data to a single memory card or displaying text to a single LCD.

  • SDA (Serial Data) - The line for the master and slave to send and receive data.

  • SCL (Serial Clock) - The line that carries the clock signal.

I2C is a serial communication protocol, so data is transferred bit by bit along a single wire (the SDA line).

SPI

The Serial Peripheral Interface is a synchronous serial communication interface specification used for short-distance communication, primarily in embedded systems. SPI is a common communication protocol used by many different devices. For example, SD card modules, RFID card reader modules, and 2.4 GHz wireless transmitter/receivers all use SPI to communicate with microcontrollers.(read more)

In serial communication, the bits are sent one by one through a single wire. The following diagram shows the serial transmission of the letter "C" in binary (01000011):

One unique benefit of SPI is the fact that data can be transferred without interruption. Any number of bits can be sent or received in a continuous stream. With I2C and UART, data is sent in packets, limited to a specific number of bits. Start and stop conditions define the beginning and end of each packet, so the data is interrupted during transmission.

Devices communicating via SPI are in a master-slave relationship. The master is the controlling device (usually a microcontroller), while the slave (usually a sensor, display, or memory chip) takes instruction from the master. The simplest configuration of SPI is a single master, single slave system, but one master can control more than one slave.

  • MOSI (Master Output/Slave Input) - Line for the master to send data to the slave.

  • MISO (Master Input/Slave Output) - Line for the slave to send data to the master.

  • SCLK (Clock) - Line for the clock signal.

  • SS/CS (Slave Select/Chip Select) - Line for the master to select which slave to send data to.

UART

UART stands for Universal Asynchronous Receiver/Transmitter. It's not a communication protocol like SPI and I2C, but a physical circuit in a microcontroller, or a stand-alone IC. A UART's main purpose is to transmit and receive serial data.(read more)

UARTs transmit data asynchronously, which means there is no clock signal to synchronize the output of bits from the transmitting UART to the sampling of bits by the receiving UART. Instead of a clock signal, the transmitting UART adds start and stop bits to the data packet being transferred. These bits define the beginning and end of the data packet so the receiving UART knows when to start reading the bits.

The following diagram shows the parallel transmission of the letter "C" in binary (01000011):

Baud rate

The baud rate is the rate at which information is transferred in a communication channel. In the serial port context, "9600 baud" means that the serial port is capable of transferring a maximum of 9600 bits per second.