|
Introducing
the PICmicro from Microchip technology
PIC is a family of RISC
microcontrollers made by Microchip Technology, derived from the
PIC1650 originally developed by General Instrument's Microelectronics
Division.
Microchip Technology
does not use PIC as an acronym; in fact the brand name is PICmicro.
It is generally regarded that PIC stands for Peripheral Interface
Controller, although General Instruments' original acronym for the
PIC1650 was "Programmable Intelligent Computer". The original
PIC was built to be used with GI's new 16-bit CPU, the CP1600. While
generally a good CPU, the CP1600 had poor I/O performance, and the
8-bit PIC was developed in 1975 to improve performance of the overall
system by offloading I/O tasks from the CPU. The PIC used simple
microcode stored in ROM to perform its tasks, and although the term
wasn't used at the time, it is a RISC design that runs one instruction
per cycle (4 oscillator cycles).

General
Instrument's PIC1655
In 1985 General Instruments
spun off their microelectronics division, and the new ownership
cancelled almost everything — which by this time was mostly
out-of-date. The PIC, however, was upgraded with EPROM to produce
a programmable channel controller, and today a huge variety of PICs
are available with various on-board peripherals (serial communication
modules, UARTs, motor control kernels, LCD drivers, etc.) and program
memory from 512 words to 32k words and more (a "word"
is one assembly language instruction, varying from 12, 14 or 16
bits depending on the specific PICmicro family).

