Você está na página 1de 43

MICROCONTROLADOR PIC16F628A

Eng. Geraldo Novais


www.geraldonovais.com.br

CAPTULO 1 CONCEITOS BSICOS

www.geraldonovais.com.br

DESCRIO DO DISPOSITIVO

Caractersticas principais:

CPU com 35 instrues RISC Frequncia de operao at 20 MHz Oscilador interno 4MHz / 37 KHz Tenso de operao de 3.0 a 5.5 V 15 pinos de entrada/sada 1 pino de entrada Memria RAM de 224 bytes Memria EEPROM de 128 bytes Memria de programa do tipo FLASH de 2048 x 14 bits 10 fontes de interrupes

Alm disso podemos destacar os seguintes perifricos internos:

2 comparadores analgicos USART mdulo de transmisso/recepo serial 3 Temporizadores controlados por software 1 Temporizador Watchdog 1 Mdulo CCP (Captura de perodo e gerao de sinal PWM)

www.geraldonovais.com.br

Descrio dos pinos

Figura 1 PIC 16F628A

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

Funo
RA2/AN2/Vref RA3/AN3/CMP1 RA4/T0CKI/CMP2 RA5/MCLR/THV Vss RB0/INT RB1/RX/DT RB2/TX/CK RB3/CCP1 RB4/PGM RB5 RB6/T1OSO/T1CK1 RB7/T1OSI VDD RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RA0/AN0 RA1/AN1

Tipo
Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada Alimentao Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada Alimentao Entrada/ Sada Entrada/ Sada Entrada/ Sada Entrada/ Sada

Descrio
Porta A bit 2/ Entrada comparador analgico/ Sada da referncia de tenso. Porta A bit 3/ Entrada comparador analgico/ Sada comparador 1. Porta A bit 4/ Entrada de clock externo do timer 0/ Sada comparador 2. Porta A bit 5/ Reset CPU/ Tenso de programao. Terra. Porta B bit 0/ interrupo externa. Porta B bit 1/ Recepo USART (modo assncrono)/ Dados (modo sncrono). Porta B bit 2/ Transmisso USART / Clock TX Porta B bit 3/ Entrada/sada do mdulo CCP. Porta B bit 4/ Entrada de programao LVP. Porta B bit 5. Porta B bit 6/ Sada oscilador TMR1/ Entrada clock TMR1. Porta B bit 7/ Entrada oscilador TMR1. Alimentao positiva. Porta A bit 6/ Entrada para cristal oscilador/ Sada de clock. Porta A bit 7/ Entrada para cristal oscilador/ Entrada de clock externo. Porta A bit 0/ Entrada comparador analgico. Porta A bit 1/ Entrada comparador analgico.

Tabela 1 - Descrio dos pinos. www.geraldonovais.com.br

ORGANIZAO DA MEMRIA RAM Na figura 2 tem-se o mapa de memria RAM do PIC16F628A, no qual podemos localizar os registradores de uso especial (SFR) e de propsito geral (GPR) e seus respectivos endereos.
Acesso Indireto(*) TMR0 PCL STATUS FSR PORTA PORTB 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h Registradores de Propsito Geral (GPR) 96 Bytes 7Fh Banco 0 Acesso Indireto(*) OPTION PCL STATUS FSR TRISA TRISB 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 8Eh 8Fh 90h 91h 92h 93h 94h 95h 96h 97h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h EFh E0h FFh Acesso Indireto(*) TMR0 PCL STATUS FSR PORTB 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10Ah 10Bh 10Ch 10Dh 10Eh 10Fh Acesso Indireto(*) OPTION PCL STATUS FSR TRISB 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh

PCLATH INTCON PIR1 TMR1L TMR1H T1CON TMR2 T2CON

PCLATH INTCON PIE1 POCN

PCLATH INTCON

PCLATH INTCON

PR2

CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG

TXSTA SPBRG EEDATA EEADR EECON1 EECON2

CMCON VRCON Registradores de Propsito Geral (GPR) 80 Bytes Acessa Endereos 70h a 7Fh Banco 1

11Fh Registradores 120h de Propsito Geral (GPR) 48 Bytes 14Fh 150h 16Fh 170h 17Fh 1EFh 1E0h 1FFh

Acessa Endereos 70h a 7Fh Banco 2

Acessa Endereos 70h a 7Fh Banco 3

Tabela 2 - Mapa de memria RAM www.geraldonovais.com.br

PRINCIPAIS REGISTRADORES

Os registradores da memria RAM so dividos em duas categorias: Registradoes de uso especial (SFR) e os registradores de propsito geral (GPR). Os GPRs so utilizados para as variveis do programa. Ambos os registradores SFR e GPR so chamados de registradores F abreviao de File register.

Em seguida veremos alguns registradores SFR:

PORTA

R/W-X RA7 bit7

R/W-X RA6

R/W-X RA5

R/W-X RA4

R/W-0 RA3

R/W-0 RA2

R/W-0 RA1

R/W-0 RA0 bit0

O registrador PORTA utilizado para a escrita/leitura dos pinos externos da porta A (RA0 a RA7). Cada pino acessado pelo respectivo bit do registrador. Assim o bit 0 do registrador ir acessar o pino RA0 e assim por diante.

PORTB

R/W-X RB7 bit7

R/W-X RB6

R/W-X RB5

R/W-X RB4

