Você está na página 1de 33

UNIDADE 1 - ESTUDO DOS MÓDULOS PERIFÉRICOS

Denny Daniel Collina

Enderson Neves Cruz

John Kennedy Schettino de Souza


Sistemas
Digitais
III

Introdução a Visão Computacional


Powered by Larissa Coutinho, Vinícius Braga, Enderson Neves Cruz 1
Interfaces – Entrada de dados

Sistemas Digitais III


Chave alavanca
ou seletora
Programação C
para MCU (MSP430)

Interrupção

Chave push
bottom
Monitoração de entrada de dados – Espera Ocupada

Monitora por
Muda_estado
espera ocupada

configura IO N
Led Sistemas Digitais III
ligado liga led

Programação C
Botão N
pressionado para MCU (MSP430)
desliga led

Muda_estado
fim
Interrupção

• Função de monitoramento avalia continuamente o estado da chave.


• Caso a chave seja pressionada, a função de tratamento da chave será chamada.(EX01
Espera Ocupada)

• Neste caso, a chamada da função Muda_estado depende do nível lógico na entrada


(sensível ao estado) .
Monitoração de entrada de dados – Interrupção
Monitora por
Trata interrupção
Interrupção

configura IO N
habilita interrupção Led
liga led
ligado Sistemas Digitais III
processo
básico
Programação C
desliga led para MCU (MSP430)

reseta flag de int.


Interrupção

fim

• Função de monitoração NÃO avalia o estado da chave.


• Independente do estado da chave, a função de monitoração NUNCA chamará a função
de tratamento da chave, este procedimento é acionado via hardware. (EX02
Interrupcao)
• Neste caso, a chamada da função Muda_estado depende de uma transição de alto para
baixo na entrada.
Monitoração de entrada de dados – Interrupção
▪ Interrupção consiste em um evento de software ou hardware que provoca um desvio do
fluxo sequencial do programa, de forma que a CPU passa a executar uma função em
resposta ao evento.
Programa em
Execução salva o conteúdo dos
registradores na Sistemas Digitais III
pilha

Programação C
Identifica a origem para MCU (MSP430)
do evento Rotina de
tratamento
ISR (interrupt service
Solicitação
de Obtém o endereço da
routine) Interrupção
interrupção rotina de tratamento
(ISR)

Restaura o conteúdo
dos registradores

▪ Ao término da execução da função, o fluxo do programa retorna ao ponto em que se


encontrava antes da interrupção.
Monitoração de entrada de dados – Interrupção

▪ Fontes de interrupção:
– Eventos software: instrução, ocorrência de overflow, tentativa de executar instrução
não definida, etc.
– Eventos hardware: pedidos dos dispositivos de I/O, assíncronos em relação a CPU, Sistemas Digitais III
falha de alimentação ou erro de paridade em memória.
Programação C
para MCU (MSP430)
▪ As interrupções são usadas para:
– Permitir uma resposta rápida da CPU a um evento específico;
– Minimizar paradas para o processamento/tratamento de outras tarefas. Interrupção

▪ As interrupções possibilitam um tratamento mais eficiente das operações de entrada e


saída, e permitem melhor atender aos requisitos de aplicações em tempo real.
MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Considerando apenas o pino P1.0 configurado como entrada.


MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Lendo a porta com chave NÃO pressionada.


MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Considerando que todos os pinos da porta P1 estejam conectados em um circuito


similar e que fosse pressionado apenas o botão ligado a P1.0.
MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

• Como a CPU leria os dados do registro P1IN?

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Assim como a memória os registros de I/O também tem um endereço associado.


MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• No caso de P1IN (apelido) ele corresponde ao endereço 020H.


• char chaves=P1IN;
MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Suponha que o compilador tenha alocado a variável chaves no registro R4.


MSP430F149 - Monitoração de entrada de dados – Espera Ocupada
Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Suponha que o compilador tenha alocado a variável chaves no registro R4.


MSP430F149 - Monitoração de entrada de dados – Espera Ocupada

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

• Como já estudamos, os terminais de uma porta podem atuar como entrada ou saída, o
que torna necessário mais de um registrador (P1IN e P1OUT) associado a mesma.
MSP430F149 - Monitoração de entrada de dados – Espera Ocupada

• Configurando os I/Os digitais Vcc

em função do hardware.

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

Vcc

Sistemas Digitais III

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Registrando a ocorrência de interrupção. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• P1IFG ➔ Gerando interrupção. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• P1IFG ➔ Gerando interrupção. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• P1IFG ➔ Gerando interrupção. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Porque não foi observada a interrupção até o Vcc


momento?

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Porque não foi observada a interrupção Vcc


até o momento?

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Flexibilizando a lógica de disparo. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção

0
1
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Registros da porta 1. Vcc

P1.0
P1.4

P1.1
P1.2
P1.5
P1.6

P1.3
P1.7
Sistemas Digitais III

