Sistemas Embarcados
Microcontroladores PIC
Prof. Wanderley
Introdução



Os microcontroladores PIC são dispositivos
fabricados pela Microchip
São de arquitetura RISC com clock de até
40MHz, até 2048kword de memória de
programa e até 3968 bytes de memória RAM
Podem ter até 4 temporizadores/contadores,
memória
EEPROM
interna,
gerador/comparador/amostrador
PWM,
conversores A/D de até 12 bits, interface de
barramento CAN, 12C, SPI entre outros
Introdução



Existem 3 famílias de PICs, de 12, 14 e 16 bits
de memória de programa
Todos possuem barramento interno de dados
de 8 bits
Quanto maior a palavra de programa, maior o
número de instruções
 12 bits = 33 instruções;
 14 bits = 35 instruções;
 16 bits = 77 instruções.
Introdução



Existem 3 famílias de PICs, de 12, 14 e 16 bits
de memória de programa
Todos possuem barramento interno de dados
de 8 bits
Quanto maior a palavra de programa, maior o
número de instruções
 12 bits = 33 instruções;
 14 bits = 35 instruções;
 16 bits = 77 instruções.
Introdução
EXEMPLOS DE CADA FAMÍLIA PIC
12 Bits
14 Bits
16 Bits
12C508
12C671
17C4X
12C509
12C672
17C75X
12CE518
12CE673
17C76X
12CE519
12CE674
18C2XX
16C54
14000
18C4XX
16C55
16C55X
18C858
16C56
16F62X
18F242
16C57
16C7X
18F252
16C58
16F7X
18F258
16C505
16F8X
18F442
16HV540
16F87X
18F877
Introdução


A arquitetura dos PICs é otimizada para a
execução de um pequeno conjunto de
instruções, mas com velocidade muito alta.
Exemplo: PIC da série 16 executa 5 MIPS
(Milhões de Instruções por Segundo) a 20MHz
ou 10 MIPS a 40 MHz.
Introdução

1)
2)
3)
4)
Características Básicas do Desenho interno
dos PICs
Capacidade de Pipeline;
Capacidade de execução de um instrução por
ciclo de máquina (4 ciclos de clock);
Cada instrução ocupa apenas uma posição de
memória de programa;
Tempo de execução fixo para todas as
instruções.
Introdução


Diferentes dispositivos PIC são semelhantes em sua
arquitetura interna, o que facilita a migração entre
microcontroladores.
Os princípios gerais da arquitetura PIC são:
 Registrador de intercâmbio geral, ou registrador de
trabalho (W);
 Registrador de armazenamento de flags (STATUS)
 Registrador de controle de interrupção (INTCON);
 Registrador de manipulação de dados nas portas
(PORT ou GPIO).
Memória de Programa



Nas séries 12, 14 e 16 está embutida na pastilha
Alguns dispositivos das séries 17 e 18 suportam
memórias de programa externas
Tecnologias de implementação de memória de
programa:
 ROM – programada de fábrica;
 OTP (PROM) – Virgens de fábrica;
 EPROM;
 FLASH
– pelo menos 1000 ciclos de
gravação/apagamento.
Memória de Programa
A memória de programa é dividida em blocos ou páginas de 2kWord, devido a
limitações imposta pela estrutura das instruções RISC
0x0000
...
0x0004
...
0x07FF
Vetor de reset
0x0800
...
0x0FFF
Início da página 1
0x1000
...
0x17FF
Início da página 2
0x1800
...
0x1FFF
Início da página 3
Vetor de Interrupção
Página 0
Final da página 0
Página 1
Final da página 1
Página 2
Final da página 2
Página 3
Final da página 3
Memória de Programa

O mecanismo de paginação é transparente ao
usuário
Exemplo:
…
0x07FE MOVF
PORTA,W
0x07FF ADDLW 0x10
0x0800 MOVWF PORTB
0x0801 BCF
INTCON,GIE
…
Memória RAM e Registradores




A RAM é utilizada para abrigar os registradores
internos.
Divide-se em duas partes:
 Para abrigar registradores de funções especiais
(SFR - Special Function Register);
 Para abrigar registradores de propósitos gerais
(GPR – General Purpose Register).
Registradores SFR são utilizados para controlar
periféricos e dispositivos internos, flags de estado do
processador, entre outras funções;
Registradores
GPR
são
utilizados
para
armazenamento temporário de dados do usuário.
Memória RAM e Registradores



Os registradores são muitas vezes referenciados
pela letra f (file register)
A forma de implementação das instruções limita o
endereçamento a um máximo de 7 bits ou 128
registradores
Para contornar tal limitação, criou-se o esquema de
paginação também na memória RAM, de modo que
existem bancos de memória de 128 posições
Memória RAM e Registradores



Alguns registradores SFR podem ser encontrados
em dois ou até mesmo nos quatro bancos de
memória
RAM
(registradores
espelhados),
permitindo a otimização de acesso de registradores
muito usados (STATUS, INTCON, etc.)
Alguns dispositivos PIC permitem o espelhamento
de registradores GPR
Alguns dispositivos permitem ainda espelhamento
completo dos registradores GPR
Memória RAM e Registradores