R/W-X RB3

R/W-X RB2

R/W-X RB1

R/W-X RB0 bit0

O registrador PORTB utilizado para a escrita/leitura dos pinos externos da porta B (RB0 a RB7). Cada pino acessado pelo respectivo bit do registrador. Assim o bit 0 do registrador ir acessar o pino RB0 e assim por diante.

www.geraldonovais.com.br

STATUS

R/W-0 IRP bit7

R/W-0 RP1

R/W-0 RP0

R/W-1

R/W-1

R/W-X Z

R/W-X DC

R/W-X C bit0

TO

PD

bit 7: bit 6-5:

IRP RP1:RP0 Bits de seleo de banco de memria 00 = Banco 0 01 = Banco 1 10 = Banco 2 11 = Banco 3

bit 4:

TO - Time Out (estouro de tempo)


1 = Temporizador Watchdog ainda no atingiu a contagem final ou uma instruo CLRWDT foi executada. 0 = Watchdog chegou a final da contagem e provocou um reset no processador

bit 3:

PD - Power Down (desligamento)


1 = Estado aps inicializao 0 = Microcontrolador est em modo de baixa potncia (aps instruo SLEEP)

bit 2:

Z - Zero 1 = Resultado de operao lgica ou aritmtica zero. 0 = Resultado de operao lgica ou aritmtica diferente de zero. DC Digit Carry/Borrow (Transbordo de digito/Emprstimo de digito) 1 = Resultado de soma excedeu 4 bits 0 = Resultado de soma no excedeu 4 bits. 1 = No houve emprstimo de bit (resultado positivo) 0 = Houve emprstimo de bit (resultado negativo) C Carry/Borrow (Transbordo /Emprstimo) 1 = Resultado de soma excedeu 8 bits (maior que 255 em decimal) 0 = Resultado de soma no excedeu 8 bits.

bit 1:

bit 0:

www.geraldonovais.com.br

INTCON

R/W-0 GIE bit7

R/W-0 PEIE

R/W-0 T0IE

R/W-0 INTE

R/W-0 RBIE

R/W-0 T0IF

R/W-0 INTF

R/W-X RBIF bit0

bit 7:

GIE Habilitao Global de Interrupes 1 = Poder ocorrer interrupes. 0 = Nenhuma interrupo poder ocorrer (mesmo que alguma interrupo individual esteja habilitada). PEIE Habilitao das interrupes perifricas 1 = Interrupes perifricas habilitadas. 0 = Interrupes perifricas desabilitadas. T0IE Habilitao da interrupo de transbordo do Timer0 1 = Interrupo de transbordo do Timer0 ligada. 0 = Interrupo de transbordo do Timer0 desligada. INTE Habilitao da interrupo externa (RB0/INT) 1 = Interrupo externa habilitada. 0 = Interrupo externa desabilitada. RBIE Habilitao de interrupo por mudana de estado na porta B (pinos RB4 a RB7) 1 = Interrupes por mudana na porta B habilitada. 0 = Interrupes por mudana na porta B desabilitada. T0IF Flag sinalizador de estouro do timer 0 1 = Ocorreu transbordo do timer 0 (Contagem superou 255). 0 = A contagem no superou 255. INTF Flag sinalizador de interrupo externa (RB0/INT) 1 = Ocorreu pedido externo de interrupo 0 = No ocorreu pedido externo de interrupo RBIF Flag sinalizador de alterao nos pinos RB4 a RB7 1 = Houve alterao. 0 = No houve alterao. www.geraldonovais.com.br

bit 6:

bit 5:

bit 4:

bit 3:

bit 2:

bit 1:

bit 0:

TRISA

R/W-1 TRISA7 bit7

R/W-1 TRISA6

R/W-1 TRISA5

R/W-1 TRISA4

R/W-1 TRISA3

R/W-1 TRISA2

R/W-1 TRISA1

R/W-1 TRISA0 bit0

Esse registrador utilizado para determinar quais pinos da Porta A so entrada e quais so sada. Se o bit do registrador TRISA estiver em nvel lgico 1, o pino estar configurado como entrada. Caso contrrio, se estiver em nvel lgico 0, o pino estar configurado como sada. Por exemplo, se o bit 0 do registrador TRISA estiver em nvel lgico 0, significa que o pino RA0 est cofigurado como sada.

TRISB
R/W-1 TRISB7 bit7 R/W-1 TRISB6 R/W-1 TRISB5 R/W-1 TRISB4 R/W-1 TRISB3 R/W-1 TRISB2 R/W-1 TRISB1 R/W-1 TRISB0 bit0

Esse registrador utilizado para determinar quais pinos da Porta B so entrada e quais so sada. Se o bit do registrador TRISB estiver em nvel lgico 1, o pino estar configurado como entrada. Caso contrrio, se estiver em nvel lgico 0, o pino estar configurado como sada. Por exemplo, se o bit 0 do registrador TRISB estiver em nvel lgico 0, significa que o pino RB0 est cofigurado como sada.

www.geraldonovais.com.br

PIR1

R/W-0 EEIF bit7

R/W-0 CMIF

R/W-0 RCIF

R/W-0 TXIF

U -

R/W-0 CCP1IF

R/W-0 TMR2IF

R/W-0 TMR1IF bit0

bit 7:

