Upload
hoangngoc
View
226
Download
2
Embed Size (px)
Citation preview
Les Elements D’un Microcontôleur
CPU
Central
Processing
Unit
Input
Peripherals
Output
Peripherals
ROM
Read Only
Memory
RAM
Read & Write
MemoryProgram
download
User
input
User
output
Le microcontrôleur contient tous ces éléments dans une seule puce
2
Figure 1.3 PIC 16F877 MCU Block diagram
Présente les principales parties de la puce sous une forme simplifiée
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
Les registres du PIC16F877
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
5
Les types du microcontroller PIC
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
6
I/O pin operation
La broche peut être réglée pour l'entrée ou la sortie de données
CPU Data Bus Output
Current
Driver
Output
Data
Latch
Data
Direction
LatchTri-state
Output
Enable
Input
Data
Latch
Write data bit
Read data
bit
Write TRIS bit
Analogue input
multiplexer
7
Operation du Timer
Un compteur binaire est utilisée comme une horloge lorsqu'il est
entraîné à partir de l'horloge
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
Conversion analogique/numerique ADC
Le ADC convertit une entrée analogique en un code binaire
ANx
Analogue
to Digital
Converter
Vref+
Input volts 0-Vf
Reference volts, Vf8-bit or 16-bit
integer result
Setup ADC
Read ADC
9
Comparateur
Vc+
Vc-
Compartor
status bit
Vc+ > Vc-
Le comparateur établit si une entrée est supérieure à l'autre
10
Opérations sur Port parallèle
La PSP permet à un bus de données externe pour être
connecté à l'unité MCU
Parallel
Slave
Port
Chip select
Read
Write
EXTERNAL
Data x 8
Interrupt
INTERNAL
Data x 8
11
Les sources d’interruptions pour 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_EEPROM12
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
Principe de l’interruption Timer
Force le délai d'expiration que le programme soit suspendu et que le
ISR exécuté 13
PIC MCU
TX1 Transmit
RX1 Receive
Ground
HOST PC
RX2
TX2
COM PORT
Ground
Line
Driver
Interface
Signal USART RS232
Les ”Line Driver” permets de convertir le signal à un bipolaire
avec une tension plus élevée
+/- 12V
14
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
Connections SPI
SPI utilise la sélection matérielle de l’esclave et de l'horloge séparée
15
Master Slave1 Slave2+5V
SDA
SCL
etc
Connections I2C
La sélection de l'esclave utilise des adresses émises par le maître
16
Un programme C simple
#include "16F877A.h" // MCU select
void main() // Main block
{
output_D(255); // Switch on outputs
}
Ce programme minimal envoi un code binaire « 255 » sur le Port D
17