Top Banner

Click here to load reader

of 51

Programming PIC Microcontrollers

Oct 26, 2014

ReportDownload

Documents

An introduction to Programming PIC Microcontrollers as presented at CoastNerds user group July 2011. Has basic background into PIC microcontroller programming and electronics.

Programming PIC MicrocontrollersPresented by Robert Dyball

Programming PIC Microcontrollers

Microcontrollers?

And why

PIC? Programming PICs Electronics & Interfacing PICs Putting it all together, where next What are the alternatives?

What are Microcontrollers, what can I use them for?

Microcontrollers may be thought of as a complete computer on a single chip.

What are Microcontrollers, what can I use them for?

Microcontrollers may be thought of as a complete computer on a single chip.

Without a CRT or LCD display (usually)

Why PIC Microcontrollers?

Why PIC Microcontrollers?

Low cost Few other glue components required Low active power use + sleep modes to save power. Many options across hundreds of versions; some have USB or TCP/IP, differing amounts of RAM, ROM and I/O, flash or one time programmable. Product families are often code and/or pin compatible Programmers are very inexpensive Programmable in Assembler or C (free) and a number of other programming languages including Basic.

How do I program PIC Microcontrollers

To program a PIC microcontroller:IDE

Compiled / Assembled Program

Usually transferred in Hex

Programmer

Electrically Connected to Microcontroller

PIC

In Circuit /ICSP

Stand-Alone

Manufactured

ICSP In Circuit Serial Programming

Stand-Alone Programmers

Usually Parallel, RS232 or USB interface Ideally with ZIF socket(s)

ICSP In Circuit Serial Programming

PIC Architecture RISC / Harvard

RISC (as opposed to CISC) typically 35, no more than 80 assembler instructions. Harvard Architecture (not von-Neumann) = separate 8 data memory versus 12/14/16 bit program memory.

PIC Architecture Clocking / Pipelining

Operations execute in one clock cycle (except branches)

How do I program PICs - languages

Internally PIC executes machine code

You need to compile your code to the correct PIC micro (or near equivalent)Many different languages are available. Microchip provide with MPLAB IDE their MPASM (assembler), as well as Microchip C, Microchip HiTech C is also available. Many other 3rd party options including CCS C, CC5X C, GCBasic, Proton Basic, and PIC Basic Pro.

Programming PICs Assembler

MPLABX for Windows, Mac OS X and Linux users or MPLAB for Windows users Start simple, use a simpler, low-end PIC Spacing is important

Programming PICs C

Use MPLAB or MPLABX

Choose a version of C to suit your target PIC

Sensors getting info from the outside

Many I/O Port options:

Digital I/O Ports, D to A ports, + specialised ports including: LIN I2C CAN SPI USB PWM and more

I/O ports the basics

Can be configured for input, output or both = Tristate Input ports can detect a digital (on/off) devices status such as a switch. Output ports can source or sink power (watch current limitations, check the datasheet) Some I/O ports have Analog to Digital converter, A to D check datasheet for no. of ports + no. of bits

LIN Local Interconnect Network Bus

Developed by Freescale along with a number of automotive companies. Uses 1 active wire = very simple and inexpensive.

Data is half-duplex (one way at a time).Speed up to 19.2kbit/s at 40 meter length bus. Commonly used in motor vehicles.

I2C Inter-Integrated Circuit

Developed by Philips, uses 2 active wires: serial data + serial clock= simple and inexpensive. Data is half-duplex (one way at a time)

10kbit/s, 100kbit/sec, 400kbit/sec, 1Mbit/sec, 3.4Mbit/sec high speed transfer lowers range to a meters, but using lower speeds, or with buffering can reach 2001000mCommonly used in embedded devices, such as mobile phones, to connect the displays, buttons and

SPI Serial Peripheral Interface Bus

Developed by Motorola, its a 4-wire bus, comprising serial clock, serial data out, serial data in, chip select.

Full duplex (data can go both ways at once)Speed can be from 1Mbit/sec to 70Mbit/sec Used in motherboards, cell phones, embedded devices.

CAN Controller Area Network

Started as a message based Vehicle Bus standard for automotive applications. Very high noise immunity 40 metres at 1Mbits/sec or 500m at 125kbits/sec

Now also used for industrial automation and medical equipment , as well as some trucks, tractors, aircraft etc.

PWM Pulse Width Modulation

Commonly used for DC motor control, aircraft servos, can also control brightness of lights

USB Universal Serial Bus

What Electronics knowledge do I need?

As little or as much as you want

vs

Basic PIC circuit RC clock

Basic PIC circuit ceramic resonator

Basic PIC circuit ceramic resonator

Interfacing PICs - A to D inputs

Interfacing PICs to sensors, switches

PIC can see a single push of a switch as multiple presses this is known as key bounce, may need to debounce

Interfacing PICs to PCs, Phones

Many ways to interface to PC - USB is one of the easiest - RS232 relatively easy to use, but voltages can be an issue Phones often have RS232

Putting it all together - project ideas, tips

Is your project idea is possible? Try the same principles as we do in Agile software development: - break it down into small do-able pieces - do a research Spike, pick a small task - try to create a Sashimi slice a small vertical layer

Putting it all together - project ideas, tips

Breadboard

Putting it all together - project ideas, tips

Putting it all together - project ideas, tips

Packaging: DIP, DIL, SMD, SOIC

Putting it all together - project ideas, tips

Packaging: DIP, DIL, SMD, SOIC

Putting it all together - project ideas, tips

Ready-made Development Boards:

Putting it all together - project ideas, tips

Breadboard + Development Board:

Putting it all together - project ideas, tips

Development Boards with Breadboard

Putting it all together - project ideas, tips

Look at projects people have already done, it may not be as much fun, but is it simpler to buy something close?

Putting it all together - project ideas, tips

Vehicle OBD-II diagnostics

OBD-II connectors on all new cars, these communicate using CAN protocol

Vehicle OBD-II diagnostics

See: http://sourceforge.net/projects/priidash/

Vehicle OBD-II diagnostics

See: http://sourceforge.net/projects/priidash/

Tired of phones not doing enough?

Add a sensor that reads temperature and pressure See: http://wiki.openmoko.org/wiki/I2C_Pressure_Sensor

So Make your phone work harder!

Add code with some maths + air pressure readings, and get an altimeter as well See: http://wiki.openmoko.org/wiki/I2C_Pressure_Sensor

DIY Protection: An Ultrasonic Nerf-Missile launcher.

One PIC18F4550, an ultrasonic ranging module and a recycled stepper motor See: http://www.steffenschuette.de/steffenschuette/elektronik/us2bRadar/

DIY Protection: An Ultrasonic Nerf-Missile launcher.

See: http://www.steffenschuette.de/steffenschuette/elektronik/us2bRadar/

DIY CNC Router

A PIC microcontroller, open source design, home built hardware See: http://erik-pic-microcontroller.blogspot.com/2010/02/cnc-router-project.html

Security Key Logger

There are numerous projects that might be possible, though the use of them might best be considered very carefully! eg. A key logger with just 3 chips that can secretly log keys and then later retrieve them with a special combination of keys.

Where next

Breadboard + a few components + programmeror

Pre-made development board

What are the alternatives?

More Information

Go to http://www.coastnerds.info

for links to this presentation

Join the Coastnerds Facebook group.