EEIF Sinalizador de termino de escrita na EEPROM 1 = A escrita terminou. 0 = A escrita ainda no terminou ou no foi iniciada.. CMIF Sinalizador de mudana de estado na sada dos comparadores 1 = Houve mudana na sada dos comparadores. 0 = No houve mudana de estado. RCIF Sinalizador de recepo de caracter na USART 1 = Um novo caracter foi recebido. 0 = No houve recepo de novos caracteres. TXIF Sinalizador de transmisso na USART 1 = Caracter armazenado no TXREG foi repassado para o TSR 0 = No ouve transmisso ou o TSR est ocupado. CCP1IF Sinalizador captura/comparao no mdulo CCP 1 = No houve comparao vlida/captura no mdulo CCP. 0 = Houve comparao /captura no mdulo CCP. TMR2IF Sinalizador de transbordo do timer 2 1 = Houve transbordo de contagem do timer 2. 0 = No houve transbordo de contagem do timer 2. TMR1IF Sinalizador de transbordo do timer 1 1 = Houve transbordo de contagem do timer 1. 0 = No houve transbordo de contagem do timer 1.

bit 6:

bit 5:

bit 4:

bit 3:

bit 2:

bit 1:

www.geraldonovais.com.br

PIE1

R/W-0 EEIE bit7

R/W-0 CMIE

R/W-0 RCIE

R/W-0 TXIE

U -

R/W-0 CCP1IE

R/W-0 TMR2IE

R/W-0 TMR1IE bit0

bit 7:

EEIE Habilitao de interrupo por termino de escrita na EEPROM 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. CMIE Habilitao de interrupo de mudana de estado na sada dos comparadores 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. RCIE Habilitao de interrupo de recepo de dados na USART 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. TXIE Habilitao de interrupo de transmisso da USART 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. CCP1IE Habilitao de interrupo do mdulo CCP 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. TMR2IE Habilitao de interrupo de transbordo do timer 2 1 = Interrupo habilitada. 0 = Interrupo desabilitada.. TMR1IE Habilitao de interrupo de transbordo do timer 1 1 = Interrupo habilitada. 0 = Interrupo desabilitada.

bit 6:

bit 5:

bit 4:

bit 3:

bit 2:

bit 1:

www.geraldonovais.com.br

PCON

U bit7

U -

U -

U -

R/W-1 OSCF

U -

R/W

R/W

POR

BOD
bit0

bit 3:

OSCF Bit de seleo do modo de operao do oscilador interno 1 = Clock de 4MHz. 0 = Clock de 37KHz.

bit 1:

POR Sinalizador de reset de inicializao (Power-on reset)


1 = Houve um reset de inicializao. 0 = No houve reset de inicializao.

bit 0:

BOD Sinalizador de reset por queda de tenso (Brown-out)


1 = Houve reset por queda de tenso de alimentao. 0 = No houve reset por queda de tenso de alimentao.

Registrador W

Esse no um registrador SFR. O mesmo possui caracteristicas peculiares, tais como:

Pode ser utilizado como destino de diversas operaes aritmticas e lgicas. No est mapeado na memria RAM do PIC. utilizado principalmente como ponte entre registradores de uso especfico. No possivel trocar diretamente informaes entre os registradores f. A nica forma de fazer isso copiando o contedo do registrador f de origem para o registrador W e em seguida copiar o contedo de W para o registrador f de destino.

Exemplo:

MOVF MOVWF

PORTA, W ALARME_IN

;move o contedo de PORTA para o reg. W ;move o contedo de W para a varivel ALARME_IN www.geraldonovais.com.br

MEMRIA DE PROGRAMA

O PIC16F628A possui 2 Kword de memria de programa do tipo FLASH. Esse tipo de memria permite um minimo de 1000 ciclos de gravao/apagamento, sendo indicada tanto para a fase de desenvolvimeto e teste. Os dispositivos FLASH so indicados pela letra F.

Vetor de reset

000h

Vetor de interrupo

004h 005h 7FFh

Figura 2 Memria de programa

O vetor de interrupo o endereo de memria para onde o processador desviado quando ocorre um evento de interrupo. O conceito de interrupes ser abordado no final desse material.

www.geraldonovais.com.br

CONJUNTO DE INSTRUES

Instruo Argumentos
ADDWF ANDWF CLRF COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF RLF RRF SUBWF SWAPF XORWF f,d f,d f f,d f,d f,d f,d f,d f,d f,d f f,d f,d f,d f,d f,d

Descrio
Soma W e F, guardando o resultado em d. Lgica "E"entre W e f, guardando o resultado em d. Limpa f. Calcula o complemento de f, guardando o resultado em d. Decrementa f, guardando o resultado em d. Decrementa f, guardando o resultado em d, e pula a prxima linha se o resultado for zero. Incrementa f, guardando o resultado em d. Incrementa f, guardando o resultado em d, e pula a prxima linha se o resultado for zero. Lgica "OU" entre W e f, guardando o resultado em d. Move f para d(copia ). Move W para f (copia ). Rotaciona f 1 bit para esquerda. Rotaciona f 1 bit para direita. Subtrai W de f (f - W ), guardando o resultado em d. Inverso entre as partes alta e baixa de f, guarda resultado em d OU exclusivo entre W e f, guardando o resultado em d.

Tabela 3 Instrues orientadas byte Instruo


BCF BSF BTSFC BTFSS

