Você está na página 1de 29

CAPÍTULO – 2

NÚCLEO CORTEX-M4
- TEXAS INSTRUMENTS -
DETALHES DO CORTEX-M4
Texas Instruments

• Registradores
• Ciclo de FETCH (busca)
• Mapa de memória
• Endereçamento a bits específicos
• Controle de clock do Sistema
PARTE I - REGISTRADORES
Registradores da CPU do CORTEX-M4
• Os registradores são endereços de armazenamento de
alta velocidade dentro do processador.
• R0 a R12 são Registradores de Uso Geral e contêm dados
ou endereços.
• R13 (também chamado o ponteiro de pilha, SP) aponta
para o elemento de topo da pilha.
• R14 (também chamado o registrador de ligação, LR) é
usado para armazenar o local de retorno para as funções.
• R15 (também chamado de contador de programa, PC)
aponta para a próxima instrução a ser obtida a partir da
memória. O processador busca uma instrução usando o
PC e, em seguida, incrementa o PC.
• Registradores Especiais (SR)
REGISTRADORES DE USO GERAL
PARTE II – CICLO DE FETCH
(CICLO DE BUSCA)
Fetch do CORTEX-M4
Pipeline de 3 estágios
Fetch do CORTEX-M4
Pipeline de 3 estágios + Buffer de instruções
PARTE III – MAPA DE MEMÓRIA
Mapa de Memória do CORTEX-M4

• Todos os microcontroladores ARM Cortex M


tem mapas de memória semelhantes.

• Em geral:
– A Flash ROM começa no endereço 0x0000.0000
– A RAM começa no 0x2000.0000
– Os periféricos vão de 0x4000.0000 até 0x400F.FFFF
– Módulos I/O no barramento periférico privado
ocupam os endereços de 0xE000.0000 até
0xE00F.1FFF.
10
Mapa de Memória do CORTEX-M4

11
PARTE IV – ENDEREÇAMENTO A
BITS ESPECÍFICOS
Endereçamento a Bits específicos

• É uma forma flexível para acessar os pinos das portas de I/O.


• Esta abordagem não funciona para todos os registros
• O mecanismo permite o acesso coletivo de 1 até 8 bits em
uma porta de dados.
• As oito constantes são mostrado na Tabela abaixo:

13
Endereçamento a Bits específicos

14
Endereçamento a Bits específicos
Por exemplo, suponha que estamos interessados nos bits 1, 2 e 3
do PORTA

O endereço base para PORTA é: 0x4000.4000


As constantes são: 0x0008, 0x0010 e 0x0020.
A soma de 0x4000.4000 + 0x0008 + 0x0010 + 0x0020 é o
endereço 0x4000.4038

ENTÃO:
• Se lermos a partir do endereço 0x4000.4038, apenas os
estados dos bits 1, 2 e 3 serão devolvidos.
• Se escrevermos neste endereço apenas os bits 1, 2 e 3 serão
modificados.

15
Endereçamento a Bits específicos
Outros exemplos: 1)Usar todos os 8 bits de PORTA.
A soma do endereço base e das constantes dos pinos de 0 à 7
produz o endereço 0x4000.43FC

2) Usar apenas o bit 5 de PORTA.


Somamos 0x4000.4000 com 0x0080 = 0x4000.4080
Em Linguagem C isso é definido assim:
#define PA5 (*((volatile unsigned long *)0x40004080))
Agora, uma simples operação de gravação pode ser utilizada para
setar ou resetar PA5 sem modificar os outros 7 bits de PORTA.

PA5 = 0x20; //Faz PA5=1 Lembrar que 0x20 = 0010 0000


PA5 = 0x00; //Faz PA5=0
16
Questão 1
• O que acontece se nós escrevermos no
endereço 0x4000.4000 (endereço base do
PORTA) ?

17
Questão 1
• O que acontece se nós escrevermos no
endereço 0x4000.4000 (endereço base do
PORTA) ?

Não acontece nada. Como nenhum bit foi


selecionado, nenhuma saída será alterada,
nenhum bit do PORTA será afetado.

18
Questão 2
a) Especifique um #define que permita acessar
os bits 7 e 1 de PORTA.
b) Utilize este #define para fazer PORTA.7=1 e
PORTA.1 = 1
Questão 2
a) Especifique um #define que permita acessar
os bits 7 e 1 de PORTA.
b) Utilize este #define para fazer PORTA.7=1 e
PORTA.1 = 1

#define PA71 (*((volatile unsigned long*) 0x40004208 ))


PA71 = 0x82; //PA71=1000 0010 afeta apenas os bits 1 e 7.
Questão 3
a) Especifique um #define que permite acesso
aos bits 6, 1 e 0 do PORTB.
b) Use este #define para colocar os bits 6, 1 e 0
de PORTB em nível alto.
Questão 3
a) Especifique um #define que permite acesso
aos bits 6, 1 e 0 do PORTB.
b) Use este #define para colocar os bits 6, 1 e 0
de PORTB em nível alto.
O endereço base do PORT B é 0x4000.5000, então:

#define PB610 (*((volatile unsigned long *) 0x4000510C))


PB610 = 0x43; //0x43 = 0100 0011
Questão 4
a) Especifique um #define que permite acesso
aos bits 1, 2 e 3 do PORTF.
b) Coloque separadamente cada um dos bits de
PORTF em nível alto.
Questão 4
a) Especifique um #define que permite acesso
aos bits 1, 2 e 3 do PORTF.
b) Coloque separadamente cada um dos bits de
PORTF em nível alto.
O endereço base do PORTF é 0x4002.5000, então:
#define PF123 (*((volatile unsigned long *) 0x40025038))

PF123 = 0x02; //0x02 = 0000 0010


PF123 = 0x04; //0x04 = 0000 0100
PF123 = 0x08; //0x08 = 0000 1000
PARTE V – CONTROLE DE CLOCK
DO SISTEMA

31
Clock do Sistema

• PIOSC – Precision Internal Oscillator


16 MHz ±1% (25 ºC), ±3% (-40 a +85 ºC)
• MOSC – Main Oscillator – (externo)
5 e 25 MHz (16 MHz na LaunchPad) ±0,1%
• 30 kHz IOSC – Internal Oscillator ±50%

• Hibernation Module Clock Source Oscillator


32768 Hz
32
Clock do Sistema
• A velocidade de execução de um microcontrolador
é determinada por um circuito de oscilação.
• A escolha da frequência envolve um equilíbrio
entre a velocidade de execução de software e de
consumo de energia elétrica.
• Reduzir o clock vai exigir menos energia e gerar
menos calor.
• Acelerar o clock permite mais cálculos por segundo,
ao custo de exigir mais energia para funcionar e
gerar mais calor.

33
Clock do Sistema
• A velocidade do barramento padrão para o
oscilador interno LM4F/TM4C é de 16 MHz ± 1%.
• O oscilador interno é menos preciso do que o
cristal, mas requer menos energia e não precisa de
um cristal externo.
• A placa EK-TM4C123GXL tem um cristal externo de
16 MHz.
• Se quisermos ter um controle preciso do tempo,
vamos ativar o cristal externo (chamado de
oscilador principal) e usar o PLL para selecionar a
velocidade do barramento desejada.
34
Clock do Sistema

35

Você também pode gostar