tutorial interrupcao externa.pdf
TRANSCRIPT
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
1/6
[www.denteazul.com.br]
1
3 TUTORIAL PRTICO:INTERRUPO EXTERNA
Interrupo quer dizer que voc ir parar uma situao que ocorre normalmente para
realizar outra de maior urgncia e assim que terminar esta ltima ao retorna para o
que estava fazendo anteriormente. A interrupo externa no microcontrolador
ativada via interface do usurio e pausa o processo que est sendo executado, executauma ao e posteriormente retorna ao processo anteriormente executado.
INTRODUO
A interrupo externa ativada quando um pulso enviado a um pino determinado do
microcontrolador. Este pulso geralmente gerado a partir de um boto que ligado a
uma fonte de tenso (5V) e ligado ao pino do PIC, como mostra a figura.
Ao pressionarmos o boto estaremos conectando o PIC fonte de 5V e como isso
ocorre por alguns milissegundos, chamamos este sinal de pulso. Caso a interrupo
externa esteja ativada no programa do seu microcontrolador, ento ela ser acionada
e a instruo contida dentro da funo interrupo ser executada.
Note que quando se trata de um boto temos duas possibilidades de envio do pulso,
uma quando pressionamos o boto e outra quando o soltamos. Chamamos estas
situaes de borda de subida e borda de descida respectivamente e podemos escolher
em qual momento a interrupo externa ser ativada. A figura abaixo mostra como o
pulso interpretado:
OSC1/CLKIN13
OSC2/CLKOUT14
RB3/PGM 36
RB2 35
RB1 34
RB0/INT 33
MCLR/Vpp/THV1
U1
R11k
VSS
FONTE 5V
www.mecatronicadegaragem.blogspot.com
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
2/6
[www.denteazul.com.br]
2
Borda de subida Borda de descida
ExemploEste exemplo ir mostrar o funcionamento da interrupo externa a partir de um
circuito que muda o estado de um pino quando a interrupo ativada. Neste caso,
toda vez que o programa for direcionado para a interrupo, o LED, ligado ao pino B2
ir mudar de estado lgico (ora aceso, ora apagado).
Note que para se usar a interrupo externa basta adicionar estas instrues ao
cdigo:
#int_EXTvoid EXT_isr(void) {}
E estas instrues devem ser inseridas na void main (){}, elas so necessrias para
ativar a interrupo e para a escolha da borda de subida ou de descida.
enable_interrupts(INT_EXT);enable_interrupts(GLOBAL);ext_int_edge( H_TO_L );
Mas voc no precisa adicionar estas instrues manualmente no seu cdigo, voc
tambm pode, ao criar um novo projeto, escolher a opo de usar a interrupo
externa e o software PIC C ir criar as instrues automaticamente. Siga os passos
abaixo e use o PIC Wizard do PIC C para usar a interrupo externa.
1 Passo: Estando em PIC Wizard no PIC C, v na aba Interrupts como mostra a
figura abaixo:
Nvel lgico baixo
Nvel lgico alto
Nvel lgico baixo
Pulso
www.mecatronicadegaragem.blogspot.com
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
3/6
[www.denteazul.com.br]
3
2 Passo: Marque a caixa denominada External Interrupt e posteriormente v
na aba Code como mostra a figura:
3 Passo: Visualize os cdigos que o programa ir gerar automaticamente
quando se usa a interrupo externa, e depois clique em OK.
www.mecatronicadegaragem.blogspot.com
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
4/6
[www.denteazul.com.br]
4
PROGRAMA EM C (COMPILADOR PIC C CCS)
#include #device adc=8
//configuraes do microcontrolador#FUSES NOWDT //No Watch Dog Timer#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)#FUSES PUT //Power Up Timer#FUSES NOPROTECT //Code not protected from reading#FUSES NOBROWNOUT //No brownout reset#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used forI/O#FUSES NOCPD //No EE protection#FUSES NOWRT //Program memory not write protected#FUSES NODEBUG //No Debug mode for ICD
#use delay(clock=20000000)
//Esta funo faz referncia interrupo externa//Tudo o que est dentro de seu escopo ser realizado quando a interrupo foracionada
#int_EXTvoid EXT_isr(void)
www.mecatronicadegaragem.blogspot.com
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
5/6
[www.denteazul.com.br]
5
{output_toggle(PIN_B2);//Esta funo muda o estado do pino B2
}
//funo principalvoid main(){
setup_adc_ports(NO_ANALOGS);setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);setup_spi(SPI_SS_DISABLED);setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DISABLED,0,1);
enable_interrupts(INT_EXT);//habilita a interrupo externaenable_interrupts(GLOBAL); //habilita qualquer interrupo que existir no
programaext_int_edge( H_TO_L ); //determina se a interrupo externa ocorrer quando se
pressiona o boto ou quando solta o boto
while(1){}}
SIMULAO NO PROTEUS
RA0/AN02
RA1/AN13
RA2/AN2/VREF-4
RA4/T0CKI6
RA5/AN4/SS7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP2 16
RC2/CCP1 17
RC3/SCK/SCL 18
RD0/PSP0 19
RD1/PSP1 20
RB7/PGD 40
RB6/PGC 39
RB5 38
RB4 37
RB3/PGM 36
RB2 35
RB1 34
RB0/INT 33
RD7/PSP7 30RD6/PSP6 29
RD5/PSP5 28
RD4/PSP4 27
RD3/PSP3 22
RD2/PSP2 21
RC7/RX/DT 26
RC6/TX/CK 25
RC5/SDO 24
RC4/SDI/SDA 23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI 15
MCLR/Vpp/THV1
U1
PIC16F877
R11k
R2330
D1LED-GREEN
VSS
VSS
FONTE 5V - MCLR
FONTE 5V
R3
1k
C1
1nF
C2
1nF
X1CRYSTAL
VSS
www.mecatronicadegaragem.blogspot.com
-
7/22/2019 TUTORIAL INTERRUPCAO EXTERNA.pdf
6/6
[www.denteazul.com.br]
6
MONTAGEM
www.mecatronicadegaragem.blogspot.com