Argumentos
f,b f,b f,b f,b

Descrio
Zera o bit b do registrador f. Impe 1 ao bit b do registrador f. Testa o bit b do registrador, e pula a prxima linha se ele for 0. Testa o bit b do registrador, e pula a prxima linha se ele for 1.

Tabela 4 - Instrues orientadas a bit. Instruo


ADDLW ANDLW IORLW MOVLW SUBLW XORLW

Argumentos
k k k k k k

Descrio
Soma k com W, guardando o resultado em W. Lgica "E "entre k e W, guardando o resultado em W. Lgica "OU" entre k e W, guardando o resultado em W. Move k para W. Subtrai W de k(k - W), guardando o resultado em W. Lgica "OU exclusivo" entre k e W, guardando o resultado em W.

Tabela 5 - Instrues com constantes.

www.geraldonovais.com.br

Instruo
CLRW NOP CALL CLRWDT GOTO RETFIE RETLW RETURN SLEEP

Argumentos Descrio
R R k Limpa W. Gasta um ciclo de mquina sem fazer nada. Executa a rotina R. Limpa o registrador WDT para no acontecer o reset. Desvia para o ponto R, mudando o PC. Retorna de uma interrupo. Retorna de uma rotina, com k em W. Retorna de uma rotina, sem afetar W. Coloca o PIC em mdulo Sleep para economia de energia.

Tabela 6 - Instrues de controle.

CICLO DE INSTRUO

Um ciclo de instruo consiste em quatro ciclos de clock. Ou seja, se temos um clock de 4MHz ento temos uma velocidade de execuo de um milho de instrues por segundo. Com exceo das intruses de desvio que podem ser executadas com o oito ciclos de clock.

www.geraldonovais.com.br

INTERRUPES

Interrupo um evento externo ao programa que provoca a parada da sua execuo, a verificao e tratamento do referido evento e em seguida o retorno do programa ao ponto em que havia sido interrompido. As estruturas de interrupo so utilizadas para que a CPU tome conhecimento de eventos de alta prioridade para o programa. 1. Interrupo externa 2. Interrupo por mudana de estado no PORTB 3. Interrupo de escrita na EEPROM 4. Interrupo do Timer0 5. Interrupo do Timer1 6. Interrupo do Timer2 7. Interrupo do mdulo CCP 8. Interrupo de transmisso da USART 9. Interrupo de recepo da USART 10. Interrupo do mdulo comparador analgico Para cada fonte de interrupo existem dois bits associados um bit que sinaliza se a interrupo pode ocorrer e outro que sinaliza o pedido de interrupo. Por exemplo, para o Timer0 tem-se os seguintes bits: T0IF (Timer0 Interrupt Flag ) Sinaliza um pedido de interrupo quando est em nvel lgico 1. T0IE (Timer0 Interrupt Enable ) Sinaliza que a interrupo pode ocorrer se o mesmo estiver em nvel lgico 1.

www.geraldonovais.com.br

Conforme pode-se ver na figura 2, cada sinal de controle de interrupo (representado pela sigla xxIE) aplicado a uma porta AND, cuja funo realizar o controle de habilitao/desabilitao individual de cada interrupo.

TMRIF1F TMRIF1E TMR2F1F TMR2F1E CCP1IF CCP1IE CM1F CMIE TXIF TX1E RCIF RCIE EEIF EEIE

T0IF T0IE INTF INTE RBIF RBIE PEIE

Sinal Wake-Up

Interrupo para a CPU

GIE

Figura 3 - Estrutura Lgica do Funcionamento das Interrupes.

www.geraldonovais.com.br

CAPTULO 2 TEMPORIZADORES

www.geraldonovais.com.br

CONTADOR/ TEMPORIZADOR TIMER 0


um contador binrio de 8 bits que pode ser utilizado para duas funes bsicas:

Contagem de eventos externos (quando a entrada de clock feita por meio do pino RA4/T0CKI); Temporizao (contagem de tempo) quando ento a entrada de clock proveniente do clock interno (o clock do sistema dividido por 4 ).

Fosc/4
RA4/T0CKI 0

MUX1

MUX2

Barramento de Dados

1
1 Prescaler programvel

Sincronizao com clock interno

TMR0

0 Seta Bit T0IF no Estouro do TMR0

T0SE T0CS PS2, PS1, PS0

PSA

Figura 4 - Diagrama interno do timer 0.

Na figura 4 podemos observar a estrutura interna do mdulo do Timer 0. Primeiramente devemos prestar ateno ao MUX1, o multiplexador encarregado de selecionar a fonte de clock para o timer 0. O bit encarregado de fazer essa seleo o T0CS (Timer 0 Clock Source seleo de clock do timer 0), encontrado no registrador OPTION_REG. Pela figura anterior, podemos observar que se T0CS = 1, a fonte de clock ser o pino RA4/T0CKI, quando dizemos ento que o timer 0 est operando como contador de eventos; caso contrrio, se T0CS = 0, ento o clock do timer 0 vir do clock interno de sistema (clock principal/4) e dizemos que o timer 0 est operando como um contador de tempo ou temporizador. A seguir, o sinal de clock ir passar pelo MUX2, multiplexador encarregado de selecionar entre duas opes o sinal de clock que ser aplicado ao contador. Na primeira opo, com PSA = 1, o sinal de clock ir seguir diretamente do MUX1 pelo MUX2 para o timer 0. No outro caso, com PSA = 0, o sinal proveniente do MUX1 ir passar primeiramente por um prescaler e em seguida ser aplicado ao contador. O prescaler nada mais do que um circuito utilizado para reduzir a freqncia do sinal de clock, aplicado ao timer 0 por um fator conhecido. Este fator selecionado pelos bits PS2, PS1 e PS0 do registrador OPTION_REG, de acordo com a tabela 7. www.geraldonovais.com.br

