interrupções e timers - utfpr

26
Interrupções e timers Guilherme Luiz Moritz 1 1 DAELT - Universidade Tecnológica Federal do Paraná 21 de maio de 2014 Moritz, G.L. Interrupções e Timers

Upload: others

Post on 28-Nov-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Interrupções e timers - UTFPR

Interrupções e timers

Guilherme Luiz Moritz1

1 DAELT - Universidade Tecnológica Federal do Paraná

21 de maio de 2014

Moritz, G.L. Interrupções e Timers

Page 2: Interrupções e timers - UTFPR

Objetivos

Compreender o funcionamento de um display de setesegmentos

Compreender o sistema de interrupções do PIC

Compreender a arquitetura de Timers do PIC

Moritz, G.L. Interrupções e Timers

Page 3: Interrupções e timers - UTFPR

Display de Sete Segmentos

Figura : Display de 7 segmentos (cátodo comum)

Moritz, G.L. Interrupções e Timers

Page 4: Interrupções e timers - UTFPR

Multiplexação de displays de 7 segmentos

Moritz, G.L. Interrupções e Timers

Page 5: Interrupções e timers - UTFPR

74HC4511

Moritz, G.L. Interrupções e Timers

Page 6: Interrupções e timers - UTFPR

Introdução

Vivemos num mundo controlado pelo tempo

Muitas das ações que um microcontrolador toma devemser regradas pelo tempo

O sistema de timers e interrupções provê maneiras domicrocontrolador responder em tempo aos estímulos dosistema

Moritz, G.L. Interrupções e Timers

Page 7: Interrupções e timers - UTFPR

Interrupções

Interrupções

Moritz, G.L. Interrupções e Timers

Page 8: Interrupções e timers - UTFPR

Conceito de interrupção

Uma interrupção de um processador funciona de maneiraanáloga a uma interrupção do mundo real

Num processador, ela é atendida de maneira urgente.

É importante salvar o contexto antes de atender ainterrupção

Moritz, G.L. Interrupções e Timers

Page 9: Interrupções e timers - UTFPR

O que gera uma interrupção no PIC?

Escrita na EEPROM

Comparador

UART RX e TX

Timer 1 (Capture e Match e Overflow)

Timer 2 (Match)

Interrupções externas (GPIO)

Outros chips possuem outras fontes

Moritz, G.L. Interrupções e Timers

Page 10: Interrupções e timers - UTFPR

Como configurar uma interrupção no PIC

INTCON -> Liga ou desliga as diferentes interrupções(mascara)PIE1 -> Peripheral enable IRQsHabilite a geração de interrupção do periférico!

Moritz, G.L. Interrupções e Timers

Page 11: Interrupções e timers - UTFPR

Como configurar uma interrupção no PIC

Figura : Sistemas de interrupção do PIC

Moritz, G.L. Interrupções e Timers

Page 12: Interrupções e timers - UTFPR

O que acontece quando o PIC detecta umainterrupção?

Completa a instrução corrente

Salva o Program Counter

Limpa o GIE

Executa o código na posição correspondente a interrupção(0x0004)

No fim o programa usa uma instrução especial querestaura o Program counter, continuando daonde oprograma parou

Moritz, G.L. Interrupções e Timers

Page 13: Interrupções e timers - UTFPR

O que acontece quando o PIC detecta umainterrupção?

Figura : Ilustração de interrupção do PIC

Moritz, G.L. Interrupções e Timers

Page 14: Interrupções e timers - UTFPR

Salvamento de contexto

O estado dos registradores do PIC devem ser salvos paraexecução da interrupção

O MicroC faz este trabalho

Se for usar assembly, deve ser feito no código

Moritz, G.L. Interrupções e Timers

Page 15: Interrupções e timers - UTFPR

Regiões Críticas

Regiões onde o processador não pode parar para realizaroutra tarefa

Mascaramento de interrupções

Moritz, G.L. Interrupções e Timers

Page 16: Interrupções e timers - UTFPR

Como fazer no MicroC?

void interrupt() {counter++;TMR0 = 96;INTCON = 0x20;

}

Moritz, G.L. Interrupções e Timers

Page 17: Interrupções e timers - UTFPR

Como fazer no MicroC?

void interrupt() {if (INTCON.TMR0IF){counter++;TMR0 = 96;INTCON.TMR0IF = 0;

}else if (INTCON.RBIF){counter++;TMR0 = 96;INTCON.RBIF = 0;

}}

Moritz, G.L. Interrupções e Timers

Page 18: Interrupções e timers - UTFPR

Contadores

Contadores

Moritz, G.L. Interrupções e Timers

Page 19: Interrupções e timers - UTFPR

O que é um contador?

Figura : Contador digital

Moritz, G.L. Interrupções e Timers

Page 20: Interrupções e timers - UTFPR

Usos do contador

Contar tempo [com o auxílio do módulo decapture/compare/pwm (será estudado na aula sobrePWM)]

Contar eventos

Moritz, G.L. Interrupções e Timers

Page 21: Interrupções e timers - UTFPR

Timer1 do PIC

Figura : Timer 1 do PIC16f628A

Olhar datasheet!

Moritz, G.L. Interrupções e Timers

Page 22: Interrupções e timers - UTFPR

Timer 1 - Passo a passo

O Prescaler sempre está ativo: Deve se configurar suataxa (T1CKPS1 e T1CKPS0) no T1CON

Selecione o modo: TMR1CS (0: externo, 1: interno)

Ative T1OSCEN: O oscilador começa a contar e o valor deTMR1H e TMR1L são incremendados a cada ciclo declock

Quando a contagem estoura, a flag TMR1IF é setada (egera uma interrupção caso a mesma esteja configurada)

Moritz, G.L. Interrupções e Timers

Page 23: Interrupções e timers - UTFPR

Outros Timers

Timer 0 - WatchDog timer

Timer 2 - Base de tempo para o PWM e o CCP

Moritz, G.L. Interrupções e Timers

Page 24: Interrupções e timers - UTFPR

Timer 0 do PIC

Figura : Timer 0 do PIC16f628A

Olhar datasheet!Moritz, G.L. Interrupções e Timers

Page 25: Interrupções e timers - UTFPR

Contando tempo com o Timer 0

Tempo de estouro (8bits) = ciclo de máquina * prescaler *(256 - TMR0)Ciclo de máquina = 1

Fosc/4

Prescaler: PS< 2 : 0 >

Valor de contagem é carregado em TMR0

Como fica para o estouro de 16 bits?

Moritz, G.L. Interrupções e Timers

Page 26: Interrupções e timers - UTFPR

Timer 0 - Passo a passo

Selecione o modo do timer no OPTIONREG (T0CS: 0 =timer e 1 = counter)Caso se desejar utilizar o prescaler, o mesmo deve serhabilitado com o bit PSA do OPTIONREG. O valor doprescaler é configurado em PS2-PS0Se a interrupção for utilizada, GIE e T0IE devem serconfigurados no INTCONPara contar tempo

Escreva o valor de TMR0 (condição inicial)Lendo-se TMR0 tem se o número de ciclos passados (oque pode ser convertido em tempo)A flag de interrupção TMR0IF do INTCON é setada todavez que TMR0 estoura.

Para contar pulsosA polaridade dos pulsos em RA4 deve ser selecionada peloTOSE do option regO número de pulsos é contado em TMR0, as interrupçõesfuncionam normalmente

Moritz, G.L. Interrupções e Timers