EL08D - MICROCONTROLADORES 2 2016 – Gabriel Kovalhuk

Propaganda
ARQUITETURA
Curso Técnico de Nível Médio Integrado – Eletrônica - 8o Período
Disciplina de Microcontroladores 2 (EL08D) – 1º Sem @016
Professor Gabriel Kovalhuk
Email: [email protected]
Página pessoal: http://paginapessoal.utfpr.edu.br/kovalhuk
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Arquitetura Von-Neumann
● É a arquitetura tradicional utiliza o mesmo barramento
para fazer a busca a instruções na memória de
programa e para acessar (escrever ou ler) a memória
de dados.
● Ciclo de execução do programa:
(1)Busca instrução (OpCode – Código de operação);
(2)Decodifica instrução;
(3)Executa instrução;
(4)Volta para o passo 1 buscando a instrução seguinte na
memória
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Arquitetura Von-Neumann
BARRAMENTO
DE ENDEREÇOS
MEMÓRIA
(CONTÉM DADOS
E CÓDIGO)
CPU
BARRAMENTO
DE DADOS E CÓDIGO
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Arquitetura Harvard
●Possui barramentos e memória separados para dados e
para programa, podendo ter inclusive tamanho de
dados diferentes;
● A arquitetura Harvard permite a leituras da memória de
código e a leitura/escrita da memória de dados
simultaneamente;
● Mais rápido, mais caro (?), mais complexo (?);
● Como os dados e programas estão separados é possível
que ambos sejam facilmente tratados em paralelo.
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Arquitetura Harvard
MEMÓRIA
DE
PROGRAMA
BARRAMENTO
DE ENDEREÇOS
DO CÓDIGO
BARRAMENTO
DE ENDEREÇOS
DOS DADOS
CPU
BARRAMENTO
DE CÓDIGO
EL08D - MICROCONTROLADORES 2
MEMÓRIA
DE DADOS
BARRAMENTO
DE DADOS
2016 – Gabriel Kovalhuk
ARQUITETURA
Conjunto de Instruções CISC
● CISC : Complex Instruction Set Computer
● Conjunto de instruções ampliado, ou seja, a CPU é
capaz de executar um grande número de
instruções (ex.: microcontrolador 8051, da Intel,
com 256 instruções);
● As instruções não possuem uma forma
padronizada;
● É geralmente associada a computadores com
arquitetura von-Neumann.
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Conjunto de Instruções RISC
● RISC : Reduced Instruction Set Computer
● Conjunto de instruções reduzido (ex.: família PIC,
da Microchip, com 35 instruções, e família
MSP430, da Texas, com 24 instruções emuladas
e 27 instruções físicas);
● A forma das instruções são padronizadas;
● É geralmente associada a computadores com
arquitetura Harvard
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA
Arquitetura do MSP430
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA DO MSP430
Principais Características
● CPU RISC de 16bits, com sistema de clock flexível;
● Sistema de clock com até quatro fontes de clock;
● Arquitetura von-Neumann típica, com um barramento de
dados (MDB) e um barramento de endereços (MAB);
● Periféricos mapeados em memória;
● Possui periféricos digitais e analógicos;
● Núcleo compacto, resultando em baixo consumo de
energia e baixo custo;
● Otimizado para linguagens de alto-nível;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA DO MSP430
Principais Características
● Possui apenas 27 instruções físicas e 24 emuladas;
● Conjunto de instruções ortogonais, onde qualquer modo
de endereçamento pode ser usado para qualquer
instrução, facilitando a tarefa dos compiladores;
● Grande quantidade de periféricos, que vão desde timers e
conversores A/D a controladores de LCD;
● Interface JTAG, facilitando a programação e depuração do
firmware;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA DO MSP430
Principais Características
●
Baixa tensão de operação: funcionam com tensões entre
1,8v e 3,6v;
●
Baixo consumo:
●
cerca de 230uA quando alimentado com 2,2v e com
clock de 1MHz;
●
●
0,5uA no modo standby;
●
0,1uA no modo desligado (apenas mantém os dados da
●
memória RAM) ;
Possui 5 modos de economia de energia;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
ARQUITETURA DO MSP430G2553
Arquitetura da subfamília MSP430G2x53
Não
disponível no
MSP430G2553
●
Fonte: MSP430G2x53 Datasheet (SLAS735J), Texas Instruments.
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
CPU
●
CPU
●
Arquitetura von-Neumann com palavra de 16 bits;
●
Possui 16 registradores internos de 16 bits (R0 a R15),
sendo 4 específicos e 12 de uso geral;
●
Qualquer um dos 16 registradores pode ser usado como
acumulador/destino a qualquer instante;
●
Os registradores são mapeados em memória, nos
endereços 0h a Fh;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
CPU
●
Registradores:
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
CPU
●
Registradores:
●
O registrador R0 é o contador de programa (PC):
●
aponta para a próxima instrução a ser lida da
memória;
●
15
pode endereçar até 64kBytes de memória;
14
13
12
11
PROGRAM COUNTER (PC)
10
7
6
9
8
5
Program Counter Bits 15 to 1
EL08D - MICROCONTROLADORES 2
4
3
2
1
0
0
2016 – Gabriel Kovalhuk
CPU
●
Registradores:
●
O registrador R1 é o apontador de pilha (SP):
●
indica o topo da pilha;
●
a
cada
operação
de
empilhamento
o
SP
é
decrementado de 2
●
A cada operação de desempilhamento o SP é
incrementado de 2;
15
14
13
12
11
STACK POINTER (SP)
10
7
6
9
8
5
Stack Pointer Bits 15 to 1
EL08D - MICROCONTROLADORES 2
4
3
2
1
0
0
2016 – Gabriel Kovalhuk
CPU
●
Registradores:
●
O registrador R2 é dividido em duas partes:
●
os 9 bits menos significativos são usados para indicar
os estados e para controle da CPU (SR – Status
Register);
●
os 7 bits mais significativos são usados como gerador
de constantes, em conjunto com o registrador R3;
15
14
13
12
11
STATUS REGISTER (SR)
10
7
6
9
8
5
Reserved
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
RW-0
V
SCG1
SCG0
RW-0
RW-0
RW-0
EL08D - MICROCONTROLADORES 2
OS
C
OFF
RW-0
4
3
2
1
0
CPU
OFF
GI
E
N
Z
C
RW-0
RW-0
RW-0
RW-0
RW-0
2016 – Gabriel Kovalhuk
CPU
●
Bits de estado e controle do Registrador R2:
●
V (bit 8): indica que uma operação com valores
sinalizados ultrapassou o limite de representação da
variável;
●
SCG1 (bit 7) e SCG0 (bit 6): controle do gerador de
clock interno;
●
OSCOFF (bit 5): controla o oscilador (de clock)
LFXT1 (ativo ou inativo);
●
CPUOFF (bit 4): controla a CPU (ativo ou inativo);
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
CPU
●
Bits de estado e controle do Registrador R2:
●
GIE (bit 3): habilita ou desabilita as interrupções
mascaráveis;
●
N (bit 2): indica um resultado negativo em uma
operação;
●
Z (bit 1): indica que a última operação gerou um
resultado nulo (igual a zero);
●
C (bit 0): indica que a última operação gerou um
carry;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
CPU
●
Os registradores R4 a R15 são registradores de propósito
geral (chamados de GPR) e podem ser usados conforme a
escolha do programador;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
●
Mapa de Memória
●
O espaço de memória, de 64kBytes, é compartilhado entre
memória ROM (FLASH), memória RAM, registradores da
CPU e periféricos;
●
Nem todos os endereços dos 64kBytes são usados, mas
as funções estão sempre na mesma região;
●
Alguns dispositivos possuem um espaço de memória de
128kBytes;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
●
Mapa de Memória
Disponível
apenas nos
dispositivos
com mais de
64 kbytes
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments,
2013;
2016 – Gabriel Kovalhuk
EL08D - MICROCONTROLADORES 2
Mapa de Memória
●
Memória ROM (Flash):
●
O início da memória ROM depende da quantidade de
memória disponível no dispositivo;
●
O fim da memória ROM é sempre em 0xFFFF;
●
Pode ser usado tanto para programa como para dados;
●
O vetor de interrupções está no topo desta área,
ocupando as últimas 16 words;
●
Dispositivos com mais de 64kBytes de memória possuem
uma região de memória ROM (flash) acima do vetor de
interrupções;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
●
Memória RAM:
●
O início da memória RAM é sempre no endereço 0x0200;
●
O fim da memória RAM depende da quantidade de
memória disponível no dispositivo e cresce em direção ao
início da memória flash;
●
Pode ser usado tanto para programa como para dados;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
Periféricos:
●
São mapeados em memória;
●
Periféricos de 16 bits ocupam a faixa de 0x0100 a 0x01FF;
●
Periféricos de 8 bits ocupam a faixa de 0x0010 a 0x00FF;
Registradores de Funções Especiais (SFR):
●
Ocupam a parte mais baixa da memória (de 0x0000 a
0x000F);
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
●
Organização da Memória
●
Bytes são alocados tanto em endereços pares como em
endereços ímpares;
●
Words são alocadas sempre em endereços pares, com a
parte menos significativa armazenada no endereço par e a
parte mais significativa armazenada no endereço ímpar
imediatamente acima;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Mapa de Memória
●
Organização da Memória
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments,
2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
SISTEMA DE CLOCK DO MSP430G2553
Sistema de Clock do MSP430G2553
BCS+
(Basic Clock Sistem Plus)
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
Sistema de Clock (BCS+)
●
BCS = Basic Clock Module;
●
Projetado para permitir o desenvolvimento de sistemas de
baixo custo e baixo consumo de energia;
●
Gera três sinais de clock internos:
●
Permite uma melhor relação entre performance e
consumo de energia;
●
Permite selecionar qual sinal de clock será usado com qual
periférico;
●
Possui até quatro fontes de clock;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
●
LFXT1CLK:
oscilador
de clock de baixa e alta
frequência. Pode usar tanto cristais, ressonadores ou
fontes externas de 32768Hz quanto da ordem de MHz
(0,4 a 16 MHz);
●
XT2CLK: oscilador opcional de alta frequência. Pode
usar cristais, ressonadores ou fontes externas da ordem
de MHz (0,4 a 16 MHz). Não está disponível no
MSP430G2553;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
●
●
DCOCLK: oscilador interno digitalmente controlado:
●
Permite ajustar a sua frequência em até 16MHz;
●
O MSP430G2553 vem pré-ajustado em 1,126MHz;
VLOCLK: oscilador interno de muito baixo consumo e
muito baixa frequência, 12KHz;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sinais de clock:
●
MCLK (Master Clock): clock principal:
●
É usado pela CPU;
●
Pode ser selecionado de qualquer uma das fontes de
clock;
●
●
Sua frequência pode ser dividida de 1, 2, 4 ou 8
SMCLK (sub-main clock): clock “subprincipal”:
●
Possui as mesmas características do clock principal,
mas é destinado aos periféricos;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sinais de clock:
●
ACLK (Auxiliaty Clock): clock auxiliar:
●
É destinado aos periféricos;
●
Pode ser selecionado das fontes de clock LFXT1CLK
ou VLOCLK;
●
Sua frequência pode ser dividida de 1, 2, 4 ou 8
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sistema de clock:
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
DCO
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
LFXT1CLK
No MSP430G2553
não é possível
usar com alta
frequência
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
XT2CLK
Não
disponível no
MSP430G2553
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Fontes de clock:
VLOCLK
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sinais de clock:
Bits SELMx
selecionam qual
será a fonte de
clock
Bits DIVMx
selecionam a
divisão da
frequência
MCLK
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sinais de clock:
Bits SELSx
selecionam qual
será a fonte de
clock
Bits DIVSx
selecionam a
divisão da
frequência
SMCLK
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sinais de clock:
ACLK
Bits DIVAx
selecionam a
divisão da
frequência
selecionam
qual será a
fonte de clock
Fonte: MSP430x2xx Family User's Guide, SLAU144J, Texas Instruments, 2013;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
●
Sistema de clock:
●
Depois do reset, os sinais MCLK e SMCLK vem do
DCOCLK, com uma frequência de ~1,1 MHz e o ACLK
vem do LFXT1CLK no modo de baixa frequência;
●
Os bits SCG0, SCG1, OSCOFF e CPUOFF, do
registrador de status, controlam a habilitação dos sinais
de clock do BCS+;
●
Os registradores DCOCTL, BCSCTL1, BCSCTL2 e
BCSCTL3 configuram o BCS+, inclusive a frequência de
operação do DCO e ativação dos osciladores;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
Registradores do Sistema de clock:
DCOCTL, DCO Control Register
7
6
5
4
3
DCOx
RW-0
●
DCOx
Bits 7-5
●
MODx Bits 4-0
RW-1
2
1
0
RW-0
RW-0
MODx
RW-1
RW-0
RW-0
RW-0
DCO Frequency Select.
Modulator Selection
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
Registradores do Sistema de clock:
BCSCTL 1, Basic Clock System Control Register 1
7
6
XT2
OFF
XTS
RW-0
RW-1
5
4
DIVAx
RW-1
RW-0
3
2
1
0
RSELx
RW-0
RW-0
RW-0
RW-0
●
XT2OFF
Bits 7
Ativa/Desativa o oscilador XT2.
●
XTS
Bits 6
Define o modo do oscilador XT1.
●
DIVAx
Bits 5–4
Define o fator de divisão do sinal
ACLK
●
RSELx
Bits 3 - 0
Seleciona uma frequência numa
faixa de 6 frequências diferentes
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
Registradores do Sistema de clock:
●
Valores predefinidos do DCO:
●
#define CAL_DCO_16MHZ
(0x0000u) /* Index for DCOCTL Calibration Data for 16MHz */
●
#define CAL_BC1_16MHZ
(0x0001u) /* Index for BCSCTL1 Calibration Data for 16MHz */
●
#define CAL_DCO_12MHZ
(0x0002u) /* Index for DCOCTL Calibration Data for 12MHz */
●
#define CAL_BC1_12MHZ
(0x0003u) /* Index for BCSCTL1 Calibration Data for 12MHz */
●
#define CAL_DCO_8MHZ
(0x0004u) /* Index for DCOCTL Calibration Data for 8MHz */
●
#define CAL_BC1_8MHZ
(0x0005u) /* Index for BCSCTL1 Calibration Data for 8MHz */
●
#define CAL_DCO_1MHZ
(0x0006u) /* Index for DCOCTL Calibration Data for 1MHz */
●
#define CAL_BC1_1MHZ
(0x0007u) /* Index for BCSCTL1 Calibration Data for 1MHz */
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Sistema de Clock (BCS+)
Registradores do Sistema de clock:
●
Comando em C:
BCSCTL1 = CAL_BC1_1MHZ;
DCOCTL = CAL_DCO_1MHZ;
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Referência Bibliográfica
●
●
MSP430x2xx Family User's Guide, SLAU144J, Texas
Instruments, 2013;
MSP430G2x53 Datasheet (SLAS735J), Texas Instruments,
2011/2013.
EL08D - MICROCONTROLADORES 2
2016 – Gabriel Kovalhuk
Download