PS2 0 0 0 0 1 1 1 1

PS1 0 0 1 1 0 0 1 1

PS0 0 1 0 1 0 1 0 1

Timer0 (PSA=0) 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256

Watchdog (PSA=1) 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

Tabela 7 Fatores de diviso do prescaler do Timer 0 e Watchdog. A cada transbordo do TMR0 (255 para 0), ser ativado o sinal T0IF, sinalizando o evento de interrupo. Para calcular a freqncia com que vo ocorrer as interrupes (transbordos) do timer 0, utilizamos a seguinte frmula:

FINT

CLOCK PRESCALER * 256 TMR 0

Equao 1 - Freqncia de Interrupes Timer 0.

www.geraldonovais.com.br

Em que: CLOCK o valor da freqncia de clock utilizada: se o clock for interno, teremos que o CLOCK ser igual a Fosc/4; se o clock for externo, o valor do CLOCK ser aquele aplicado entrada T0CKI; PRESCALER o fator de diviso do clock. TMR0 o valor inicial do registrador TMR0. Normalmente este valor zero, mas podemos alter-lo por software;

Registrador OPTION_REG
R/W-1 R/W-1 INTEDG R/W-1 TOCS R/W-1 TOSE R/W-1 PSA R/W-1 PS2 R/W-1 PS1 R/W-1 PS0 bit0

RBPU
bit7

bit 7:

RBPU Ativao dos resistores internos de pull-up da porta B.


1 = Resistores de pull-up desativados. 0 = Resistores de pull-up ativados. INTEDG Seleo da borda de ativao da interrupo externa. 1 = Interrupo na borda de subida do sinal no pino RB0/INT. 0 = Interrupo na borda de descida do sinal no pino RB0/INT. T0CS Seleo de entrada do clock para o timer 0. 1 = O clock ser obtido externamente pelo pino RA4/T0CKI. 0 = O clock ser proveniente do clock interno do sistema (Fosc/4). T0SE Seleo de borda de sensibilidade do clock externo do timer 0 1 = Timer 0 incrementado na borda de descida do sinal em RA4/ T0CKI. 0 = Timer 0 incrementado na borda de subida do sinal em RA4/ T0CKI. PSA Seleciona o prescaler para o timer 0 ou Watchdog 1 = O prescaler est conectado ao Watchdog. 0 = O prescaler est conectado ao timer 0. PS0, PS1, PS2 Fator de diviso do prescaler utilizado com o timer 0 ou com o watchdog.

bit 6:

bit 5:

bit 4:

bit 3:

bit 2-0:

www.geraldonovais.com.br

CONTADOR/ TEMPORIZADOR TIMER 1

O timer 1 um mdulo contador de 16 bits capaz de operar em um dos dois modos: Temporizador; Contador de eventos externos.

Seta Bit TMR1IF no Estouro do TMR1IF TMR1 TMR1H TMR1L

Entrada de Clock Sincronizado

0 1
TMR1ON T1SYNC

T1OSC

1
RB6/T1OSO /T1CKI T1OSCEN Clock Interno (FOSC/4) Prescaler 1, 2, 4, 8 Deteco de Sincronismo

0 2
Entrada Modo SLEEP T1CKPS1: T1CKPS0 TMR1CS

RB7/T1OSI

Figura 5 - Diagrama interno do timer 1.

O timer 1 oferece a possibilidade de conexo de cristal externo para clock do mdulo, possibilitando a contagem mesmo com o chip em modo SLEEP (a frequncia mxima nesse caso de 200 KHz). A conexo do cristal feita atravs dos pinos RB6/T1OSO e RB7/T1OSI representados no diagrama da figura 5. O T1CON o registrador de controle destinado especificamente ao timer1, alm do uso de dois registradores para o armazenamento da contagem (TMR1L e TMR1H), sendo que o TMR1L representa os 8 bits menos significativos da contagem e o TMR1H os 8 bits mais significativos da contagem. Desta forma conclui-se que um ciclo tpico de contagem do timer 1 ir se iniciar em 0 (os 16 bits do contador em 0) e terminar em 65535 (o que equivale aos 16 bits do contador em 1). O prximo pulso de clock que chegar ao contador ir gerar um transbordo de contagem setando o bit TMR1IF, sinalizando assim o transbordo de contagem do mdulo. www.geraldonovais.com.br

Podemos calcular a freqncia das interrupes do timer 1 com a seguinte frmula:

FINT

CLOCK PRESCALER * (65536 TMR1)

Equao 2 - Freqncia de Interrupes Timer 1. Em que:

CLOCK o valor da freqncia de clock utilizada: se o clock for interno, teremos que o CLOCK ser igual a Fosc/4; se o clock for externo, o valor de CLOCK ser aquele aplicado entrada T1CKI; PRESCALER o fator de diviso do clock; TMR1 o valor inicial de 16 bits do par de registradores TMR1L e TMR1H. Normalmente este valor zero, mas podemos alter-lo pro software.

