PIC microcontrollers

PIC (usually pronounced as /pɪk/) is a family of microcontrollers made by Microchip Technology, derived from the PIC1640[1][2] originally developed by General Instrument's Microelectronics Division.

With its own small RAM, ROM and a simple CPU for controlling the transfers, it could connect the CP1600 bus to virtually any existing 8-bit peripheral.

[6] Early models only had mask ROM for code storage, but with its spinoff it was soon upgraded to use EPROM and then EEPROM, which made it possible for end-users to program the devices in their own facilities.

PIC devices are popular with both industrial developers and hobbyists due to their low cost, wide availability, large user base, an extensive collection of application notes, availability of low cost or free development tools, serial programming, and re-programmable flash-memory capability.

[6] Follow-ons included the PIC1670, with instructions widened from 12 to 13 bits to provide twice the address space (64 bytes of RAM and 1024 words of ROM).

By this time, however, the PIC1650 had developed a large market of customers using it for a wide variety of roles, and the PIC went on to become one of the new company's primary products.

At the same time Plessey in the UK released NMOS processors numbered PIC1650 and PIC1655 based on the GI design, using the same instruction sets, either user mask programmable or versions pre-programmed for auto-diallers and keyboard interfaces.

[10] Today, a huge variety of PICs are available with various on-board peripherals (serial communication modules, UARTs, motor control kernels, etc.)

A "word" is one assembly language instruction, varying in length from 8 to 16 bits, depending on the specific PIC microcontroller series.

[5][dubious – discuss] PIC micro chips are designed with a Harvard architecture, and are offered in various device families.

These devices feature a 12-bit wide code memory, a 32-byte register file, and a tiny two level deep call stack.

PIC10F32x devices feature a mid-range 14-bit wide code memory of 256 or 512 words, a 64-byte SRAM register file, and an 8-level deep hardware stack.

Clocks are an internal calibrated high-frequency oscillator of 16 MHz with a choice of selectable speeds via software and a 31 kHz low-power source.

The instruction set differs very little from the baseline devices, but the two additional opcode bits allow 128 registers and 2048 words of code to be directly addressed.

Although still similar to earlier PIC architectures, there are significant enhancements:[15] Some features are: dsPICs can be programmed in C using Microchip's XC16 compiler (formerly called C30), which is a variant of GCC.

Today, starting at 28 pin in small QFN packages up to high performance devices with Ethernet, CAN and USB OTG, full family range of mid-range 32-bit microcontrollers are available.

The Harvard architecture, in which instructions and data come from separate sources, simplifies timing and microcircuit design greatly, and this benefits clock speed, price, and power consumption.

Optimization is facilitated by the relatively large program space of the PIC (e.g. 4096 × 14-bit words on the 16F690) and by the design of the instruction set, which allows embedded constants.

[34] The RISC instruction set of the PIC assembly language code can make the overall flow difficult to comprehend.

Microchip still sells OTP (one-time-programmable) and windowed (UV-erasable) versions of some of its EPROM based PICs for legacy support or volume orders.

[35] Microchip provides a freeware IDE package called MPLAB X, which includes an assembler, linker, software simulator, and debugger.

Demo boards are available with a small factory-programmed bootloader that can be used to load user programs over an interface such as RS-232 or USB, thus obviating the need for a programmer device.

After programming the bootloader onto the PIC, the user can then reprogram the device using RS232 or USB, in conjunction with specialized computer software.

Some are simple designs which require a PC to do the low-level programming signalling (these typically connect to the serial or parallel port and consist of a few simple components), while others have the programming logic built into them (these typically use a serial or USB connection, are usually faster, and are often built using PICs themselves for control).

To debug these devices, a special -ICD version of the chip mounted on a daughter board which provides dedicated ports is required.

There are software library modules to emulate I²C and SPI interfaces, UARTs, frequency generators, measurement counters and PWM and sigma-delta A/D converters.

[44] ELAN Microelectronics Corp. in Taiwan make a line of microcontrollers based on the PIC16 architecture, with 13-bit instructions and a smaller (6-bit) RAM address space.

[45] Holtek Semiconductor make a large number of very cheap microcontrollers[46] (as low as 8.5 cents in quantity[47]) with a 14-bit instruction set strikingly similar to the PIC16.

Many ultra-low-cost OTP microcontrollers from Asian manufacturers, found in low-cost consumer electronics are based on the PIC architecture or modified form.

With any patents on the basic architecture long since expired, Microchip has attempted to sue some manufacturers on copyright grounds,[51][52] without success.

PIC microcontrollers in DIP and QFN packages
16-bit 28-pin PDIP PIC24 microcontroller next to a metric ruler
Die of a PIC12C508 8-bit, fully static, EEPROM / EPROM / ROM -based CMOS microcontroller manufactured by Microchip Technology using a 1200 nanometre process
Die of a PIC16C505 CMOS ROM -based 8-bit microcontroller manufactured by Microchip Technology using a 1200 nanometre process
Various older (EPROM) PIC microcontrollers
PIC1655 from General Instrument
Microchip PIC16C58A
PIC16LF870 in SOIC Socket
This is a 2003 era programmer for the Microchip "PIC" family of microcontrollers. It connects by RS 232 cable to a PC compatible running development software. In 2003 this unit cost $300 Canadian (about $200 US at the time).
1886VE2U