2 microchip pic

28
Microcontrollers 8-bit PIC Microcontroller Systems 1

Upload: trungnghianguyen

Post on 16-Feb-2016

25 views

Category:

Documents


3 download

DESCRIPTION

GioiThieu

TRANSCRIPT

Page 1: 2 Microchip PIC

Mic

roco

ntr

olle

rs

8-bit PIC

Microcontroller

Systems

1

Page 2: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Elements of a digital controller

CPU

Central

Processi

ng

Unit

Input

Peripheral

s

Output

Peripherals

ROM

Read Only

Memory

RAM

Read &

Write

Memory

Program

downloa

d

User

input

User

output

The microcontroller contains all these elements in one chip

2

Page 3: 2 Microchip PIC

Mic

roco

ntr

olle

rs

The microcontroller pins have multiple functions

3

16F877 pin-out

Page 4: 2 Microchip PIC

Mic

roco

ntr

olle

rs

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

4

Parallel Slave Port (PSP)

Microcontrollers MCU

Page 5: 2 Microchip PIC

Mic

roco

ntr

olle

rs

5

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

00Ch

to

01Fh

20 Peripheral

Control

Registers

08Ch

to

09Fh

20 Peripheral

Control

Registers

10Ch

to

10Fh

4 Peripheral

Control

Registers

18Ch

to

18Fh

4 Peripheral

Control

Registers

110h

to

16Fh

96 General

Purpose

Registers

190h

to

1EFh

96 General

Purpose

Registers

020h

to

06Fh

80 General

Purpose

Registers

0A0h

to

0EFh

80 General

Purpose

Registers

070h

to

07Fh

16 Common

Access GPRs

0F0h

to

0FFh

Accesses

70h – 7Fh

170h

to

17Fh

Accesses

70h – 7Fh

1F0h

to

1FFh

Accesses

70h – 7Fh

PIC16F877 simplified file register map

Page 6: 2 Microchip PIC

Mic

roco

ntr

olle

rs

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

<=

100

8

<= 128 KB

75 x 16

bits

<= 16

High range, CAN, USB

J series 3V supply, C program

24FXXXX

<=

100

16

<= 128 KB

76 x 24

bits

= 16

Power range, 3V supply, no

EEPROM,

data RAM < 8 KB, C program

6

Page 7: 2 Microchip PIC

Mic

roco

ntr

olle

rs

I/O pin operation

The pin can be set for input or output data transfer

CPU Data Bus

Output

Current

Driver

Output

Data

Latch

Data

Direction

Latch Tri-state

Output

Enable

Input

Data

Latch

Write data bit

Read data bit

Write TRIS bit

Analogue input

multiplexer

7

TRIS stands for TRIState

Page 8: 2 Microchip PIC

Mic

roco

ntr

olle

rs

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)

Timer

Overflow/

Timeout

(Interrupt)

Flag

Clock

Source

Select

Instruction

Clock

External Pulse

Capture

register

Compare

register

Capture

signal

Match flag

8

Page 9: 2 Microchip PIC

Mic

roco

ntr

olle

rs

ADC operation

The ADC converts an analog input into a binary code

ANx

Analogue

to Digital

Converter

Vref+

Input volts 0-Vf

Reference volts, Vf 8-bit or 16-bit

integer result

Setup ADC

Read ADC

9

Page 10: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Comparator operation

Vc+

Vc-

Compartor

status bit

Vc+ > Vc-

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

10

Page 11: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Parallel Slave Port operation

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

Parallel

Slave

Port

Chip select

Read

Write

EXTERNAL

Data x 8

Interrupt

INTERNAL

Data x 8

11

Page 12: 2 Microchip PIC

Mic

roco

ntr

olle

rs

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

12

Page 13: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Program Execution

Program Execution

1

Start counter

statement

2

Run

Counter

until

overflow

5

Time-out

Process

(Interrupt

Service

Routine)

7

Continue

3

Timeout

Interrupt

6

Return

from

Interrupt

4

Jump to

ISR

Timer Interrupt Process

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

13

Page 14: 2 Microchip PIC

Mic

roco

ntr

olle

rs

PIC MCU

TX1 Transmit

RX1 Receive

Ground

HOST PC

RX2

TX2

COM PORT

Ground

Line

Driver

Interface

USART RS232 Signal

Line drivers convert the signal to a bipolar, higher voltage

+/- 12V

14

Page 15: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Typical USART RS232 signal

Bit

2

Bit

3

Idle Start

Bit

Bit

0

Bit

1

Bit

4

Bit

5

Bit

6

Bit

7

Stop

Bit

Time

1

0

Bit period

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

15

Page 16: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Master

Serial Data Out, SDO

Serial Data In, SDI

Serial Clock, SCK

Slave Select SS1

Outputs SS2

SS3

Slave 1

SDO

SDI

SCK

!SS

Slave 2

SDO

SDI

SCK

!SS

SPI Connections

SPI uses hardware slave selection and separate clock

16

Page 17: 2 Microchip PIC

Mic

roco

ntr

olle

rs

SPI Signals

7 6 5 4 3 2 1 0 Data bits SDO/SDI

SCK Clock

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

17

Page 18: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Master Slave1 Slave2 +5V

SDA

SCL

etc

I2C Connections

Slave selection uses addresses issued by the Master

18

Page 19: 2 Microchip PIC

Mic

roco

ntr

olle

rs

7 6 5 4 3 2 1 0 SDA

SCL

Acknowledge Address / Data bits

Start

I2C Signals

Data is strobed in using the master clock, and reception

is acknowledged by the slave by taking the data line low

19

Page 20: 2 Microchip PIC

Mic

roco

ntr

olle

rs 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

20

Page 21: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Program hex file

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

Page 22: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Screenshot of MPLAB Project

The C program is compiled and tested in simulation mode

22

Page 23: 2 Microchip PIC

Mic

roco

ntr

olle

rs

PICkit2 demo system hardware

Basic hardware for downloading the program to a test board

23

Page 24: 2 Microchip PIC

Mic

roco

ntr

olle

rs

ICSP target board connections

Application Board

MCU

Vpp/!MCLR

Vdd

Vss

PGD

PGC

1

2

3

4

5

ICSP

Interface

Reset

10k

Vdd Vss

Board +5V Supply

Connections to the target chip for programming

24

In-Circuit Serial Programming

http://www.embedinc.com/picprg/icsp.htm

Data (PGD) and clock (PGC)

Page 25: 2 Microchip PIC

Mic

roco

ntr

olle

rs

PICkit2 programmer dialogue

On-screen window for program downloading to target chip

25

Page 26: 2 Microchip PIC

Mic

roco

ntr

olle

rs

Microchip ICD2 module

ICD2 provides in-circuit debugging

26

Page 27: 2 Microchip PIC

Mic

roco

ntr

olle

rs

ICD2 program and debug system

Host PC

MPLAB

development

system

+ C Compiler

ICD2

interface

PIC MCU

Target

System USB 6-WAY

connector

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

27

Page 28: 2 Microchip PIC

Mic

roco

ntr

olle

rs

ICD debugging windows

User interface for in-circuit programming & debugging

28