www.geraldonovais.com.br

Registrador T1CON
U-0 bit7 U-0 R/W-0 T1CKPS1 R/W-0 T1CKPS0 R/W-0 T1OSCEN R/W-0 R/W-0 TMR1CS R/W-0 TMR1ON bit0

T1SYNC

bit 7-6: bit 5-4:

No implementados. T1CKPS1: T1CKPS0 Bits de seleo do prescaler do Timer 1. 00 = Fator de diviso 1:1 01 = Fator de diviso 1:2 10 = Fator de diviso 1:4 11 = Fator de diviso 1:8 T1OSCEN Bit de controle do oscilador externo do Timer 1. 1 = Oscilador externo habilitado. 0 = Oscilador externo desabilitado.

bit 3:

bit 2:

T1SYNC Bit de controle da sincronizao do clock externo.


1 = No sincroniza entrada de clock externo. 0 = Sincroniza entrada de clock externo. TMR1CS Bit de seleo do clock do timer 1. 1 = Clock externo atravs do pino RB6/T1OSO/T1CKI. 0 = Clock interno (o clock do sistema dividido por 4 ). TMR1ON Bit de controle do Timer 1. 1 = Contagem ativada. 0 = Contagem paralizada.

bit 1:

bit 0:

www.geraldonovais.com.br

CONTADOR/ TEMPORIZADOR TIMER 2

O timer 2 um temporizador de 8 bits com princpio de funcionamento similar ao do timer 0 e as seguintes caractersticas:

Postcaler programvel de 1:1 a 1:16; Prescaler programvel de 1:1, 1:4 ou 1:16; Capacidade de ligar ou desligar a contagem do mdulo; Registrador de perodo (PR2).

Seta o flag TMR2IF

Sada do TMR2 (Mdulo CCP)

Reset
TMR2

Prescaler 1:1, 1:4,1:16

Fosc/4

Postscaler 1:1 to 1:16

Comparador

Igual = 4
PR2

Figura 6 - Diagrama interno do timer 2.

www.geraldonovais.com.br

Podemos calcular a freqncia das interrupes do timer 2 com a seguinte formula:

FINT

CLOCK PRESCALER * ( PR 2 1 TMR 2) * POSTCALER


Equao 3 - Freqncia de Interrupes Timer 2.

Em que:

CLOCK o valor da freqncia de clock utilizada; PRESCALER o fator de diviso do clock; POSTCALER o nmero de vezes que o timer 2 dever estourar para gerar um pedido de interrupo; TMR2 o valor inicial de 8 bits do registrador TMR2. Normalmente este valor zero, mas podemos alter-lo por software.

www.geraldonovais.com.br

Registrador T2CON

U-0 bit7

R/W-0 TOUTPS3

R/W-0 TOUTPS2

R/W-0 TOUTPS1

R/W-0 TOUTPS0

R/W-0 TMR2ON

R/W-0 T2CKPS1

R/W-0 T2CKPS0 bit0

bit 7: bit 6-3: bit 2:

No implementados. TOUTPS3: TOUTPS0 Bits de seleo do postcaler do Timer 2. TMR2ON Bit de controle da contagem do Timer 2. 1 = Contagem ativada. 0 = Contagem paralizada. T2CKPS1: T2CKPS0 Bits de seleo do prescaler do Timer 2.

bit 1-0:

TOUTPS3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

TOUTPS2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

TOUTPS1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

TOUTPS0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

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

Tabela 8 - Postscaler do Timer 2.

T2CKPS1 0 0 1 1

T2CKPS0 0 1 0 1

Divisor 1:1 1:4 1:16 1:16

Tabela 9 Fatores de diviso do prescaler do Timer 2.

www.geraldonovais.com.br

O prescaler interno do mdulo timer 2 completamente independente daquele utilizado pelo timer 0, timer 1 e watchdog. O mdulo timer 2 somente pode funcionar como um temporizador, j que no possui opo de clock externo, somente de clock interno. Esse mdulo possui um registrador de perodo, chamado PR2, que possibilita que se altere o valor de transbordo do timer 2. Nesse caso, o timer 2 poder contar a partir de zero at o valor definido no registardor PR2. No prximo ciclo de clock ocorer o transbordo do temporizador e o bit TMR2IF do registrador PIR1 ser setado.

www.geraldonovais.com.br

CAPTULO 3 MDULO COMPARADOR ANALGICO

www.geraldonovais.com.br

COMPARADOR ANLOGICO

O mdulo comparador analgico consiste em um conjunto de dois comparadores analgicos internos, que podem ter suas entradas associadas aos pinos do microcontrolador para fazer comparaes de tenses analgicas externas entre si ou com a fonte de referncia interna do chip. O mdulo possui apenas um registrador: CMCON responsvel pela configurao e controle dos comparadores internos.

www.geraldonovais.com.br

MODOS DE COMPARAO ANALGICA So oito os modos de comparao analgica, os quais so exibidos na figura 7:

Figura 7 Modos de comparao analgica

www.geraldonovais.com.br

REFERNCIA INTERNA DE TENSO

