pic_new_part 1 pic microcontroller systems.pdf

5
03-Jun-11 1 Martin Bates Elsevier 2008 Programming 8-bit PIC Microcontrollers in C This presentation contains illustrations from the book Programming 8-bit PIC Microcontrollers in CPart 1 Microcontroller Systems describes in detail the internal architecture and interfaces available in the PIC 16F887A, a typical PIC chip, as well as outlining the main features of the development system Part 2 C Programming Essentials provides simple example programs for the microcontroller which show the basic principles of C programming, and interfacing to basic I/O devices Part 3 C Peripheral Interfaces provides example programs for operating PIC chips with a full range of peripherals, using timers and interrupts MICROCONTROLLER SYSTEMS Part 1 Figure 1.1 Elements of a digital controller CPU Central Processing Unit Input Peripherals Output Peripherals ROM Read Only Memory RAM Read & Write Memory Program download User input User output The microcontroller contains all these elements in one chip Figure 1.2 16F877 pin-out The microcontroller pins have multiple functions Figure 1.3 PIC 16F877 MCU Block diagram Shows the main parts of the chip in simplified form Flash ROM Program Memory 8192 x 14 bits 0000 – 1FFF Instruction Register MCU control lines Program Counter (13 bits) Stack 13 bits x 8 levels RAM File Registers 368 X 8 bits 000-1FF Data Bus (8 bits) File Select Register Working (W) Register File Address Literal Op- code Instructions Address Arithmetic & Logic Unit Ports, Timers ADC, Serial I/O Status bits Timing control EEPROM 256 bytes Clock Reset Port A B C D E Program address Instruction Decode & CPU control Status (Flag) Register

Upload: lam-nguyen

Post on 26-Oct-2014

165 views

Category:

Documents


2 download

DESCRIPTION

Uploaded from Google Docs

TRANSCRIPT

Page 1: PIC_New_Part 1 PIC Microcontroller Systems.pdf

03-Jun-11

1

Martin BatesElsevier 2008

Programming

8-bit PIC

Microcontrollers

in C

This presentation contains illustrations from the book ‘Programming 8-bit PIC Microcontrollers in C’

Part 1 Microcontroller Systems

describes in detail the internal architecture and interfaces available in the PIC 16F887A, a typical PIC chip, as well as

outlining the main features of the development system

Part 2 C Programming Essentials

provides simple example programs for the microcontroller

which show the basic principles of C programming,and interfacing to basic I/O devices

Part 3 C Peripheral Interfacesprovides example programs for operating PIC chips with a

full range of peripherals, using timers and interrupts

MICROCONTROLLER

SYSTEMS

Part 1

Figure 1.1 Elements of a digital controller

CPU

Central Processing

Unit

InputPeripherals

OutputPeripherals

ROM Read Only

Memory

RAMRead & Write

MemoryProgramdownload

User input

User output

The microcontroller contains all these elements in one chip

Figure 1.2 16F877 pin-out

The microcontroller pins have multiple functions

Figure 1.3 PIC 16F877 MCU Block diagram

Shows the main parts of the chip in simplified form

FlashROM

ProgramMemory

8192 x 14 bits

0000 – 1FFF

Instruction Register

MCUcontrol lines

Program Counter(13 bits)

Stack13 bits

x 8 levels

RAMFile

Registers368

X 8 bits

000-1FF

Data Bus(8 bits)

File Select

Register

Working (W)

Register

File Address

Literal

Op-code

Instructions

Address

Arithmetic & Logic

Unit

Ports, TimersADC, Serial I/O

Status bits

Timing control

EEPROM256 bytes

Clock Reset

Port A B C D E

Program address

Instruction Decode &

CPU control

Status (Flag)

Register

Page 2: PIC_New_Part 1 PIC Microcontroller Systems.pdf

03-Jun-11

2

Table 1.1 PIC16F877 simplified file register map

Bank 0 (000 – 07F) Bank 1 (080 – 0FF) Bank 2 (100-180) Bank 3(180-1FF)

Address Register Address Register Address Register Address Register

000h Indirect 080h Indirect 100h Indirect 180h Indirect

001h Timer0 081h Option 101h Timer0 181h Option