Various
PIC microcontrollers
Writing Code
for PICs
PICs use a RISC instruction
set, which varies in length from about 35 instructions for the low-end
PICs to about 70 instructions for the high-end PICs. The instruction
set includes instructions to perform a variety of operations on
the accumulator and a constant or the accumulator and a memory location,
as well as for conditionally executing code and jumping/calling
other parts of the program and returning from them, and specific
hardware features like interrupts and one low-power mode called
sleep. Microchip provides a freeware IDE package called MPLAB, that
also includes a software simulator as well as an assembler.
Third parties make C
and BASIC language compilers for PICs. Microchip also sells compilers
for the high-end PICs ("C18" for the 18F series and "C30"
for the dsPICs). They also make available for download a "student
edition/demo" version of C18 or C30 which disables some optimiser
features after a timeout period. Open-source compilers for the C,
Pascal, JAL, and for the Forth programming language, PicForth, have
also been released.
GPUTILS is an Open Source
collection of tools, distributed under the GNU General Public License.
GPUTILS includes an assembler and linker and works on Linux, Mac
OS X, OS/2 and Microsoft Windows. GPSIM is an Open Source simulator
for the PIC microcontrollers featuring hardware modules that simulate
specific devices that might be connected to them, like LCDs.
Devices called "programmers"
are traditionally used to get program code into the target PIC.
Most PICs that Microchip sells nowadays have ICSP (In Circuit Serial
Programming) and/or LVP (Low Voltage Programming) capabilities,
allowing the PIC to be programmed while it is sitting in the target
circuit. ICSP programming is performed using the RB6 and RB7 pins
for clock and data, while a high voltage (12V) is present on the
Vpp/MCLR pin. Low voltage programming allows for the elimination
of the extra voltage rail in the programmer but comes at the cost
of an IO pin and can therefore be disabled (once disabled it can
only be re-enabled using high voltage programming). There are many
programmers for PIC microcontrollers, ranging from the extremely
simple designs that rely on the communications software for taking
care of all the communication details to complex designs that can
verify the device at several supply voltages and can do much of
the work in the hardware. Many of these complex programmers use
a pre-programmed PIC themselves to send the programming commands
to the PIC that is to be programmed.
Many of the higher end
flash based PICs can also write to their own program memory. Demo
boards are available with a small bootloader factory programmed
that can be used to load user programs over an interface such as
RS-232 or USB.
There are many programmers/debuggers
available directly from Microchip:
- PICStart Plus (RS232
serial interface)
- Promate II (RS232
serial interface)
- MPLAB PM3 (RS232
serial and USB interface)
- ICD2 (RS232 serial
and USB interface)
- PICKit 1 (USB interface)
- PICKit 2 (USB interface)
Debugging
MPLAB (which is a free
download) includes a software emulator for PICs. However software
emulation of a microcontroller will always suffer from limited simulation
of the devices interactions with its target circuit.
The MPLAB ICD2 (RS-232
serial and USB interface). Offers fairly cheap (about £100)
in circuit debugging. A programming/debug connector (the ICD2 has
a RJ12 socket and comes with a cross wired RJ12 lead but there is
nothing preventing the use of custom cables to other connector types)
is designed into the target circuit. This cheap and simple debugging
system comes at a price however, namely limited breakpoint count
(1 on older pics 3 on newer PICs), loss of some IO (with the exception
of some surface mount 44 pin PICs which have dedicated lines for
debugging) and loss of some features of the chip. For small PICs
where the loss of IO caused by this method would be unacceptable
special headers are made which are fitted with PICs that have extra
pins specifically for debugging. Some third party debugging solutions
also exist using the on chip facilities provided for the ICD2.
Finally microchip offers
two full in circuit emulators. The MPLAB ICE2000 (parallel interface,
a USB converter is available) and the newer MPLAB ICE4000 (USB interface).
There are also third party emulators from such companies as RF Solutions,
who produce the ICEPIC3 system, these are often lower cost solutions.
Word size
The word size of PICs
is a source of much confusion. All PICs (except dsPICs and PIC24s)
handle data in 8-bit chunks, so they should be called 8-bit microcontrollers.
But unlike most CPUs, PICs use Harvard architecture, so the size
of an instruction can be different from the size of the data. In
fact, different PIC families use different instruction sizes, which
makes it a challenge to compare the code size of PICs to other microcontrollers.
For example, say a microcontroller has 6144 bytes of program memory.
For a 12-bit PIC, this works out to 4096 words (or assembly instructions);
for a 16-bit PIC, this is 3072 words.
Modern PICs
The old PROM and EPROM
PICs are now gradually replaced by chips with Flash memory. Likewise
the original 12-bit instruction set of the PIC1650 and its direct
descendants has been superseded by 14-bit and 16-bit instruction
sets. Microchip still sells OTP (one-time-programmable, or PROM)
and UV-eraseable (EPROM) versions of most of its PICs for legacy
support, or volume orders. It should be noted that the Microchip
website lists PICs that are not electrically erasable as OTP despite
the fact that UV erasable windowed versions of these chips can be
ordered.
Features
Current PICs offer a
wide range of built-in hardware, such as:
- 8/16 bit Modified
Harvard Architecture CPU cores
- Flash and ROM Memory
options in 256 byte to 256 kilobyte array sizes
- I/O Ports (0 to 5.5
volts Typical)
- 8/16 Bit Timers
- Nanowatt Technology
for Power Moding
- Synchronous/Asynchronous
Serial Peripherals USART, AUSART, EUSARTs
- Analog-to-digital
converters, 10/12 bit
- Voltage Comparators
- Capture/Compare/PWM
modules
- LCD Drivers
- MSSP Peripheral for
I²C and SPI Communications
- Internal EEPROM Memory
- up to 1M erase/write cycles durability
- Motor Control Peripherals
- USB interfacing support
- Ethernet controller
support
- CAN controller support
- LIN controller support
- IrDA controller support
- Integrated analog
RF front ends (PIC16F639, and rfPIC)
- KEELOQ Rolling code
encryption peripheral (encode/decode)
- DSP digital signal
processing capabilities (dsPIC)
PICs on the Internet
PICs are well-documented
on the Internet, mainly for two reasons. First, PICs were commonly
used to defeat the security system of popular consumer products
(pay-TV, PlayStation), which attracted the attention of crackers.
Second, the now obsolete PIC16C84 was the first widely available
microcontroller that could easily be re-programmed by hobbyists.
There are many forums and lists concerning PIC microcontrollers
where the user can post questions and receive free answers.
PIC clones
Every now and then there
are companies that offer cheap and/or enhanced PIC versions. Most
seem to disappear quite soon. Ubicom (formerly Scenix) seems to
avoid this fate and produces the SX, a PIC clone that runs much
faster than the original (as of November 2005 Parallax is the exclusive
supplier of the SX). OpenCores has a pic16f84 core written in Verilog.
Wireless PICs
The rfPIC microcontroller
devices integrate the power of Microchip´s PICmicro devices
with UHF wireless communication capabilities for low power RF applications.
The devices offer small package outline and low external component
count to fit the most space-constrained applications.
dsPICs (Digital
Signal PICs)
dsPICs are Microchip's
newest family, which entered mass production in late 2004. They
are designed as a PIC with digital signal processing capabilities.
These are Microchip's first inherent 16-bit (data) microcontrollers.
They build on the PICs existing strengths by offering hardware MAC
(multiply-accumulate), barrel shifting, bit reversal, (16x16)-bit
multiplication and other digital signal processing operations.
8/16-bit PIC
microcontroller product families
These links take you
to product selection matrices at the manufacturer's site.
8-bit Microcontrollers
- PIC10
- PIC12
- PIC14
- PIC16
- PIC17
- PIC18
16-bit Microcontrollers
16-bit Digital
Signal Controllers
The F in a name generally
indicates the PICmicro uses flash memory and can be erased electronically.
A C generally means it can only be erased by exposing the die to
ultraviolet light (which is only possible if a windowed package
style is used).
External links
For more information
visit www.Microchip.com
www.piclist.com
Linux PIC Programmer
Software
PICPrg
A fast Linux command line (or ncurses) program, to program any
Microchip PIC using the PC parallel port interface. Program/verify
PIC data, erase non-protected/protected PIC data or calculate the
PIC checksum.
Also See:
|