O mdulo de referncia interna de tenso (VREF) constitui-se basicamente num complemento ao mdulo comparador analgico. Sua funo bsica fornecer uma referncia programvel de tenso para uso com os comparadores analgicos. Esse mdulo controlado pelo registrador VRCON, onde dada a ativao/desativao do mdulo VREF e a seleo do nvel de tenso de sada do mdulo. A tabela a seguir, mostra os valores tpicos para a sada VREF. Observa-se que os valores desta tabela so aproximados e so vlidos para uma tenso V DD = 5V.

VR3 : VR0
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

VREF VRR=1
0.00V 0.21V 0.42V 0.63V 0.83V 1.04V 1.25V 1.46V 1.67V 1.88V 2.08V 2.29V 2.50V 2.71V 2.92V 3.13V

VRR=0
1.25V 1.41V 1.56V 1.72V 1.88V 2.03V 2.19V 2.34V 2.50V 2.66V 2.81V 2.97V 3.13V 3.28V 3.44V 3.59V

Tabela 10 Valores Tpicos da Sada VREF.

www.geraldonovais.com.br

Registrador CMCON. Registrador de controle dos comparadores analgicos.

R-0 C2OUT bit7

R-0 C1OUT

R/W-0 C2INV

R/W-0 C1INV

R/W-0 CIS

R/W-0 CM2

R/W-0 CM1

R/W-0 CM0 bit0

bit 7:

C2OUT Bit indicativo do estado de sada do comparador 2. Caso C2INV = 0: 1 = Entrada Vin+ > Vin-. 0 = Entrada Vin+ < Vin-. Caso C2INV = 1: 1 = Entrada Vin+ < Vin-. 0 = Entrada Vin+ > Vin-. C1OUT Bit indicativo do estado de sada do comparador 1. Caso C1INV = 0: 1 = Entrada Vin+ > Vin-. 0 = Entrada Vin+ < Vin-. Caso C1INV = 1: 1 = Entrada Vin+ < Vin-. 0 = Entrada Vin+ > Vin-. C2INV Seleo de inverso do sinal de sada do comparador 2. 1 = Sada invertida. 0 = Sada no invertida. C1INV Seleo de inverso do sinal de sada do comparador 1. 1 = Sada invertida. 0 = Sada no invertida. CIS Seleco de entrada dos comparadores nos modos 1 e 2. CM2, CM1, CM0 Seleo do modo de operao dos comparadores. A figura 7 mostra os modos de operao dos comparadores.

bit 6:

bit 5:

bit 4:

bit 3: bit 2-0:

www.geraldonovais.com.br

Registrador VRCON. Registrador de controle do mdulo de referncia de tenso interna.

R/W-0 VREN bit7

R/W-0 VROE

R/W-0 VRR

U-0 -

R/W-0 VR3

R/W-0 VR2

R/W-0 VR1

R/W-0 VR0 bit0

bit 7:

VREN Ativao/ desativao do mdulo Vref. 1 = Mdulo ligado. 0 = Mdulo desligado. VROE Conexo da sada Vref ao pino RA2. 1 = Sada Vref conectada ao pino RA2. 0 = Sada Vref no conectada ao pino RA2. VRR Seleo da escala de tenso. 1 = Escala de tenso de 0.00 V a 3.13 V. 0 = Escala de tenso de 1.25 V a 3.59 V.

bit 6:

bit 5:

bit 4:
bit 3-0:

No implementado
VR3, VR2, VR1, VR0 Seleo do nvel de sada de tenso do mdulo. Nveis de tenso mostrados na tabela 10.

www.geraldonovais.com.br

CAPTULO 4 COMUNICAO SERIAL

www.geraldonovais.com.br

COMUNICAO SERIAL A USART (Interface Serial Universal sncrona/assncrona) um dispositivo interno utilizado para fazer a comunicao serial com elementos externos ao chip, tais como: computadores, modems, terminais, memrias, conversores A/D e D/A, etc. Os sinais transmitidos e recebidos pela USART fluem por dois pinos externos do chip: RB1 e RB2. Alm da transmisso e recepo padro de 8 bits, o mdulo USART permite ainda um outro modo de transmisso / recepo de 9 bits, que permite o funcionamento da USART em duas outras modalidades:

Utilizao do nono bit para funo de deteco de paridade, permitindo assim um controle de erros de transmisso de baixo nvel;

Utilizao do nono bit para funo de controle de endereamento. Neste modo, o mono bit funciona como um bit de controle de endereamento, indicando se o dado transmitido / recebido um caractere ou um endereo de dispositivo.

A utilizao do nono bit para a funo de controle de endereamento permite que diversos dispositivos compartilhem um mesmo barramento serial, cada qual com seu prprio endereo. Desta forma, possvel ao dispositivo mestre comunicar-se com vrios dispositivos escravos, apenas selecionando previamente o endereo de cada um. O modo de endereamento somente est disponvel no modo assncrono de comunicao. Assim, possvel configurar a USART para trabalhar em quatro modos: www.geraldonovais.com.br

Assncrono Full-duplex sem deteco de endereos; Assncrono Full-duplex com deteco de endereos; Sncrono Half-duplex com clock interno (modo mestre); Sncrono Half-duplex com clock externo (modo escravo).

Para o controle e configurao da USART utilizamos cinco registradores especficos: - TXSTA utilizado para controle e configurao de transmisso da USART; - RCSTA utilizado para controle e configurao de recepo da USART; - SPBRG utilizado para configurar o clock da USART; - TXREG registrador de transmisso de dados (armazena o dado a ser transmitido); - RCREG registrador de recepo de dados (armazena o dado recebido).