Registradores SFR de destaque:
STATUS – armazenamento de flags matemáticos e estado da
CPU, além de bits de seleção do banco de memória RAM
INTCON – Controle de interrupções
OPTION_REG – Configurar o funcionamento de alguns
periféricos internos
PORTx – Leitura ou escrita de informações nos pinos
externos
TRISx – Controle da direção de funcionamento de cada pino
da porta
Registrador W

Características:
 Usado como destido em operações lógicas ou aritméticas;
 Não pode ser utilizado como fonte de dados em
operações de CPU (rotação de dados, incremento,
decremento, etc.);
 Não está mapeado na memória RAM;
 Sua utilização principal é como ponte entre registradores f.

NÃO É POSSÍVEL TROCAR DIRETAMENTE INFORMAÇÕES
ENTRE OS REGISTRADORES f.
MOVF (Copia de f para w) e MOVWF (Copia de w para f).

Contador de Programa - PC





Responsável pelo controle da sequência de execução das
instruções
O registrador PC aponta para a próxima instrução a ser
executada pela CPU
PC é dividido é dividido em dois registradores básicos:
 PCL, responsável pelos 8 bits menos significativos;
 PCH, responsável pelos 5 bits mais significativos.
Somente PCL é diretamente acessível, podendo ser lido ou
escrito pelo programa do usuário
PCH pode ser alterado somente por intermédio do registrador
PCLATH
Contador de Programa - PC
A
interação entre os registradores PC, PCL e PCLATH pode
ocorrer de quatro formas distintas:
1) Execução de uma instrução que tem como destino o registrador
PCL
8 7
12
0
PCH
PCL
5
PCLATH
7
8
0
Resultado
da ALU
Contador de Programa - PC
2) Execução de uma instrução GOTO
8 7
12 11
0
PCH
PCL
<4,3>
PCLATH
7
11
Constante
do opcode
0
Os bits 4 e 3 do PCLATH são usados para
seleção de página da memória de programa.
Contador de Programa - PC
3) Execução de uma instrução CALL
8 7
12 11
0
PCH
PCL
13bitsx8
TOPO DA PILHA
<4,3>
PCLATH
7
11
Constante
do opcode
0
Os bits 4 e 3 do PCLATH são usados para
seleção de página da memória de programa.
Contador de Programa - PC
4) Execução de instrução RETURN, RETLW ou REFIE
8 7
12
PCH
0
PCL
13
13bitsx8
TOPO DA PILHA
Pilha
Estrutura de dados com apenas um ponto de acesso (o topo da
pilha)
 A principal função da pilha é armazenar endereços de retorno para
sub-rotinas
 Alguns dispositivos permitem também o armazenamento de dados
de usuário
 Operações básicas:
 PUSH – a CPU armazena informação na pilha;
 POP - a CPU busca informação no topo da pilha.
 A pilha não está localizada na área de memória RAM, e sim em
uma região separada (inacessível diretamente ao usuário) dedicada

Pilha
Normalmente a pilha tem capacidade de 8 palavras do tamanho de
PC.
 O endereço do topo não é acessível ao usuário.
 Utiliza-se uma estrutura de memória LIFO (Last IN – First Out)
circular.
 O programador deve ter muito cuidado para não sobrescrever
dados na pilha.
 Não há instruções para manipulação direta da pilha (isso é feito
inderetamente através das instruções CALL, RETURN, RETLW e
RETFIE).

Interrupções
Interrupção é um evento externo ao programa que provoca:
 A parada da sua execução;
 A verificação e tratamento do referido evento;
 Por fim, o retorno do programa ao ponto em que havia
sido interrompido.
 Existem dois tipos básicos de interrupção:
 Não mascarável – o evento de interrupção é atendido
imediatamente pela CPU;
 Mascarável – o evento de interrupção é atendido pela
CPU desde que não esteja mascarado (o programa defino
o momento em que pode ou não ser interrompido).

Interrupções
No PIC há apenas interrupções mascaráveis com um vetor de
interrupção fixo (endereço 0x0004 na memória de programa).
 Linhas mais antigas do PIC possuem até quatro tipos de
interrupção:
 Interrupção externa (INTF);
 Interrupção por mudança de nível lógico no portb (RBIF);
 Interrupção do timer0 (TOIF);
 Interrupção de periférico (EEPROM – EEIF, conversor A/D
– ADIF).
 Alguns dispositivos de 8 pinos encontramos a interrupção GPIF,
relativa à porta de entrada/saída (GPIO).
Tais interrupções são geralmente controladas pelo registrador
INTCON.

Interrupções
Dispositivos mais novos (onde incluiu-se um maior conjunto de
periféricos) possuem uma nova arquitetura de interrupções.
 Ainda é baseada no registrador INTCON, mas com a adição de
registradores destinados à sinalização e controle das interrupções
dos novos dispositivos.
 A compatibilidade de software com os dispositivos mais antigos foi
mantida.
 As interrupções de periféricos são controladas por 2 registradores:
 PIEx, para controle de habilitação individual das
interrupções dos periféricos;
 PIRx, para sinalização individual dos eventos de
interrupções dos periféricos.

Interrupções
xxIF – flag para
habilitar/desabilitar
interrupção
xxIE –
presença/ausença
de interrupção
Download

Sinais e Sistemas