002h PC Low 082h PC Low 102h PC Low 182h PC Low

003h Status Reg 083h Status Reg 103h Status Reg 183h Status Reg

004h File Select 084h File Select 104h File Select 184h File Select

005h Port A data 085h PortA direction 105h - 185h -

006h Port B data 086h PortB direction 106h Port B data 186h PortB direction

007h Port C data 087h PortC direction 107h - 187h -

008h Port D data 088h PortD direction 108h - 188h -

009h Port E data 089h PortE direction 109h - 189h -

00Ah PC High 08Ah PC High 10Ah PC High 18Ah PC High

00Bh Interrupt Control 08Bh Interrupt Control 10Bh Interrupt Control 18Bh Interrupt Control

00Chto

01Fh

20 PeripheralControl

Registers

08Chto

09Fh

20 PeripheralControl

Registers

10Chto

10Fh

4 PeripheralControl

Registers

18Chto

18Fh

4 PeripheralControl

Registers

110hto

16Fh

96 GeneralPurposeRegisters

190hto

1EFh

96 GeneralPurposeRegisters

020hto

06Fh

80 GeneralPurposeRegisters

0A0hto

0EFh

80 GeneralPurposeRegisters

070hto

07Fh

16 CommonAccess GPRs

0F0hto

0FFh

Accesses70h – 7Fh

170hto

17Fh

Accesses70h – 7Fh

1F0hto

1FFh

Accesses70h – 7Fh

Table 1.2 PIC microcontroller types

MCU Pins

Data

word

(bits)

Program

memory

(bytes)

Typical

Instruction

Set

Speed

MIPS Comment

10FXXX= 6 8 <= 512

33 x 12

bits<= 2

Low pin count, small form factor,

cheap

No EEPROM, none low power,

assembler program

12FXXX= 8 8 <= 2 KB 12 / 14 bits <= 5

Low pin count, small form factor,

cheap

EEPROM, 10-bit ADC, some low

power, assembler

16FXXX<= 64 8 <= 14 KB

35 x 14

bits<= 5

Mid-range, UART, I2C, SPI

many low power, C or assembler

program

18FXXXX <=

1008 <= 128 KB

75 x 16

bits<= 16 High range, CAN, USB

J series 3V supply, C program

24FXXXX <=

10016 <= 128 KB

76 x 24

bits = 16Power range, 3V supply, no

EEPROM,

data RAM < 8 KB, C program

Figure 1.4 I/O pin operation

The pin can be set for input or output data transfer

CPU Data Bus OutputCurrentDriver

OutputDataLatch

DataDirection

LatchTri-stateOutputEnable

InputDataLatch

Write data bit

Read data bit

Write TRIS bit

Analogue inputmultiplexer

Figure 1.5 General Timer Operation

A binary counter is used as a timer when driven from the clock

Binary Counter

Pre-scaler(clock divide)

Post-scaler(output divide)

TimerOverflow/Timeout(Interrupt)Flag

ClockSourceSelect

Instruction Clock

External Pulse

Capture register

Compare register

Capture signal

Match flag

Figure 1.6 ADC operation

The ADC converts an analog input into a binary code

ANx

Analogue to Digital

Converter

Vref+

Input volts 0-Vf

Reference volts, Vf8-bit or 16-bitinteger result

Setup ADC

Read ADC

Figure 1.7 Comparator operation

Vc+

Vc-

Compartor status bitVc+ > Vc-

The comparator simply sets a bit if one input is higher than the other

Page 3: PIC_New_Part 1 PIC Microcontroller Systems.pdf

03-Jun-11

3

Figure 1.8 Parallel Slave Port operation

The PSP allows an external data bus to be connected to the MCU

ParallelSlave Port

Chip selectReadWrite

EXTERNALData x 8

Interrupt

INTERNALData x 8

Table 1.3 Interrupts sources in the PIC 16F877

Interrupt Source Interrupt trigger event CCS C Interrupt label

TIMERS

Timer 0 Timer 0 register overflow INT_TIMER0

Timer 1 Timer 1 register overflow INT_TIMER1

CCP 1 Timer 1 capture or compare detected INT_CCP1

Timer 2 Timer 2 register overflow INT_TIMER2

CCP2 Timer 2 capture or compare detected INT_CCP2