ESTRUTURA DE TRANSMISSO DA USART A figura 8 apresenta o diagrama em blocos da estrutura interna de transmisso da USART.

Figura 8: Diagrama de transmisso da USART

www.geraldonovais.com.br

Com base na figura 8, podemos destacar alguns elementos:

BRG Gerador de Baud Rate responsvel pela gerao de clock para comunicao (esse mdulo compartilhado com a estrutura de recepo da USART); TSR Registrador de deslocamento de transmisso responsvel pela converso da informao paralela vinda do registrador TXREG em informao serial; TXREG Registrador de dados transmitidos armazena o dado a ser transmitido;

ESTRUTURA DE RECEPO DA USART

Na figura 9 temos a estrutura interna de recepo da USART.

Figura 9 Estrutura interna de recepo da USART www.geraldonovais.com.br

Com base na figura 9, podemos destacar como principais elementos:

BRG Gerador de Baud Rate responsvel pela gerao de clock para comunicao (esse mdulo compartilhado com a estrutura de recepo da USART); RSR Registrador de deslocamento de recepo responsvel pela converso da informao serial recebida em informao paralela; RCREG Registrador de dados recebidos estrutura FIFO de dois estgios destinada a armazenar a informao recebida do RSR;

www.geraldonovais.com.br

REGISTRADORES DA USART

Registrador TXSTA

R/W-0 CSRC bit7

R/W-0 TX9

R/W-0 TXEN

R/W-0 SYNC

U-0 -

R/W-0 BRGH

R/W-0 TRMT

R/W-0 TX9D bit0

bit 7:

CRSC Seleo de fonte de clock sncrono: 0 Clock externo (modo escravo) 1 Clock interno (modo mestre)

bit 6:

TX9 Habilitao de modo de transmisso de 9 bits: 0 Seleciona modo de transmisso de 8 bits 1 Seleciona modo de transmisso de 9 bits

bit 5:

TXEN Habilitao do transmissor: 0 Transmissor desabilitado 1 Transmissor habilitado

bit 4:

SYNC Seleo de modo de operao da USART: 0 Seleciona modo assncrono de transmisso 1 Seleciona modo sncrono de transmisso

bit 3: bit 2:

No implementado BRGH Seleo de modo de clock de alta velocidade 0 Modo de baixa velocidade www.geraldonovais.com.br

1 Modo de alta velocidade bit 1: TRMT Bit indicador do estado do reg. de deslocamento (transmisso): 0 Registrador de transmisso (TSR) cheio 1 Registrador de transmisso (TSR) vazio bit 0: TX9D Nono bit de dados (usado apenas no modo de 9 bits, pode ser utilizado para gerar informao de paridade (deteco de erros de transmisso).

www.geraldonovais.com.br

Registrador RCSTA

R/W-0 SPEN bit7

R/W-0 RX9

R/W-0 SREN

R/W-0 CREN

U-0 ADDEN

R-0 FERR

R-0 OERR

R-0 RX9D bit0

bit 7:

SPEN Habilitao da USART. 0 USART desabilitada (pinos RB1/RB2 podem ser utilizador p/I/O) 1 USART habilitada (pinos RB1/RB2 utilizados p/ USART)

bit 6:

RX9 Habilitao de recepo de 9 bits: 0 Seleciona modo de recepo de 8 bits 1 Seleciona modo de recepo de 9 bits

bit 5:

SREN Habilitao de recepo nica: 0 Desabilita recepo nica 1 Habilita recepo nica

bit 4;

CREN Habilitao de recepo 0 Desabilita recepo contnua 1 Habilita recepo contnua

bit 3:

ADDEN Habilitao de deteco de endereo 0 Desabilita a deteco de endereo. O 9 bit pode ser utilizado para paridade. 1 Habilita a deteco de endereo. A USART permanece aguardando a chegada de um endereo.

www.geraldonovais.com.br

bit 2:

FERR Indicador erro de Frame (quadro): 0 Nenhum erro de frame 1 Erro de frame (Bit de STOP no detectado ou detectado fora da hora)

bit 1:

OERR Indicador de erro de overrrun (sobreposio): 0 Nenhum erro de overrun 1 Erro de overrun, trs caracteres foram recebidos sem terem sido lidos pela CPU.

bit 0:

RX9D Nono bit dos dados recebidos pela USART, pode ser utilizado para verificar a paridade, desde que o transmissor esteja configurado de acordo.

Registrador SPBRG. O registrador SPBRG responsvel pelo controle do gerador do baud rate interno da USART. Por meio do valor colocado nesse registrador, altera-se o fator de diviso do BRG, resultando em diferentes freqncias de clock para a USART. A tabela a seguir demonstra as frmulas de clculo do Baud Rate para cada modo possvel: SYNC 0 1 MODO Assncrono Sncrono BRGH=0 Baud Rate = FOSC/[64*(x + 1)] Baud Rate = FOSC/[4*(x + 1)] BRGH=1 Baud Rate = FOSC/[16*(x + 1)] N/A

Tabela 11 - Tabela de clculo do Baud Rate Onde: X o valor que deve ser armazenado no registrador SPBRG. www.geraldonovais.com.br

Você também pode gostar