Programação C
para MCU (MSP430)

Interrupção
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Registros associado a Porta 1

P1IN - Registrador de Entrada (Input Register): Utilizado para a leitura do estado dos pinos.
Endereço: 20H.
Condição inicial: ?. Sistemas Digitais III

P1OUT - Registrador de Saída (Output Register): Utilizado para escrita de valores nos Programação C
pinos. para MCU (MSP430)
Endereço: 21H.
Condição inicial: 0.

Interrupção
P1DIR - Registrador de Direção (Direction Register): Utilizado para configurar a direção
individual dos pinos da porta, se o pino será utilizado como entrada ou saída.
Bit = 0: Pino configurado como Entrada .
Bit = 1: Pino configurado como Saída.
Endereço: 22H.
Condição inicial: 0.
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Registros associado a Porta 1 (controle de interrupção)


PxIFG - Registrador de Sinalização de Interrupção (Interrupt Flag Register) : Utilizado para
sinalizar a mudança de estado em um dos pinos da porta, indicando interrupção.
Bit = 0: não há interrupção pendente neste pino (0 V).
Bit = 1: há uma interrupção pendente neste pino (+Vcc).
Endereço: 23H.
Sistemas Digitais III
Condição inicial: 0.
Programação C
para MCU (MSP430)
PxIES - Registrador de Seleção de borda a Interrupção (Interrupt Edge Select Register):
Utilizado para controlar a borda de sensibilidade (subida ou descida) a interrupção da porta
Bit = 0: Borda de subida - quando houver uma transição de zero para um no pino (0V para +Vcc).
Bit = 1: Borda de descida - quando houver uma transição de um para zero no pino (+Vcc para 0V). Interrupção
Endereço: 24H.
Condição inicial: 0.

PxIE - Registrador de Habilitação de Interrupção (Interrupt Enable Register): Responsável pela


habilitação da interrupção para os pinos das portas
Bit = 0: interrupções estão desabilitadas neste pino.
Bit = 1: interrupções estão habilitadas neste pino.
Endereço: 25H.
Condição inicial: 0.
MSP430F149 - Monitoração de entrada de dados – Interrupção

• Também são encontrados estes registradores na Porta 2 (MSP430G2553).


• Embora o MSP430F149 e MSP430F1611 possuam 6 portas, somente as portas P1 e P2
permitem a geração de interrupção.

Sistemas Digitais III

Programação C
• Diferenças das técnicas de monitoração de entrada? para MCU (MSP430)

Interrupção
• Quando aplicar uma técnica ou outra?
Monitoração de entrada de dados – Vetor de Interrupção
• O que precisamos fazer para configurar a interrupção associada a um pino do MCU:
1. Configurar como entrada o pino que receberá a informação;
2. Definir se a interrupção será detectada por borda de subida (0) ou descida (1);
3. Limpar flag de interrupção do respectivo pino e
4. Habilitar a interrupção do respectivo pino. Teste desabilitar flag de interrupção (EX02
Sistemas Digitais III
Interrupcao).
Programação C
• O que precisamos fazer para o que sistema consiga tratar a interrupção: para MCU (MSP430)
1. Escrever a função de tratamento da interrupção;
2. Associar a função escrita ao respectivo vetor de interrupção do dispositivo utilizado,
no exemplo pisca_LED_Interrupt, o vetor da Porta2 e Interrupção
3. Na função de tratamento de interrupção, limpar o flag de interrupção do respectivo
pino. Caso esta ação NÃO seja realizada o sistema gerará uma nova interrupção
enquanto este flag não for resetado.
4. Habilitar o flag geral de interrupção (GIE) da CPU. Teste desabilitar flag Geral de
interrupção (EX02 Interrupcao).
Monitoração de entrada de dados – Vetor de Interrupção
• Porque necessito além de habilitar a interrupção do dispositivo (Porta 2), também
habilitar a interrupção geral do sistema (GIE)?

• Interrupções mascaráveis (Maskable Interrupt) – Podem ser habilitadas ou


desabilitadas pelo controle geral de interrupções (GIE). Sistemas Digitais III
• Através de instruções apropriadas pode-se habilitar ou desabilitar uma interrupção
mascarável. Programação C
• Normalmente, habilita-se ou desabilita-se flags específicos de controle de para MCU (MSP430)
interrupção.

• Interrupções não mascaráveis (NMI – Non-Maskable Interrupt) – Não podem ser


