Baixe o app para aproveitar ainda mais
Prévia do material em texto
Interrupções e TMR0 Paulo de Tarso Neves Junior Interrupções • Todas as vezes que ocorrem interrupções o programa é desviado imediatamente para o endereço de programa 0x04. • Para saber que tipo de interrupção ocorreu testa-se os flags na ordem de prioridade que o programador desejar. Interrupções e FLAGS Interrupções e FLAGS Interrupções e FLAGS Como tratar as interrupções Ocorreu o evento Chaves de periféricos e individual ligada? Seta flag relativo à interrupção (T0IF, INTF, RBIF, etc...) FIM N Chave geral (GIE) ligada? S N Desliga chave geral (GIE) S Grava endereço de retorno (PC+1) na pilha Desvia para o vetor de interrupção (0x04) 1 - T e s t a r a s f l a g s n a prioridade desejada. 2 - Rotina para tratamento das interrupções. 4 - Limpar as flags tratados. 5 - F inal izar a rot ina com RETFIE.P ar te q ue c ab e ao pr og ra m ad or Retorna ao último endereço guardado na pilha FIM Tipos de interrupção • TMR0: Ocorre no estouro do contador de 8 bits incrementado por ciclo de máquina ou pulso externo. • TMR1: Ocorre no estouro do contador de 16 bits. • TMR2: Ocorre no estouro do contador de 8 bits com prescaler e poscaler. • Sinal externo em RB0: Configurável para borda de subida ou descida. • Mudança de estado em RB4, RB5, RB6 e RB7: Gerada por mudança de estado em qualquer dessas entradas. Tipos de interrupção • Porta paralela (PSP): Escrita ou leitura da porta no modo escravo. • Conversor A/D: Ocorre quando uma conversão A/D é completada. • Recepção da USART: Ocorre ao término da recepção. • Transmissão da USART: Ocorre ao término da transmissão. • Comunicação serial (SPI e I2C): Gerada na transmissão e recepção. Tipos de interrupção • CCP1 (Capture / Compare / PWM): Vinculada ao primeiro sistema CCP. • CCP2 (Capture / Compare / PWM): Vinculada ao segundo sistema CCP. • Escrita de EEPROM / FLASH: Ocorre ao término da escrita da EEPROM ou da FLASH (memória de programa). • Colisão de dados (I2C): Informa ao sistema se ocorreu uma colisão de dados no baramento I2C. • Comparadores: Relacionada à mudança de estado dos comparadores internos. TMR0 – Contador de 8 bits • Configuração de incremento: OPTION_REG <T0CS>. • T0CS = 1: Incremento a cada transição no pino RA4/T0CKI. • T0CS = 0: Incremento a cada ciclo de máquina. • Se o incremento for através de T0CKI é possível selecionar em qual borda causará tal incremento através de OPTION_REG <T0SE>. • T0SE = 1: Incremento na borda de descida. • T0SE = 0: Incremento na borda de subida. • Configuração de frequência do incremento: OPTION_REG <PSA> através do prescaler. • OBS: Em modo SLEEP o TMR0 é desligado. Prescaler • Configuração do prescaler: OPTION_REG <PSA>. • PSA = 1: Prescaler aplicado ao WDT. • PSA = 0: Prescaler aplicado ao TMR0. PS2 PS1 PS0 TMR0 (PSA = 0) WDT (PSA = 1) 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 TMR0 - Diagrama de Blocos Aplicação do Prescaler • Configuração do prescaler: OPTION_REG <PSA>. • PSA = 1: Prescaler aplicado ao WDT. Aplicação do Prescaler • Configuração do prescaler: OPTION_REG <PSA>. • PSA = 0: Prescaler aplicado ao TMR0. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14
Compartilhar