tutorial interrupcao externa.pdf

Upload: jeferson-carvalho

Post on 09-Feb-2018

215 views

Category:

Documents


0 download

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