Interrupção
habilitadas ou desabilitadas pelo controle geral de interrupções (GIE).
• A interrupção não-mascarável deverá ser sempre atendida, devendo ser reservada
assim, apenas para eventos de alta importância.
• Normalmente, habilita-se ou desabilita-se flags específicos de controle de
interrupção.
Monitoração de entrada de dados – Vetor de Interrupção
• Interrupções não mascaráveis
▪ Podem ser geradas por:
– Um borda de descida/subida no pino RST/NMI, quando este é configurado para o modo NMI;
– Ocorrência de uma falha do oscilador (se habilitado)
Sistemas Digitais III
– Violação de acesso da memória FLASH (se habitado)
▪ Podem ser habilitadas ou desabilitadas por bits específicos no registro IE1: Programação C
– NMIIE: Non-Maskable Interrupts Interrupt Enable (bit4). para MCU (MSP430)
– ACCVIE: ACCess Violation to the flash memory Interrupt Enable (bit5).
– OFIE: Oscillator Fault Interrupt Enable (bit1).
Interrupção
▪ ATENÇÃO: Quando uma interrupção não mascarável é aceita, o correspondente bit de habilitação
é automaticamente resetado, desabilitando novas interrupções para a execução do serviço de
interrupção (ISR).
Monitoração de entrada de dados – Vetor de Interrupção
• Vetores de Interrupção – Localização no mapa de memória

2553 149 1611


Memória Tamanho 16kB 60kB 48kB
Vetor Interrupção FLASH 0XFFFF – 0XFFC0 0XFFFF – 0XFFE0 0XFFFF – 0XFFE0 Sistemas Digitais III
Código FLASH 0XFFFF – 0XC000 0XFFFF – 0X1100 0XFFFF – 0X4000
Programação C
Informação Tamanho 256B 256B 256B para MCU (MSP430)
FLASH 0X10FF – 0X1000 0X10FF – 0X1000 0X10FF – 0X1000
BOOT Tamanho 1kB 1kB
ROM 0X0FFF – 0X0C00 0X0FFF – 0X0C00 Interrupção
RAM Tamanho 512B 2kB 2kB
0X03FF – 0X0200 0X09FF – 0X0200 0X09FF – 0X0200
Periféricos 16-bit 0X01FF – 0X0100 0X01FF – 0X0100 0X01FF – 0X0100
8bit 0X00FF – 0X0010 0X00FF – 0X0010 0X00FF – 0X0010
SFR 0X000F – 0X0000 0X000F – 0X0000 0X000F – 0X0000
Monitoração de entrada de dados – Vetor de Interrupção
• Vetores de Interrupção
▪ São utilizados para o armazenamento dos endereços de memória onde se encontram as funções
que irão fazer o tratamento da respectiva interrupção (EX02 Interrupcao).

Interrupção Flag Tipo Endereço Prioridade


Sistemas Digitais III
Power-up / Reset externo / Watchdog / Memória flash WDTIFG / KEYV (Nota 1) Reset 0FFFEH 15 (maior)

NMI / Falha do oscilador / Violação de acesso flash NMIFG / OFIFG / ACCVIFG (Notas 1 e 3) Não Mascarável 0FFFCH 14

Timer_ B7 BCCIFG0 (veja nota 2) Mascarável 0FFFAH 13


Programação C
Timer_ B7 BCCIFG1 à BCCIFG6 / TBDIFG (Notas1 e 2) Mascarável 0FFF8H 12 para MCU (MSP430)
Comparador_A CMPAIFG Mascarável 0FFF6H 11
Watchdog timer WDTIFG Mascarável 0FFF4H 10
USART0 (recepção) URXIFG0 Mascarável 0FFF2H 9
USART0 (transmissão) UTXIFG0 Mascarável 0FFF0H 8 Interrupção
ADC ADCIFG (Notas 1 e 2) Mascarável 0FFEEH 7
Timer_A3 CCIFG0 (Nota 2) Mascarável 0FFECH 6
Timer_A3 CCIFG1, CCIF2 TAIFG (Notas 1 e 2) Mascarável 0FFEAH 5
Portas de I/O P1 P1IFG0 a P1IFG7 (Notas1 e 2) Mascarável 0FFE8H 4
USART1 (recepção) URXIFG1 Mascarável 0FFE6H 3
USART1 (transmissão) UTXIFG1 Mascarável 0FFE4H 2
Portas de I/O P2 P2IFG0 a P2IFG7 (Notas1 e 2) Mascarável 0FFE2H 1
Mascarável 0FFE0H 0
Questionário
1. Quais são as técnicas de monitoração de entrada estudadas. Fale sobre suas
diferenças e aplicações.
2. O que vetor de interrupção? Como ele é aplicado no tratamento de uma interrupção.
3. Escreva o algoritmo e o respectivo programa que gere uma onda quadrada por meio
do pino P1.2. Em paralelo monitore o estado da chave presente no pino P2.0 e altere
o estado do LED presente no pino P1.0 sempre que for gerada uma borda de descida Sistemas Digitais III
no pino P2.0 (chave pressionada).
A monitoração da chave deve ser realizada por hardware (interrupção), enquanto a Programação C
geração do sinal poderá ser realizada por software (desconsidere a imprecisão do para MCU (MSP430)
período do sinal).
Para o teste da codificação utilize o hardware do exemplo slaa120 (Proteus 8.10).
Interrupção

Você também pode gostar