eng-1450 microcontroladores e sistemas embarcadosabranco/eng1450/lab02/lab02.pdf · interrupções...

26
ENG-1450 Microcontroladores e Sistemas Embarcados – Lab02 – Apresentação Kit PicGenios Interrupção e Timers

Upload: hoangkiet

Post on 20-Nov-2018

228 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

ENG-1450Microcontroladores e Sistemas Embarcados

– Lab02 – Apresentação Kit PicGenios

Interrupção e Timers

Page 2: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Atividades

1. Executar tarefas da aula anterior no kit

2. Exemplo1:

1.Acionar o LED por interrupção de botão

3. Exemplo2:

1.Acionar o LED por interrupção de temporizador

Page 3: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Kit PicGenios

● Ver manual PDF: manual_picgenios.pdf

Page 4: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Operação do Kit PicGenios

● Conectar cabo serial– Computador – conector db9 no painel traseiro

– Kit – conector db9 ao lado da “ventoinha”

● Fonte– Conector oposto ao conector serial.

● Programa para carga de código.– WinPic800

Conector Serial

Fonte alimentaçãoCabo serial

Page 5: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

WinPic800

1⁰1⁰ 2⁰2⁰

Page 6: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Interrupções

Page 7: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Interrupção no Microcontrolador

● Mecanismo para interromper a execução do programa principal

● Desvia a execução para um endereço especial

● Retorna para a execução principal no local que tinha interrompido.

Page 8: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Execução da interrrupção

Execuçãoda rotinaprincipal

Execuçãoda rotina deinterrupção

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4

Interrupção

Page 9: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Execução da interrrupção no PIC

Execuçãoda rotinaprincipal

Execuçãoda rotina deinterrupção

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4

Interrupção (High/Low priority)

PIC:High → &000008h → Low → &000018h →

MikroC:void interrupt(void);void interrupt_low(void);

Page 10: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Ajuda do MikroC

Page 11: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Manual do PIC

Tem uma cópia no computador do laboratório e no computador no dia da prova.

Page 12: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Interrupções no PIC (pg 73)

● Externa– INT[0,1,2] (B0,B1,B2)

● Transição em um pino digital: (0 → 1) ou (1 → 0)

– RB (B4 .. B7)● Alguma mudança nos 4 pinos digitais

● Interna– Timer[0,1,2]

– Outros periféricos

● Parallel Slave Port Read/Write● A/D Converter● USART Receive● USART Transmit● Master Synchronous Serial Port● Data EEPROM/FLASH Write Operation● Bus Collision● Low Voltage Detect

Page 13: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Procedimento (pg 75)

● Configurar os registradores relacionados com as interrupções.– INTCON, INTCON2, INTCON3, etc..

– Bits: ● xxxIF – Interrupt Flag ● xxxIE - Interrupt Enable● xxxIP – Interrupt Priority● INTEDGEx – Interrupt Edge Select

● Implementar as funções– void interrupt(void);

– void interrupt_low(void); // se necessário

● A função de interrupção deverá verificar os bits de interrupção (xxxIF==1) para saber qual foi a origem da mesma.

● No final deverá limpar (zerar) o xxxIF.

Page 14: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

INTCON Registers (pag.75)

Page 15: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

PIR Registers (pag.78)

Page 16: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Exemplo: Chave/Int0/B0, Led/D0www.inf.puc-rio.br/~abranco/eng1450/Lab02/Int0.c

// High priority int.function

void interrupt(void){

if (INTCON.INT0IF == 1){

PORTD.RD0 = ~PORTD.RD0;

INTCON.INT0IF=0;

}

}

void main() {

// Global Interrupt Enable

INTCON.GIE = 1;

// Int0/PORTB0 interrupt config

TRISB.RB0 = 1; // digital input

INTCON.INT0IF = 0;

INTCON.INT0IE = 1;

INTCON2.INTEDG0 = 0; // falling edge (1->0)

// Int0 priority is always high

// LED config

TRISD.RD0 = 0; // digital output

PORTD.RD0 = 0; // LED Off

}

Page 17: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

TemporizadoresTimers

Page 18: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Temporizadores no PIC

● Contador programável● Entrada de clock configurável● Pode gerar interrupção no overflow● Exemplo

– Clock = 1Mhz → 1µs– Contador de 16bits– Carregar contador com 55.535 (65.535 – 10000)

– Gera overflow com 10.000 pulsos => 10ms

0xFFFF

Page 19: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Contador/Temporizador

Prescaler Timer/Counter

Data Bus

Timer Overflowinterrupt

InputClock

1:2, 1:4, …, 1:256

Page 20: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Principais pontos de atenção

● Combinação do Prescale x Counter– Prescale pequeno

● Permite passos pequenos (maior resolução)● Limita o tempo máximo● Ex: 0,5µs * 65535 => 65,535ms

– Prescale grande● Possibilita maior tempo máximo● Passo grande (menor resolução)● Ex: 256µs * 65535 => 16,77696 seg

Page 21: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Tempos maiores???

● Combinação: 2 ou mais timers– Combinação variável (Flexível & Complicado)

● Prescale0 + Counter0 + Prescale1 + Counter1

– Relógio: Fixo + variável (Restrito & Fácil)● Fixo: Prescale0 + Counter0 => 1ms● Variável: Prescale1 + Counter1 => X * 1ms● Exemplo: www.inf.puc-rio.br/~abranco/eng1450/Lab02/Timer0_1.c

● Combinação: Timer + Software● Fixo: Prescale0 + Counter0 => 1ms● Contador por software

– Hora, min., seg., ms– Dia, mês, ano

Page 22: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Timers [0...3] no PIC18F(pags. 105, 109, 113, 115)

● Timer0 module: – 8-bit/16-bit timer/counter

– with 8-bit programmable prescaler

● Timer1 module: – 16-bit timer/counter

● Timer2 module: – 8-bit timer/counter

– with 8-bit period register (time-base for PWM)

● Timer3 module: – 16-bit timer/counter

Page 23: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Registradores: Timers 0 & 1

Page 24: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Registradores: Timers 2 & 3

Page 25: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Timer0 + Timer1Timer 0

Timer 1

PORTC.RC0

// Timer 1 ConfigurationT1CON.RD16 = 8; // Read/Write in two 8 bits operT1CON.T1OSCEN = 0; // Disable internal OscilatorT1CON.TMR1CS = 1; // External clock from RC0T1CON.T1SYNC = 1; // Do not synchronize ext clock

Ligação internano PIC.

PORTC.RC0 = ~PORTC.RC0; => Timer0/2

Page 26: ENG-1450 Microcontroladores e Sistemas Embarcadosabranco/eng1450/Lab02/Lab02.pdf · Interrupções no PIC (pg 73) ... Configurar os registradores relacionados com as interrupções

Exemplo: Timer + LEDwww.inf.puc-rio.br/~abranco/eng1450/Lab02/Timer0.c

● Calcular o valor do timer– Scale * (65535 – count) => ???

– Ex: (8MHz / 4 ) / 2 => 1us ... 1000x => 1ms

● Função de interrupção– Testar TMR0IF

– Redefinir TMR0H e TMR0L

– Limpar TMR0IF

● Main()– Configurar Timer0

– Configurar Interrupção do Timer0

– Iniciar o Timer0