SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
ORGANIZAÇÃO DE COMPUTADORES
Interrupts and The Timer
ORGANIZAÇÃO DE COMPUTADORES
Este capítulo irá apresentar
o uso de interrupções no
ARM ® Cortex-M4 ® e o
módulo timer. O laboratório
irá utilizar o timer para
gerar interrupções.
Introdução
ORGANIZAÇÃO DE COMPUTADORES
A API Timer fornece um conjunto de
funções de utilização do módulo timer.
As funções são fornecidas para:
• Configurar e controlar o timer;
• Modificar os valores do
temporizador / contador;
• Gerenciar a manipulação de
interrupções.
Introdução
ORGANIZAÇÃO DE COMPUTADORES
• Lida com exceções e interrupções;
• Tem 8 níveis de prioridade programáveis​​ (agrupamento
prioridade)
• 7 exceções e 65 tipos de Interrupções;
• Salva e restaura o estado automático;
• Faz a leitura automática da entrada da tabela de vetor;
• Interrupções Pre-emptive/Nested
• Tail-Chaining;
• Determinista: sempre 12 ciclos ou 6 com tail-chaining.
Cortex M4 - NVIC
ORGANIZAÇÃO DE COMPUTADORES
Interrupt Latency – Tail Chaining
ORGANIZAÇÃO DE COMPUTADORES
Interrupt Latency – Pre - Emption
ORGANIZAÇÃO DE COMPUTADORES
Interrupt Latency - Late Arrival
ORGANIZAÇÃO DE COMPUTADORES
Cortex-M4 Manipulação de Interrupção e
Vetores
Manipulação de interrupção é automático. Não há sobrecarga de instruções.
• Entrada
• Insere automaticamente na pilha os registros R0-R3, R12, LR,
PSR, e PC;
• Em paralelo, ISR são pré-buscadas no “instruction bus”. ISR
pronto para começar a execução tão logo a pilha esteja completa;
• Saída
• Estado do processador é automaticamente restaurado a partir da
pilha;
• Em paralelo, instruções de interrupções são pré-buscadas para
serem executadas após a conclusão do POP na pilha;
ORGANIZAÇÃO DE COMPUTADORES
Tipos de Exceções do Cortex-M4 ®
Tabela 1: Tabela com os tipos de exceção do cortex-M4.
ORGANIZAÇÃO DE COMPUTADORES
Cortex-M4 ® Vector Table
• Depois de reset, a tabela de vetores
está localizada na endereço 0;
• Cada entrada contém o endereço do
função a ser executada;
• O valor no endereço 0x00 é usado
como endereço inicial da Main Stack
Pointer (MSP);
• A tabela de vetores pode ser
realocada para escrita com a instrução
VTABLE register;
• Abra o startup_ccs.c para ver a tabela
de codificação dos vetores.
ORGANIZAÇÃO DE COMPUTADORES
Módulo Timer Geral
• Seis timers de uso geral de 16/32-bit e seis de 32/64-bit;
• Doze pinos para capturar, comparar e PWN de 16/32-bit e doze de
32/64-bit;
• Possui os módulos de Timer:
• One-shot
• Contínuo
• Contagem de borda de entrada ou de captura de tempo com 16
bits
• Geração de PWM
• Relógio de tempo real
• Contagem Up ou Down
• PWM simples
• Suporte para sincronização de timer, daisy-chains, e parando durante
a depuração
• Pode desencadear amostras ADC ou transferências DMA
ORGANIZAÇÃO DE COMPUTADORES
O módulo timer fornece dois
temporizadores/contadores:
• De Meia Largura:
• Podem ser configurados para operar
independentemente como timers ou
contadores de eventos;
• De Largura Total:
• Pode funcionar como um cronômetro
ou no modo Tempo real Clock (RTC).
Módulo Timer Geral
ORGANIZAÇÃO DE COMPUTADORES
Configuração para esta API
Meia Largura Largura Total
16 bits 32 bits
32 bits 64 bits
TimerA TimerB TimerA
ORGANIZAÇÃO DE COMPUTADORES
Um timer pode ser configurado para funcionar como um
Timer One-shot:
• Se configurado no modo one-shot, o cronômetro para
de contar quando ele chega a zero quando a contagem
regressiva ou o valor da carga quando a contagem para
cima.
Timer One-shot
ORGANIZAÇÃO DE COMPUTADORES
Ou pode ser configurado para funcionar como um Timer
Contínuo:
• Se configurado em contínuo modo, o temporizador
conta a zero (contagem regressiva), ou o valor da
carga, então recarrega e continua a contagem.
Timer Contínuo
ORGANIZAÇÃO DE COMPUTADORES
Objetivo
Neste laboratório vamos configurar o timer para gerar
interrupções e, em seguida, escrever o código que responde
a interrupção, piscando o LED. Também vamos experimentar
gerar uma exceção, por tentar configurar um periférico antes
de ter sido ativado.
ORGANIZAÇÃO DE COMPUTADORES
Análise do Código
ORGANIZAÇÃO DE COMPUTADORES
ORGANIZAÇÃO DE COMPUTADORES
Procedimento
1 - Importe o Projeto Lab4.
ORGANIZAÇÃO DE COMPUTADORES
Arquivos de Cabeçalho
2. Incluir os arquivos de cabeçalho necessários para acessar as APIs
StellarisWare:
# include "inc / hw_ints.h"
# include "inc / hw_memmap.h"
# include "inc / hw_types.h"
# include "driverlib / sysctl.h"
# include "driverlib / interrupt.h"
# include "driverlib / gpio.h"
# include "driverlib / timer.h“
ORGANIZAÇÃO DE COMPUTADORES
Arquivos de Cabeçalho
• hw_ints.h: Macros que definem a atribuição de interrupção em
dispositivos Stellaris (NVIC);
• hw_memmap.h: Macros que definem o mapa de memória do dispositivo
Stellaris. Isto inclui definir as regiões periféricas da base de endereços,
por exemplo, GPIO_PORTF_BASE;
• hw_types.h: Define os tipos comuns e as macros, como tBoolean e
HWREG;
• sysctl.h: Definição e macros para o Sistema de Controle de API do
driverLib. Isto inclui as funções da API, como SysCtlClockSet e
SysCtlClockGet;
• interrupt.h: Definição e macros para NVIC Controller (Interrupção) API do
DriverLib. Isso inclui as funções da API, como IntEnable e IntPrioritySet.
• gpio.h: Definição e macros para GPIO API do driverLib. Isso inclui as
funções da API tais como GPIOPinTypePWM e GPIOPinWrite;
• timer.h: Definição e macros para API do timer de driverLib. Isso inclui as
funções da API tais como TimerConfigure e TimerLoadSet.
ORGANIZAÇÃO DE COMPUTADORES
Função main ()
3. Calcular o “timer delays” utilizando a variável Period.
int main (void)
{
unsigned long ulPeriod;
}
ORGANIZAÇÃO DE COMPUTADORES
Configuração do Relógio
4. Configure o relógio do sistema para ser executado em 40MHz com a seguinte
chamada:
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16M
HZ | SYSCTL_OSC_MAIN);
GPIO Configuração
5. Ative o periférico GPIO e defina os pinos conectados para os LEDs como
saídas.
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2
|GPIO_PIN_3);
ORGANIZAÇÃO DE COMPUTADORES
Configuração do Timer
6. Antes de chamar qualquer função específica do periférico driverLib é
necessário ativar o clock. Se isso não for feito irá resultar em uma ISR
Fault (falha de endereço). Adicione as seguintes linhas ao código:
• A segunda declaração configura o timer 0 como um timer de 32 bits.
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
ORGANIZAÇÃO DE COMPUTADORES
Cálculo do Delay
7. Para alternar um GPIO em 10Hz e um ciclo de trabalho de 50%, é
preciso gerar uma interrupção em ½ do período desejado. Em primeiro
lugar, calcular o número de ciclos de relógio necessários para um período
de 10Hz, chamando SysCtlClockGet () e dividindo-o por sua frequência
desejada, em seguida divida por dois, já que queremos uma contagem
que é ½ para a interrupção. Adicione as seguintes linhas ao código:
ulPeriod = (SysCtlClockGet () / 10) / 2;
TimerLoadSet (TIMER0_BASE, TIMER_A, ulPeriod -1);
ORGANIZAÇÃO DE COMPUTADORES
Ativar a Interrupção
8. Ative a interrupção não só no módulo Timer, mas também
no NVIC (The Nested Vector Interrupt Controller, controlador
de interrupção do Cortex M4).
IntEnable (INT_TIMER0A);
TimerIntEnable (TIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntMasterEnable ();
ORGANIZAÇÃO DE COMPUTADORES
Ativar Timer
9. Ative o timer. Isto irá iniciar o timer e as interrupções começará acionando os
tempos de espera. Digite a seguinte linha de código após as anteriores:
TimerEnable (TIMER0_BASE, TIMER_A);
Loop Principal
10. O loop principal do código é simplesmente um tempo vazio (1) uma vez que a
alternância do GPIO vai acontecer na rotina de interrupção. Adicione as seguintes
linhas de código após as anteriores:
while (1)
{
}
ORGANIZAÇÃO DE COMPUTADORES
Timer de Interrupção Handler
11. Adicione um manipulador de interrupção no timer. Antes é necessário limpar a fonte de
manipulação. Adicione as seguintes linhas de código após o encerramento definitivo da
função main():
main (...)
Timer0IntHandler vazio (void)
{
/ / Limpar a interrupção do timer
TimerIntClear (TIMER0_BASE, TIMER_TIMA_TIMEOUT);
/ / Ler o estado atual do pino GPIO e
/ / Escrever de volta o estado oposto
if (GPIOPinRead (GPIO_PORTF_BASE, GPIO_PIN_2))
{
GPIOPinWrite (GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, 0);
}
outro
{
GPIOPinWrite (GPIO_PORTF_BASE, GPIO_PIN_2, 4);
}
}
ORGANIZAÇÃO DE COMPUTADORES
12. Salve o código.
ORGANIZAÇÃO DE COMPUTADORES
Código Startup
13. Abra o arquivo startup_ccs.c. Este arquivo contém a tabela de vetores
discutidos durante a apresentação. Observe a linha comentada com “Timer 0
subtimer A”.
• Quando a interrupção ocorre o NVIC irá procurar o endereço da ISR neste local.
É neste local que o próximo código será executado.
• Você precisa encontrar cuidadosamente a posição apropriada do vetor e
substituir IntDefaultHandler com o nome de seu manipulador de interrupção
ORGANIZAÇÃO DE COMPUTADORES
Você também vai precisar para declarar esta função no topo deste
arquivo como externo. Isto é necessário para o compilador resolver o
símbolo. Encontre a linha que contém:
extern _c_int00 vazio (void);
e adicione:
extern Timer0IntHandler vazio (void);
logo abaixo dela, como mostrado abaixo:
Clique no botão salvar e execute o código.
ORGANIZAÇÃO DE COMPUTADORES
Exceções
15. Encontre a linha de código que ativa o periférico do GPIO
e comente, como mostrado na figura abaixo::
Agora o código vai acessar o periférico sem ativar o relógio.

Contenu connexe

Tendances

Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051
Thiago Oliveira
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducao
edgluc2001
 
Aula 3 - Assembly - 8051
Aula 3 - Assembly - 8051Aula 3 - Assembly - 8051
Aula 3 - Assembly - 8051
Thiago Oliveira
 

Tendances (20)

Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051Aula 1 - Assembly - 8051
Aula 1 - Assembly - 8051
 
Microcontroladores pic
Microcontroladores picMicrocontroladores pic
Microcontroladores pic
 
8085 Introducao
8085 Introducao8085 Introducao
8085 Introducao
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
Resumo assembly x86 16 bits
Resumo assembly x86 16 bitsResumo assembly x86 16 bits
Resumo assembly x86 16 bits
 
Curso microcontroladores pic no mp lab 8
Curso microcontroladores pic no mp lab 8Curso microcontroladores pic no mp lab 8
Curso microcontroladores pic no mp lab 8
 
8085 3
8085 38085 3
8085 3
 
8085 2
8085 28085 2
8085 2
 
Aula 3 - Assembly - 8051
Aula 3 - Assembly - 8051Aula 3 - Assembly - 8051
Aula 3 - Assembly - 8051
 
HC11
HC11HC11
HC11
 
Programando microcontroladores pic março
Programando microcontroladores pic marçoProgramando microcontroladores pic março
Programando microcontroladores pic março
 
Seminario pic
Seminario picSeminario pic
Seminario pic
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Curso clp siemens
Curso clp siemensCurso clp siemens
Curso clp siemens
 
2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
2ª SATEC - SENAI - Arduino + CLP + Maquina de estados2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
2ª SATEC - SENAI - Arduino + CLP + Maquina de estados
 

Similaire à Interrupts and the timer

microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
tccunip
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
engelrfs
 
Clp completa
Clp completaClp completa
Clp completa
panelada
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
Heitor Galvão
 

Similaire à Interrupts and the timer (20)

Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
ARM
ARMARM
ARM
 
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdfmicrocontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
microcontrolador-pic-em-powerpoint-parte-2-interrupcoes-e-timers.pdf
 
Zilog
ZilogZilog
Zilog
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4Pcs2031 projeto01 introducao_pic_v4
Pcs2031 projeto01 introducao_pic_v4
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Introducao clp
Introducao clpIntroducao clp
Introducao clp
 
Introducao clp
Introducao clpIntroducao clp
Introducao clp
 
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdfAA Apresentacao_TIMER0_PIC16F877A_2016.pdf
AA Apresentacao_TIMER0_PIC16F877A_2016.pdf
 
Clp completa
Clp completaClp completa
Clp completa
 
1 história e características dos microcontroladores pic
1 história e características dos microcontroladores pic1 história e características dos microcontroladores pic
1 história e características dos microcontroladores pic
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporais
 
EL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdfEL66J_Slides_arduino.pdf
EL66J_Slides_arduino.pdf
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
 

Plus de Mayara Mônica

Plus de Mayara Mônica (20)

Pronouns and Verb To Be
Pronouns and Verb To BePronouns and Verb To Be
Pronouns and Verb To Be
 
Aprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsAprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em Inglês
 
Saúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresSaúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras Alimentares
 
Biofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioBiofísica do Sistema Respiratório
Biofísica do Sistema Respiratório
 
Tecnologias na Saúde
Tecnologias na SaúdeTecnologias na Saúde
Tecnologias na Saúde
 
Órgãos em Microchips
Órgãos em MicrochipsÓrgãos em Microchips
Órgãos em Microchips
 
Escolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoEscolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do Comportamento
 
Psicologia na Saúde
Psicologia na SaúdePsicologia na Saúde
Psicologia na Saúde
 
Movimento Body Art
Movimento Body ArtMovimento Body Art
Movimento Body Art
 
Bioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleBioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e Pele
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre Bioética
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo Liso
 
Tipologia Textual
Tipologia TextualTipologia Textual
Tipologia Textual
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
 
LZW - Compressão e Descompressão
LZW - Compressão e Descompressão LZW - Compressão e Descompressão
LZW - Compressão e Descompressão
 
MaDKit
MaDKitMaDKit
MaDKit
 
UPPAAL
UPPAALUPPAAL
UPPAAL
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de Software
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software Testing
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário Eletrônico
 

Dernier

421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Dernier (20)

421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
Nós Propomos! Autocarros Elétricos - Trabalho desenvolvido no âmbito de Cidad...
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 

Interrupts and the timer

  • 2. ORGANIZAÇÃO DE COMPUTADORES Este capítulo irá apresentar o uso de interrupções no ARM ® Cortex-M4 ® e o módulo timer. O laboratório irá utilizar o timer para gerar interrupções. Introdução
  • 3. ORGANIZAÇÃO DE COMPUTADORES A API Timer fornece um conjunto de funções de utilização do módulo timer. As funções são fornecidas para: • Configurar e controlar o timer; • Modificar os valores do temporizador / contador; • Gerenciar a manipulação de interrupções. Introdução
  • 4. ORGANIZAÇÃO DE COMPUTADORES • Lida com exceções e interrupções; • Tem 8 níveis de prioridade programáveis​​ (agrupamento prioridade) • 7 exceções e 65 tipos de Interrupções; • Salva e restaura o estado automático; • Faz a leitura automática da entrada da tabela de vetor; • Interrupções Pre-emptive/Nested • Tail-Chaining; • Determinista: sempre 12 ciclos ou 6 com tail-chaining. Cortex M4 - NVIC
  • 5. ORGANIZAÇÃO DE COMPUTADORES Interrupt Latency – Tail Chaining
  • 6. ORGANIZAÇÃO DE COMPUTADORES Interrupt Latency – Pre - Emption
  • 8. ORGANIZAÇÃO DE COMPUTADORES Cortex-M4 Manipulação de Interrupção e Vetores Manipulação de interrupção é automático. Não há sobrecarga de instruções. • Entrada • Insere automaticamente na pilha os registros R0-R3, R12, LR, PSR, e PC; • Em paralelo, ISR são pré-buscadas no “instruction bus”. ISR pronto para começar a execução tão logo a pilha esteja completa; • Saída • Estado do processador é automaticamente restaurado a partir da pilha; • Em paralelo, instruções de interrupções são pré-buscadas para serem executadas após a conclusão do POP na pilha;
  • 9. ORGANIZAÇÃO DE COMPUTADORES Tipos de Exceções do Cortex-M4 ® Tabela 1: Tabela com os tipos de exceção do cortex-M4.
  • 10. ORGANIZAÇÃO DE COMPUTADORES Cortex-M4 ® Vector Table • Depois de reset, a tabela de vetores está localizada na endereço 0; • Cada entrada contém o endereço do função a ser executada; • O valor no endereço 0x00 é usado como endereço inicial da Main Stack Pointer (MSP); • A tabela de vetores pode ser realocada para escrita com a instrução VTABLE register; • Abra o startup_ccs.c para ver a tabela de codificação dos vetores.
  • 11. ORGANIZAÇÃO DE COMPUTADORES Módulo Timer Geral • Seis timers de uso geral de 16/32-bit e seis de 32/64-bit; • Doze pinos para capturar, comparar e PWN de 16/32-bit e doze de 32/64-bit; • Possui os módulos de Timer: • One-shot • Contínuo • Contagem de borda de entrada ou de captura de tempo com 16 bits • Geração de PWM • Relógio de tempo real • Contagem Up ou Down • PWM simples • Suporte para sincronização de timer, daisy-chains, e parando durante a depuração • Pode desencadear amostras ADC ou transferências DMA
  • 12. ORGANIZAÇÃO DE COMPUTADORES O módulo timer fornece dois temporizadores/contadores: • De Meia Largura: • Podem ser configurados para operar independentemente como timers ou contadores de eventos; • De Largura Total: • Pode funcionar como um cronômetro ou no modo Tempo real Clock (RTC). Módulo Timer Geral
  • 13. ORGANIZAÇÃO DE COMPUTADORES Configuração para esta API Meia Largura Largura Total 16 bits 32 bits 32 bits 64 bits TimerA TimerB TimerA
  • 14. ORGANIZAÇÃO DE COMPUTADORES Um timer pode ser configurado para funcionar como um Timer One-shot: • Se configurado no modo one-shot, o cronômetro para de contar quando ele chega a zero quando a contagem regressiva ou o valor da carga quando a contagem para cima. Timer One-shot
  • 15. ORGANIZAÇÃO DE COMPUTADORES Ou pode ser configurado para funcionar como um Timer Contínuo: • Se configurado em contínuo modo, o temporizador conta a zero (contagem regressiva), ou o valor da carga, então recarrega e continua a contagem. Timer Contínuo
  • 16. ORGANIZAÇÃO DE COMPUTADORES Objetivo Neste laboratório vamos configurar o timer para gerar interrupções e, em seguida, escrever o código que responde a interrupção, piscando o LED. Também vamos experimentar gerar uma exceção, por tentar configurar um periférico antes de ter sido ativado.
  • 19. ORGANIZAÇÃO DE COMPUTADORES Procedimento 1 - Importe o Projeto Lab4.
  • 20. ORGANIZAÇÃO DE COMPUTADORES Arquivos de Cabeçalho 2. Incluir os arquivos de cabeçalho necessários para acessar as APIs StellarisWare: # include "inc / hw_ints.h" # include "inc / hw_memmap.h" # include "inc / hw_types.h" # include "driverlib / sysctl.h" # include "driverlib / interrupt.h" # include "driverlib / gpio.h" # include "driverlib / timer.h“
  • 21. ORGANIZAÇÃO DE COMPUTADORES Arquivos de Cabeçalho • hw_ints.h: Macros que definem a atribuição de interrupção em dispositivos Stellaris (NVIC); • hw_memmap.h: Macros que definem o mapa de memória do dispositivo Stellaris. Isto inclui definir as regiões periféricas da base de endereços, por exemplo, GPIO_PORTF_BASE; • hw_types.h: Define os tipos comuns e as macros, como tBoolean e HWREG; • sysctl.h: Definição e macros para o Sistema de Controle de API do driverLib. Isto inclui as funções da API, como SysCtlClockSet e SysCtlClockGet; • interrupt.h: Definição e macros para NVIC Controller (Interrupção) API do DriverLib. Isso inclui as funções da API, como IntEnable e IntPrioritySet. • gpio.h: Definição e macros para GPIO API do driverLib. Isso inclui as funções da API tais como GPIOPinTypePWM e GPIOPinWrite; • timer.h: Definição e macros para API do timer de driverLib. Isso inclui as funções da API tais como TimerConfigure e TimerLoadSet.
  • 22. ORGANIZAÇÃO DE COMPUTADORES Função main () 3. Calcular o “timer delays” utilizando a variável Period. int main (void) { unsigned long ulPeriod; }
  • 23. ORGANIZAÇÃO DE COMPUTADORES Configuração do Relógio 4. Configure o relógio do sistema para ser executado em 40MHz com a seguinte chamada: SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16M HZ | SYSCTL_OSC_MAIN); GPIO Configuração 5. Ative o periférico GPIO e defina os pinos conectados para os LEDs como saídas. SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOF); GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 |GPIO_PIN_3);
  • 24. ORGANIZAÇÃO DE COMPUTADORES Configuração do Timer 6. Antes de chamar qualquer função específica do periférico driverLib é necessário ativar o clock. Se isso não for feito irá resultar em uma ISR Fault (falha de endereço). Adicione as seguintes linhas ao código: • A segunda declaração configura o timer 0 como um timer de 32 bits. SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
  • 25. ORGANIZAÇÃO DE COMPUTADORES Cálculo do Delay 7. Para alternar um GPIO em 10Hz e um ciclo de trabalho de 50%, é preciso gerar uma interrupção em ½ do período desejado. Em primeiro lugar, calcular o número de ciclos de relógio necessários para um período de 10Hz, chamando SysCtlClockGet () e dividindo-o por sua frequência desejada, em seguida divida por dois, já que queremos uma contagem que é ½ para a interrupção. Adicione as seguintes linhas ao código: ulPeriod = (SysCtlClockGet () / 10) / 2; TimerLoadSet (TIMER0_BASE, TIMER_A, ulPeriod -1);
  • 26. ORGANIZAÇÃO DE COMPUTADORES Ativar a Interrupção 8. Ative a interrupção não só no módulo Timer, mas também no NVIC (The Nested Vector Interrupt Controller, controlador de interrupção do Cortex M4). IntEnable (INT_TIMER0A); TimerIntEnable (TIMER0_BASE, TIMER_TIMA_TIMEOUT); IntMasterEnable ();
  • 27. ORGANIZAÇÃO DE COMPUTADORES Ativar Timer 9. Ative o timer. Isto irá iniciar o timer e as interrupções começará acionando os tempos de espera. Digite a seguinte linha de código após as anteriores: TimerEnable (TIMER0_BASE, TIMER_A); Loop Principal 10. O loop principal do código é simplesmente um tempo vazio (1) uma vez que a alternância do GPIO vai acontecer na rotina de interrupção. Adicione as seguintes linhas de código após as anteriores: while (1) { }
  • 28. ORGANIZAÇÃO DE COMPUTADORES Timer de Interrupção Handler 11. Adicione um manipulador de interrupção no timer. Antes é necessário limpar a fonte de manipulação. Adicione as seguintes linhas de código após o encerramento definitivo da função main(): main (...) Timer0IntHandler vazio (void) { / / Limpar a interrupção do timer TimerIntClear (TIMER0_BASE, TIMER_TIMA_TIMEOUT); / / Ler o estado atual do pino GPIO e / / Escrever de volta o estado oposto if (GPIOPinRead (GPIO_PORTF_BASE, GPIO_PIN_2)) { GPIOPinWrite (GPIO_PORTF_BASE, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, 0); } outro { GPIOPinWrite (GPIO_PORTF_BASE, GPIO_PIN_2, 4); } }
  • 30. ORGANIZAÇÃO DE COMPUTADORES Código Startup 13. Abra o arquivo startup_ccs.c. Este arquivo contém a tabela de vetores discutidos durante a apresentação. Observe a linha comentada com “Timer 0 subtimer A”. • Quando a interrupção ocorre o NVIC irá procurar o endereço da ISR neste local. É neste local que o próximo código será executado. • Você precisa encontrar cuidadosamente a posição apropriada do vetor e substituir IntDefaultHandler com o nome de seu manipulador de interrupção
  • 31. ORGANIZAÇÃO DE COMPUTADORES Você também vai precisar para declarar esta função no topo deste arquivo como externo. Isto é necessário para o compilador resolver o símbolo. Encontre a linha que contém: extern _c_int00 vazio (void); e adicione: extern Timer0IntHandler vazio (void); logo abaixo dela, como mostrado abaixo: Clique no botão salvar e execute o código.
  • 32. ORGANIZAÇÃO DE COMPUTADORES Exceções 15. Encontre a linha de código que ativa o periférico do GPIO e comente, como mostrado na figura abaixo:: Agora o código vai acessar o periférico sem ativar o relógio.