PORTS

RB0/INT pin Change on single pin RB0 INT_EXT

Port B pins Change on any of four pins RB4 – RB7 INT_RB

Parallel Slave Port Data received at PSP (write input active) INT_PSP

Analog Converter A/D conversion completed INT_AD

Analog Comparator Voltage compare true INT_COMP

SERIAL

UART Serial Port Received data available INT_RDA

UART Serial Port Transmit data buffer empty INT_TBE

SPI Serial Port Data transfer completed (read or write) INT_SSP

I2C Serial Port Interface activity detected INT_SSP

I2C Serial Port Bus collision detected INT_BUSCOL

MEMORY

EEPROM Non-volatile data memory write complete INT_EEPROM

Program Execution

Program Execution

1

Start counter

statement

2

Run

Counter

untiloverflow

5

Time-out

Process

(InterruptService

Routine)

7

Continue

3

Timeout

Interrupt

6

Return

from

Interrupt

4

Jump to

ISR

Figure 1.9 Timer Interrupt Process

Time-out forces the program to be suspended and the ISR executed

PIC MCU

TX1 Transmit

RX1 Receive

Ground

HOST PC

RX2

TX2COM PORT

Ground

Line

DriverInterface

Figure 1.10 USART RS232 Signal

Line drivers convert the signal to a bipolar, higher voltage

+/- 12V

Figure 1.11 Typical USART RS232 signal

Bit2

Bit3

Idle StartBit

Bit0

Bit1

Bit4

Bit5

Bit6

Bit7

StopBit

Time

1

0

Bit period

The data bits are timed from the falling edge of the start bit

Master

Serial Data Out, SDOSerial Data In, SDISerial Clock, SCK

Slave Select SS1Outputs SS2

SS3

Slave 1

SDOSDISCK

!SS

Slave 2

SDOSDISCK

!SS

Figure 1.12 SPI Connections

SPI uses hardware slave selection and separate clock

Page 4: PIC_New_Part 1 PIC Microcontroller Systems.pdf

03-Jun-11

4

Figure 1.13 SPI Signals

7 6 5 4 3 2 1 0 Data bitsSDO/SDI

SCK Clock

Each data bit is transferred on the falling edge of the clock

Master Slave1 Slave2+5V

SDASCL

etc

Figure 1.14 I2C Connections

Slave selection uses addresses issued by the Master

7 6 5 4 3 2 1 0SDA

SCL

AcknowledgeAddress / Data bits

Start

Figure 1.15 I2C Signals

Data is strobed in using the master clock, and reception

is acknowledged by the slave by taking the data line low

Listing 1.1 A simple C program

/*

OUTBYTE.C MPB 2-1-07 V1.0

*/

#include "16F877A.h" // MCU select

void main() // Main block

{

output_D(255); // Switch on outputs

}

This minimal program outputs a binary code to Port D

Listing 1.2 Program hex file

:1000000000308A0004280000840183131F30830518

:1000100083161F149F141F159F1107309C00880121

:08002000FF3083128800630029

:02400E00733FFE

:00000001FF

;PIC16F877A

The machine code is downloaded as a binary file to the chip

Figure 1.16 Screenshot of MPLAB Project

The C program is compiled and tested in simulation mode

Page 5: PIC_New_Part 1 PIC Microcontroller Systems.pdf

03-Jun-11

5

Figure 1.17 PICkit2 demo system hardware

Basic hardware for downloading the program to a test board

Figure 1.18 ICSP target board connections

Application Board

MCU

Vpp/!MCLRVddVss

PGDPGC

1

234

5

ICSPInterface

Reset

10k

Vdd VssBoard +5V Supply

Connections to the target chip for programming

Figure 1.19 PICkit2 programmer dialogue

On-screen window for program downloading to target chip

Figure 1.20 Microchip ICD2 module

ICD2 provides in-circuit debugging

Figure 1.21 ICD2 program and debug system

Host PCMPLAB

development system

+ C Compiler

ICD2interface

PIC MCUTarget

SystemUSB 6-WAYconnector

Block diagram of the ICD2 programming and in-circuit debugging system

Figure 1.22 ICD debugging windows

User interface for in-circuit programming & debugging