Você está na página 1de 74

Microcontroladores PIC Famlia PIC18F Microchip

Autor: Fernando Simplicio de Sousa Fabio Perkowitsch Mulero Equipe Microgenios Cursos e Treinamentos sobre Microcontroladores. www.microgenios.com.br www.portalwebaula.com.br Fone: 11 5084-4518 | 3384-5598

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 1 de 74

Livro: Microcontroladores PIC Famlia PIC18F Microchip Todos os direitos reservados. Proibida a reproduo total ou parcial, por qualquer meio ou processo, especialmente por sistemas grficos, microflmicos, fotogrficos, reprogrficos, fonogrficos, videogrficos, internet, e-books. Vedada a memorizao e/ou recuperao total ou parcial em qualquer sistema de processamento de dados e a incluso de qualquer parte da obra em qualquer programa jusciberntico. Essas proibies aplicamse tambm as caractersticas grficas da obra e a sua editorao. A violao dos direitos autorais punvel como crime (art. 184 e pargrafos, do cdigo penal, cf. Lei n6. 895, de 17.12.80) com pena de priso e multa, conjuntamente com busca e apreenso e indenizaes diversas (artigos 102, 103 pargrafo nico, 104, 105, 106 e 107 itens 1, 2, 3 da lei n. 9.610, de 19/06/98, lei dos direitos autorais). Eventuais erratas estaro disponveis no site da Microgenios para download. Dedicatria: Dedico esse livro a Minha famlia e a equipe Microgenios Advertncia: As informaes e o material contido neste livro so fornecidos sem nenhuma garantia quer explcita, ou implcita, de que o uso de tais informaes conduzir sempre ao resultado desejado. Tanto o editor quanto o autor no podem ser responsabilizados por qualquer tipo de reivindicao atribuda a erros, omisses ou qualquer outra impreciso na informao ou material fornecido neste livro, e em nenhuma hiptese podem ser incriminados direta ou indiretamente por qualquer dano, perda, lucros cessantes, etc., devido ao uso destas informaes.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 2 de 74

Prefcio
Esta obra foi concebida com o intuito de preparar os estudantes, professores e profissionais da rea tcnica para a criao de projetos com os microcontroladores da famlia PIC, utilizando como ferramenta uma linguagem de programao de alto nvel, neste material escolhemos para abordar a linguagem C, que uma das linguagens mais poderosas e portveis, fato este que a tornou amplamente utilizada, primeiramente para a criao de programas aplicativos para PC e mais tarde em sistemas embarcados microcontrolados. Trabalhar com uma linguagem de alto nvel, como C, para criar programas para microcontroladores, exige do profissional alm de um bom conhecimento de lgica de programao e habilidade com a linguagem, um slido conhecimento da estrutura de hardware do microcontrolador utilizado, de forma a extrair deste o mximo de funcionalidade de seus perifricos internos. Esta obra estuda paralelamente hardware e software, propiciando um conhecimento completo ao profissional e tornando-o apto a desenvolver suas prprias aplicaes, alm disso, vale a pena ressaltar a preocupao, por parte do Centro de Tecnologia Microgenios, em priorizar um estudo gradual e prtico, para isso usamos os kits de desenvolvimento PICgenios PIC18F, como base para a realizao de diversas experincias que complementam e fixam o aprendizado. Um ponto de destaque da abordagem do treinamento o uso e detalhamento da IDE de desenvolvimento MikroC PRO (www.mikroe.com) a qual apesar das limitaes da verso de demonstrao gratuita mostra-se uma excelente ferramenta de desenvolvimento e simulao. De maneira alguma este material apresentado como nica fonte de estudo sobre o assunto, devendo aqueles que necessitarem se aprofundar nos tpicos aqui estudados buscar outras fontes de pesquisa. Por fim a projetos. equipe Microgenios agradece a ateno de todos e deseja bons estudos e

Fernando Simplicio de Sousa Fabio Perkowitsch Mulero Equipe Microgenios Cursos e Treinamentos sobre Microcontroladores. www.microgenios.com.br www.portalwebaula.com.br Fone: 11 5084-4518 | 3384-5598 Deus seja louvado! Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 3 de 74

UNIDADE 1 - O MICROCONTROLADOR PIC ...................................................... 6 Desempenho da famlia PIC .............................................................6 ............................................................. .............................6 Tipos de Memria de Programa ......................................................... 7 Tipos de memrias de programas disponveis nos PICs: ................................ 7 O PIC18F4520..........................................................................7 ..........................................................................7 .......................................................................... Veja em seguida as principais caractersticas do PI18F4520 ........................... 7 Tipos de encapsulamentos: ........................................................... 7 Estrutura interna do PIC18F4520 ...................................................... 9 Descrio das funes dos pinos do PI18F4520 ....................................... 10 Tipos de Memrias .................................................................. 11 Vamos exemplificar um processo de gravao na memria de programa do PIC. .......... 13 Introduo as portas de I/O ..........................................................16 .......................................................... ..........................16 O PORTA.............................................................................. 17 Registrador PORTA .................................................................. 18 PORTA .............................................................................. 18 Registrador TRISA .................................................................. 18 Leitura do LATCH de um pino do PIC ................................................. 18 O PORTB.............................................................................. 19 O PORTC.............................................................................. 19 O PORTD.............................................................................. 20 O PORTE.............................................................................. 20 Reset................................................................................ 21 Os PICs possuem diversos tipos de reset: ........................................... 21 Ciclos de mquina.................................................................... 21 Qual a freqncia real de execuo das instrues do nosso microcontrolador? ..... 21 Os bits de configurao (fusveis) .................................................. 22 Mapa dos bits de configurao do PIC18F4520 ......................................... 23 Configurao de Clock................................................................ 24 Vamos conhecer cada um dos tipos de osciladores: ................................... 25 Configurao dos Fusveis de Energia ............................................... 27 UNIDADE 2 - CANAIS A/D ................................................................. 30 Conversor A/D do PIC ................................................................. 30 ................................................................ ................................. Registrador ADCON0: .................................................................. 30 ..................................................................30 .................................. ADCON0:.............................................................................. 30 Registrador ADCON1: .................................................................. 31 ..................................................................31 .................................. ADCON1:.............................................................................. 31 Registrador ADCON2: .................................................................. 32 ..................................................................32 .................................. ADCON2:.............................................................................. 32 Trabalhando com AD no MikroC ........................................................ 33 UNIDADE 3 CANAL PWM DO PIC ........................................................... 34 Introduo .......................................................................... 34 ..........................................................................34 .......................................... Trabalhando com PWM no PIC .......................................................... 36 UNIDADE 4 - TIMERS/COUNTERS ............................................................ 38 Os Timers/Counters ................................................................... 38 ...................................................................38 ................................... TIMER0............................................................................... 38 Os Registradores relacionados ao TIMER0 so: ....................................... 39 T0CON: (TIMER0 Counter Register) ...................................................40 O registrador INTCON................................................................. 41 INTCON (Interrupt Control) ......................................................... 41 TIMER1............................................................................... 44 O TIMER1: .......................................................................... 44 T1CON: (TIMER1 CONTROL REGISTER): .................................................. 45 Programando o TIMER1 do PIC. ....................................................... 47 Configurao do TIMER1: ............................................................ 49 Calculo de Estouro do TIMER1: ...................................................... 49 TIMER2 :............................................................................. 49 T2CON (TIMER2 CONTROL REGISTER): Configura o setup do TIMER2; ...................... 50 Registradores de configurao do TIMER2: ........................................... 50 TIMER3............................................................................... 51 O TIMER3 : ......................................................................... 51 Registradores de configurao do TIMER3: ........................................... 52 Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 4 de 74

UNIDADE 5 PROGRAMANDO AS INTERRUPES DO PIC ......................................... 53 As Interrupes do PIC18F4520 ........................................................53 ........................................................ ........................53 Introduo........................................................................... 54 Como funciona as interrupes? ..................................................... 55 Registradores que so usados para controlar as interrupes; ....................... 56 UNIDADE 6 PROGRAMANDO A INTERRUPO EXTERNA .......................................... 61 INT0 ................................................................................ 61 ................................................................................61 ................................................ Vamos conhecer os registradores relacionados a INT0: ................................ 62 Registradores responsveis pelas configuraes gerais das interrupes: ............ 62 Registradores responsveis pela habilitao da interrupo externa INT0 ............ 62 Registrador responsvel pelo tipo de disparo de INT0: .............................. 62 INT1 ................................................................................ 62 ................................................................................62 ................................................ Programando a interrupo externa INT1 .............................................. 62 Vamos conhecer os registradores relacionados a INT1: ............................... 63 Registradores responsveis pelas configuraes gerais das interrupes: ............ 63 Registradores responsveis pela habilitao da interrupo externa INT1 ............ 63 INT2 ................................................................................ 63 ................................................................................63 ................................................ Registrador responsvel pelo tipo de disparo de INT2: .............................. 63 Vamos conhecer os registradores relacionados a INT2: ................................ 64 Registradores responsveis pela habilitao da interrupo externa INT2 ............ 64 Registrador responsvel pelo tipo de disparo de INT2: .............................. 64 Interrupo por mudana de estado ....................................................64 .................................................... ....................64 Vamos conhecer os registradores relacionados a interrupo RB: ...................... 65 Registradores responsveis pelas configuraes gerais das interrupes: ............ 65 Registradores responsveis pela habilitao da interrupo externa RB .............. 65 UNIDADE 7 EXEMPLOS DE PERIFRICOS .................................................... 66 Controle de display LCD ..............................................................66 .............................................................. ..............................66 Projetos com displays LCD: .......................................................... 66 Varredura de displays de 7 segmentos .................................................67 ................................................. .................67 Projetos com displays de 7 segmentos: ............................................... 67 Varredura de Teclado matricial .......................................................67 ....................................................... .......................67 Projetos com teclados matriciais: ...................................................68 Acionamento de Leds .................................................................. 68 ..................................................................68 .................................. Projetos com com Leds................................................................ 68 Conversor Analgico digital (A/D) ....................................................68 .................................................... ....................68 Projetos com os conversores A/D do PIC .............................................. 69 Controle PWM......................................................................... 69 .........................................................................69 ......................................................................... Projetos com os PWM.................................................................. 69 UNIDADE 8 ANEXOS .................................................................... 70 Descrio das Pinagens(LCD) ..........................................................70 .......................................................... ..........................70 Lista de cdigos dos Caracteres ..................................................... 70 Tabela com o conjunto completo de instrues: ....................................... 71 Tabela com as instrues mais comuns: ............................................... 72 Resumo com as instrues mais teis: ................................................ 72 Comandos LCD do mikroC PRO (LCD) .................................................... 73 UNIDADE 9 FIGURAS .................................................................... 73 UNIDADE 10 TABELAS ................................................................... 74

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 5 de 74

Unidade 1 - O Microcontrolador PIC


Os microcontroladores PIC so fabricados pela empresa Microchip. Existem basicamente quatro famlias de PICs diferenciadas pelo tamanho da palavra de memria de programa: 12, 14 , 16 e 32 bits. Atualmente a Microchip lanou nesses ltimos anos uma nova famlia de microcontroladores chamada DsPIC que possui barramento interno de 16 bits e 24 bits, contrrio da tradicional famlia de 8 bits, e tambm a famlia PIC32, com barramento de dados em 32 bits. O PIC possui uma arquitetura interna do tipo Harvard. A diferena entre essa arquitetura e as tradicionais, do tipo Von-Neumann, que ela possui um barramento para o programa e outro para os dados, diferente da arquitetura tradicional em que um barramento tanto de dados como de endereo. O aumento no tamanho da palavra de programa possibilita um aumento no nmero de instrues: os PICs de 12 bits (12C508, 12C509, 12CE518, 16C54, 16C55) possuem apenas 33 instrues, os de 14 bits (12C671, 12C672, 12CE673, 12C674, 14000, 16C55x) possuem 35 instrues e os de 16 bits (17C4x, 17C75X, 17C76X, 18C2XX, 18C4XX) possuem 77 instrues.

Nota: As famlias PIC14 e PIC17 esto obsoletas. Figura 1.1 Evoluo da Famlia PIC Os PICs foram otimizados para trabalharem com execuo de pequeno conjunto de instrues a grandes velocidades de processamento.

Desempenho da famlia PIC


Capacidade de pipeline (enquanto executa uma instruo, o processador busca a prxima instruo na memria, de forma a acelerar a execuo do programa) Execuo de uma instruo por ciclo de mquina, com exceo das instrues de desvios que consomem dois ciclos de mquinas para serem executadas. Um ciclo de mquina no PIC equivale a 4 ciclos de clock, ou seja, o sinal de clock dividido por 4 antes de executar a instruo (falaremos mais sobre esse tpico adiante). Cada Instruo ocupa uma posio de memria de programa (FLASH). Tempo de execuo das instrues fixa, com exceo das instrues de desvios que consomem dois ciclos de mquina. Outra caracterstica importante da arquitetura PIC reside na semelhana e compatibilidade entre os diversos microcontroladores membros de sua famlia. Isto facilita grandemente a migrao de microcontrolador para outro, bastando mudar, em alguns casos, apenas alguns comandos no programa, pois partes dos registradores internos no se diferem muito entre si. Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 6 de 74

Tipos de Memria de Programa


Os PICs da srie 12 e 16 armazenam o programa em sua memria interna. Membros da famlia 18 podem funcionar com memria de programa interna ou externa.

Tipos de memrias de programas disponveis nos PICs:


ROM: Memria do tipo no voltil gravadas na fbrica pelo processo conhecido como ROM mscara. Os chips com esse tipo de memria normalmente possuem custos menores, mas somente so viveis na fabricao de grandes quantidades. OTP: OTP Memria fabricadas do tipo PROM. Saem da fbrica "virgens" e permitem uma nica gravao. So inviveis nas fases de implantao e desenvolvimento de equipamentos. Esses chips so identificados pelo sufixo "C". EEPROM: EEPROM Podemos encontrar chips com memria do tipo EEPROM. Normalmente so mais caros que os dispositivos ROM e OTP e podem ser identificados atravs do seu sufixo "JW" para os dispositivos com encapsulamento DIP, ou "CL" para os dispositivos com encapsulamento do tipo PLCC. FLASH: FLASH Os microcontroladores PIC que utilizam este tipo de memria so indicados para etapas de desenvolvimento e testes at mesmo para implantaes finais. Permitem no mximo 1000 ciclos de gravaes/apagamento, possuem um custo relativamente mediano com relao aos outros chips.

O PIC18F4520
O PIC18F4520 um microcontrolador que possui memria do tipo FLASH, que nos representa uma grande facilidade em desenvolvimentos de projetos e prottipos pois no requer apaglo atravs de luz-ultravioleta como as verses antigas que utilizavam EEPROM, com tecnologia CMOS (baixssimo consumo) fabricado pela empresa Microchip Technology.

PI18F4520 Veja em seguida as principais caractersticas do PI18F4520


Microcontrolador de 40 pinos; Memria de programa FLASH de 32K ( 16384 bytes words) Memria de dados RAM de 1536 bytes; Memria EEPROM de 256 byte; Processamento de at 10MIPS (milhes de instrues por segundo) 2 canais capture/compare/PWM - mdulo CCP Master synchronous Serial Port (MSSP) module. Usart 13 canais A/D de 10 bits Permite at 100 000 ciclos de escrita e leitura na memria de programa Flash Permite 1.000.000 ciclos de leitura e escrita na E2PROM Reteno de dados na Flash de 40 anos Detector de baixa voltagem programvel Watchdog timer com oscilador prprio e programvel Trs pinos de interrupo externa. 4 Temporizadores/contadores (TIMER0, TIMER1, TIMER2, TIMER3)

Tipos de encapsulamentos:
As primeiras verses do PIC eram baseadas em encapsulamentos do tipo DIP40, hoje os dispositivos de 40 pinos ainda so muito comuns, porm de acordo com a aplicao e os perifricos internos presentes no Chip eles podem ser encontrados em diversos encapsulamentos como: DIP Dual In-line Pin PLCC Leadless Chip Carrier. TQFP Thin Quad Flat Pack.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 7 de 74

Figura 1.2 - Encapsulamentos

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 8 de 74

Nosso estudo ser baseado em microcontroladores com o encapsulamento DIP (Dual In-line Pin), devido facilidade de utilizao e disponibilidade no mercado, porm no h grandes dificuldades para se migrar para outros encapsulamentos, basta analisar o datasheet do microcontrolador.

Estrutura interna do PIC18F4520

Figura 1.3 Diagrama interno do PIC18F4520

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 9 de 74

Descrio das funes dos pinos do PI18F4520


O PI18F4520 possui no total de 34 pinos de I/O divididos entre as PORTA, PORTB, PORTC, PORTD e PORTE. PORTA: encontramos 7 pinos fsicos intitulados de RA0 a RA7 que podem ser utilizados como PORTA I/O de uso geral ou como conversor analgico/ digital A/D, alm de possuir tambm a funo de deteco de baixa tenso (LVD), referncia analgica do A/D e contador externo. PORTB: PORTB encontramos 8 pinos intitulados de RB0 a RB7 configurveis como I/O de uso geral. Nesse port podemos trabalhar com trs interrupes externas, mdulo CCP e pinos de gravao e debugger. PORTC: PORTC encontramos 8 pinos intitulados de RC0 a RC7 configurveis como I/O de uso geral, sada do oscilador do timer, mdulo CCP, Clock e data para os modos SPI, I2C e UART. PORTD: PORTD encontramos 8 pinos intitulados de RC0 a RC7 que pode ser configurado como I/O de uso geral ou ser configurado como PSP para ter sada TTL (por exemplo: interfaceamento com microprocessadores ). PORTE: PORTE podemos utiliz-lo como PORT de I/O de uso geral ou utilizar os pinos de WR e CS para acesso ao modo paralelo Slave Port (acesso a memria externa por exemplo). Abaixo segue com detalhes a funo de cada pino do microcontrolador PIC18F4520. Pino(DIP) Funo 2 3 4 RA0 AN0 RA1 AN1 RA2 AN2 VrefCVref RA3 AN3 Vref+ RA4 T0CKI C1OUT RA5 AN4 /SS HLVDIN C2OUT OSC1 CLKI RA7 OSC2 CLKO RA6 RB0 INT0 FLT0 AN12 RB1 INT1 AN10 RB2 INT2 AN8 RB3 AN9 CCP2** RB4 KBI0 AN11 RB5 KBI1 PGM RB6 KBI2 PGC RB7 Tipo I/O Entrada I/O Entrada I/O Entrada Entrada Sada I/O Entrada Entrada I/O Entrada Sada I/O Entrada Entrada Entrada Saida Entrada Entrada I/O Sada Sada I/O I/O Entrada Entrada Entrada I/O Entrada Entrada I/O Entrada Entrada I/O Entrada I/O I/O Entrada I/O I/O Entrada I/O I/O Entrada I/O I/O Descrio Entrada e sada de uso geral Entrada do conversor AD0 Entrada e sada de uso geral Entrada do conversor AD1 Entrada e sada de uso geral Entrada do conversor AD2 Entrada de referncia baixa do A/D Sada de tenso da referencia do comparador Entrada e sada de uso geral Entrada do conversor AD3 Entrada de referncia alta do A/D Entrada e sada de uso geral Entrada de clock timer0 Sada do comparador 1 Entrada e sada de uso geral Entrada do conversor AD4 Entrada de seleo SPI Detector de alta/baixa voltagem. Sada do comparador 2 Entrada do cristal oscilador Entrada do clock externo Entrada e sada de uso geral Sada do cristal oscilador Entrada do clock exteno Entrada e sada de uso geral Entrada e sada de uso geral Interrupo externa 0 Entrada de erro PWM para CCP1 Entrada analgica 12 Entrada e sada de uso geral Interrupo externa 1 Entrada analgica 10 Entrada e sada de uso geral Interrupo externa 2 Entrada analgica 8 Entrada e sada de uso geral Entrada analgica 9 Entrada de captura 2, sada de comparao 2 e sada PWM 2 Entrada e sada de uso geral Pino de interrupo por mudana de nvel Entrada analgica 11 Entrada e sada de uso geral Interrupo por mudana de estado Pino de habilitao ICSP baixa voltagem (In-Circuit Debugger) Entrada e sada de uso geral Interrupo por mudana de estado Pino de clock do ICSP Entrada e sada de uso geral

5 6 7

13 14 33

34 35 36 37 38 39 40

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 10 de 74

Pino(DIP) Funo KBI3 PGD RC0 T10S0 T1CKI RC1 T10S1 CCP2** RC2 CCP1 P1A RC3 SCK SCL RC4 SDI SDA RC5 SD0 RC6 TX CK RC7 RX DT RD0 PSP0 RD1 PSP1 RD2 PSP2 RD3 PSP3 RD4 PSP4 RD5 PSP5 P1B RD6 PSP6 P1C RD7 PSP7 P1D RE0 /RD AN5 RE1 /WR AN6 RE2 /CS AN7 /MCLR VPP RE3 GND VCC

Tipo Entrada I/O I/O Sada Entrada I/O Entrada Sada I/O I/O Saida I/O I/O I/O I/O Entrada I/O I/O Sada I/O Sada I/O I/O Entrada I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O Sada I/O I/O Sada I/O I/O Sada I/O Entrada Entrada I/O Entrada Entrada I/O Entrada Entrada Entrada Entrada Entrada Alimentao

Descrio Interrupo por mudana de estado Pino de dados do ICSP Entrada e sada de uso geral Sada do clock do Timer 1 Clock externo Timer1 / Timer3 Entrada e sada de uso geral Entrada de clock do Timer1 Mdulo CCP2(multiplexado com RB3 ) Entrada e sada de uso geral Mdulo CCP1 Sada ECCP1 Entrada e sada de uso geral Entrada e sada do clock serial para o modo SPI Entrada e sada do clock serial para o modo I2C Entrada e sada de uso geral Entrada de dados SPI Entrada e sada de dados I2C Entrada e sada de uso geral Sada de dados SPI Entrada e sada de uso geral Canal de transmisso UART Clock de sincronismo UART Entrada e sada de uso geral Canal de recepo UART Clock de sincronismo UART Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1 Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1 Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1 Entrada e sada de uso geral Controle de leitura do port paralelo Entrada analgica AD5 Entrada e sada de uso geral Controle de escrita do port paralelo Entrada analgica AD6 Entrada e sada de uso geral Controle de seleo do port paralelo Entrada analgica AD7 Entrada do RESET externo. Este pino ativo em nvel baixo Pino de habilitao de alta voltagem ICSP Entrada Digital Negativo

15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 1 12, 31 11, 32

Alimentao positivo Tabela 1.1 Descrio dos pinos do Microcontrolador PIC18F4520

Tipos de Memrias
No PIC18F4520 encontramos trs tipos de memrias: Memria de Programa - FLASH Memria de dados - RAM Memria de dados EEPROM

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 11 de 74

Como ns sabemos, memria de programa (ROM, EPROM, FLASH) do tipo no voltil, ou seja, podemos desenergizar nosso sistema microcontrolado e ele no perder o programa gravado. Nosso microcontrolador estudado possui internamente 16Kbyte de memria de programa (words) e possui um barramento de programa de 16 bits. Alm disso, existem 21 bits para endereamento da memria de programa, o que permite que at 2 Mbyte sejam endereados pelo microcontrolador da familia PIC18. Memria de Programa A memria de programa utilizada em nosso microcontrolador do tipo FLASH (sufixo "F") que permite ser gravada/apagada no minimo 1000 vezes. Este tipo de memria utilizada ideal para ser utilizada em desenvolvimento de projetos e at mesmo em produtos finais.

Memria PIC18F45 452 Figura 1.4 Memria de Programa FLASH do PIC18F4520 Podemos perceber que a memria de programa do PIC18F4520 inicia-se no endereo 0000h e atinge o valor mximo de 7FFFH, ou seja , 32767K byte (32Kbyte). Nota: No podemos confundir de forma alguma memria de programa e memria de dados. Sabemos que memria de programa onde nosso programa estar gravado, enquanto memria de dados onde os valores de nossas variveis sero salvas temporariamente. O endereo inicial 0000h chamado de vetor de reset. A instruo de programa que estiver nesse endereo de memria ser a primeira a ser executada pelo processador do PIC. Sempre que energizarmos ou resetarmos o microcontrolador, o contador de programa PC apontar sempre para este primeiro endereo da memria.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 12 de 74

Em seguida temos os endereos 0008h e 0018h. Estes endereos so chamados de vetores de interrupo. (veremos mais adiante em nosso curso sobre esses vetores de interrupo).

Vamos exemplificar um processo de gravao na memria de programa do PIC.


Acompanhe o programa exemplo de programa abaixo: /*'****************************************//********************************** 'Microgenios | MicroControladores * 'Site: www.Microgenios.com.br * 'Autor: Fernando Simplicio de Sousa * ' ***************************************//*********************************** 'Programa exemplo: PISCA_PISCA.c 'Cristal: 8MHz - modo HS * 'Microcontrolador PIC18F4520 Microchip * 'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios 'Configurao: DIP1 - Chave O9 -ON '****************************************//*********************************** 'Objetivo: 'Este simples programa inverte todo os pinos do PORTD em intervalos 'de 1 segundo '****************************************//**********************************/ void main(){ TRISD = 0; PORTD = 0; while while(1){ PORTD = 0B11111111; Delay_ms(1000); PORTD = 0; Delay_ms(1000); } } //funo principal do programa //configura portd como saida //zera todos os pinos do portd //seta todos os pinos do PORTD //delay de 1 segundo //zera todo o portd //delay de 1 segundo

Ao compilarmos o programa acima com o MikroC PRO teremos como resultado o seguinte cdigo de mquina (descrito somente algumas linhas do cdigo gerado):

Figura 1.5 - Opcode gerado aps compilao do programa A partir da imagem acima, podemos verificar os valores que sero gravados na memria de programa aps gravao do programa exemplo acima. Esses valores so teis para o programador experiente, pois permite visualizar e acompanhar a execuo por completo da compilao dos arquivos.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 13 de 74

Nota: Os cdigos em assembly visualizado na figura acima foi gerado pelo compilador MikroC PRO aps a compilao de um programa escrito em C.

Figura 1.6 Cdigo Hexadecimal Memria de dados - EEPROM Como estudamos anteriormente, sabemos que as memrias do tipo EEPROM so muito parecidos com a memria RAM, sua diferena que as distingue devido ao fato da memria EEPROM reter as informaes salvas quando a desenergizarmos. Podemos salvar nesta memria dados no-volteis durante o decorrer da execuo de nosso programa. O PIC18F4520 possui internamente 256 bytes de memria de dados EEPROM. O endereo inicial da memria de dados EEPROM 00h seu ltimo endereo FFh. Memria de dados - RAM Chegamos a uma das partes mais importantes do estudo referente ao nosso microcontrolador PIC, neste tpico apresentaremos toda a estrutura de memria de dados RAM. Aprenderemos a trabalhar com ela e tambm onde esto localizados os bits que ligam/desligam, configuram e controlam os perifricos internos do PIC, ou seja, os SFRs (Registradores de Funes Especiais). A memria de dados RAM dividida em dois grupos: os chamados GPRs (Registradores de Propsito Geral) e os SFRs ( Registradores de Funes Especiais). Os GFRs tem a funo de armazenar dados de uso geral que utilizamos e criamos durante a execuo do nosso programa. Podemos guardar nesse regio da memria RAM dados volteis de variveis, tabelas, constantes, entre outras. Os SFR's so a parte principal do microcontrolador, nesta rea da memria RAM que esto armazenados todos os setups de funcionamento do PIC. A partir desses registradores podemos configurar o modo de trabalho dos timers/counters, USART, conversores analgicos digitais, etc. O PIC18F4520 em estudo possui internamente 1536 bytes de memria de dados RAM. O banco de memria RAM da famlia PIC18F dividido em 16 bancos que contm 256 bytes de memria cada, pois a forma de implementao das instrues limita o endereamento a um mximo de 7 bits ou 128 registradores. Por esse motivo, a Microchip usa a filosofia de pginao de memria, criando bancos de memria a cada 128 posies. Acompanhe a figura abaixo:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 14 de 74

Figura 1.7 Diagrama da memria RAM interna Vamos examinar o mapa de registradores dos SFR's. (endereo 0F80h FFFh): Registradores de Funes Especiais SFRs

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 15 de 74

Figura 1.8 Registradores de Funes Especiais SFRs Atravs da configurao desses registradores especiais, podemos monitorar o status do microcontrolador em determinados momentos e situaes. Estudaremos a funo desses registradores quando estivermos trabalhando com projetos, pois dessa maneira ficar mais claro seu funcionamento.

Introduo Introduo as portas de I/O


Os microcontroladores PIC possuem pinos fsicos destinados comunicao de dados com os circuitos externos. Atravs desses pinos podemos enviar nveis lgicos (0 ou 1) para, por exemplo, acender ou apagar um LED, acionar displays LCD, ler botes e sensores, etc. O microcontrolador PIC18F45200 da Microchip possue 34 pinos de escrita e leitura (I/O), os quais esto divididos em quatro portas chamadas: PORTA, PORTB, PORTC, PORTD e PORTE.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 16 de 74

Figura 1.9 PIC18F4520 Os registradores PORTB, PORTC e PORTD possuem 8 pinos de I/O cada, enquanto o PORTE possue 4 pinos de I/O e PORTA 6 pinos de I/O. Cada porta de I/O possui trs registradores que controlam suas funes: um registrador PORT, LAT e um registrador TRIS. Os registradores PORT (PORTA, PORTB, PORTC, PORTD, PORTE) pertencem aos SFRs e armazema os dados das portas paralelas (I/O's) do microcontrolador. Qualquer escrita realizada em um desses registros automaticamente altera todo o contedo presente na sada do chip. O registrador TRIS utilizado para configurar cada pino da respectiva porta como entrada ou sada. Assim, cada bit desse registrador corresponde a um pino da porta. Se o bit estiver em 1 (um), o pino correspondente esta configurado como entrada de dados, e se estiver em 0 (zero) configuramos este pino como sada de dados. As portas de comunicao paralela do PIC so utilizadas para efetuar diversas tarefas:

PORTA O PORTA
A primeira porta a ser estudada o PORTA. Alm das funes de entrada e sada de dados encontramos tambm diversas outras funes multiplexadas aos seus pinos: Vamos conhecer as funes de cada pino do PORTA: Tabela 1.2 Pinos PORTA
Pino(DIP) 2 3 4 Funo RA0 AN0 RA1 AN1 RA2 AN2 VrefCVref RA3 AN3 Vref+ RA4 T0CKI C1OUT RA5 AN4 /SS HLVDIN C2OUT OSC1 CLKI RA7 OSC2 CLKO RA6 Tipo I/O Entrada I/O Entrada I/O Entrada Entrada Sada I/O Entrada Entrada I/O Entrada Sada I/O Entrada Entrada Entrada Saida Entrada Entrada I/O Sada Sada I/O Descrio Entrada e sada de uso geral Entrada do conversor AD0 Entrada e sada de uso geral Entrada do conversor AD1 Entrada e sada de uso geral Entrada do conversor AD2 Entrada de referncia baixa do A/D Sada de tenso da referencia do comparador Entrada e sada de uso geral Entrada do conversor AD3 Entrada de referncia alta do A/D Entrada e sada de uso geral Entrada de clock timer0 Sada do comparador 1 Entrada e sada de uso geral Entrada do conversor AD4 Entrada de seleo SPI Detector de alta/baixa voltagem. Sada do comparador 2 Entrada do cristal oscilador Entrada do clock externo Entrada e sada de uso geral Sada do cristal oscilador Entrada do clock exteno Entrada e sada de uso geral

5 6 7

13 14

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 17 de 74

Registrador PORTA

Figura Figura 1.10 - PORTA O registrador PORTA esta localizado na memria RAM do PIC e possui o endereo (0XF80). Este registrador ir acessar os pinos da PORTA da seguinte maneira:

PORTA
RA7 Bit7 RA6 Bit6 RA5 Bit5 RA4 Bit4 RA3 Bit3 RA2 Bit2 RA1 Bit1 RA0 Bit0

Toda a porta de I/O possui internamente um latch de sada para cada pino. Dessa forma, uma escrita no registrador PORTA ir na realidade escrever em cada latch do PORTA. O lat da PORTA chamado de LATA. Para ler um dado um dado no PORTA, basta ler o contedo do registrador PORTA. Nota: O registrador PORTA o "espelho" dos pinos do PORTA do PIC, para lermos ou escrevermos nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No podemos esquecer que o registrador TRISD tambm afeta a leitura e escrita no port.

Registrador TRISA
O registrador TRISA utilizado para o controle da direo de atuao de cada pino de I/O do PORTA. Atravs desse registradores definimos e configuramos o modo de trabalho do pino do microcontrolador como entrada ou sada de dados. Este registrador define os pinos do PORTA da seguinte maneira: TRISA RA7 Bit7 RA6 Bit6 RA5 Bit5 RA4 Bit4 RA3 Bit3 RA2 Bit2 RA1 Bit1 RA0 Bit0

Se o bit do registrador TRISA estiver em nvel lgico 1, o pino correspondente a este bit do PORTA estar configurado como entrada. Se o bit do registrador TRISA estiver em nvel lgico 0, o pino correspondente a este bit do PORTA estar configurado como sada.

Leitura do LATCH de um pino do PIC


Para ler o LATCH de sada do microcontrolador ao invs dos pinos utilizamos o registrador LATA, referente ao PORTA, ou LATB, referente ao PORTB. O latch de sada encontra-se antes do buffer de sada do pino, e por esse motivo podemos ler seu estado.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 18 de 74

O PORTB
O PORTB, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:
Pino(DIP) 33 Funo RB0 INT0 FLT0 AN12 RB1 INT1 AN10 RB2 INT2 AN8 RB3 AN9 CCP2** RB4 KBI0 AN11 RB5 KBI1 PGM RB6 KBI2 PGC RB7 KBI3 PGD Tipo I/O Entrada Entrada Entrada I/O Entrada Entrada I/O Entrada Entrada I/O Entrada I/O I/O Entrada I/O I/O Entrada I/O I/O Entrada I/O I/O Entrada I/O Descrio Entrada e sada de uso geral Interrupo externa 0 Entrada de erro PWM para CCP1 Entrada analgica 12 Entrada e sada de uso geral Interrupo externa 1 Entrada analgica 10 Entrada e sada de uso geral Interrupo externa 2 Entrada analgica 8 Entrada e sada de uso geral Entrada analgica 9 Entrada de captura 2, sada de comparao 2 e sada PWM 2 Entrada e sada de uso geral Pino de interrupo por mudana de nvel Entrada analgica 11 Entrada e sada de uso geral Interrupo por mudana de estado Pino de habilitao ICSP baixa voltagem (In-Circuit Debugger) Entrada e sada de uso geral Interrupo por mudana de estado Pino de clock do ICSP Entrada e sada de uso geral Interrupo por mudana de estado Pino de dados do ICSP

34 35 36 37 38 39 40

Assim como no PORTA, o PORTB possui dois registradores que definem o modo de trabalho dos seus pinos de I/O: so eles: PORTB e TRISB. Tanto o registrador PORTB quanto o registrador TRISB esto localizados na memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais). O registrador TRISB tem as mesmas funes que o registrador TRISA estudado anteriormente, que programar os pinos do PIC para serem entradas ou sadas para uso geral. O registrador PORTB funciona da mesma maneira descrita no PORTA.

O PORTC
O PORTC, tal qual o PORTA, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:
Pino(DIP) 15 16 17 18 23 24 25 26 Funo RC0 T10S0 T1CKI RC1 T10S1 CCP2** RC2 CCP1 P1A RC3 SCK SCL RC4 SDI SDA RC5 SD0 RC6 TX CK RC7 RX DT Tipo I/O Sada Entrada I/O Entrada Sada I/O I/O Saida I/O I/O I/O I/O Entrada I/O I/O Sada I/O Sada I/O I/O Entrada I/O Descrio Entrada e sada de uso geral Sada do clock do Timer 1 Clock externo Timer1 / Timer3 Entrada e sada de uso geral Entrada de clock do Timer1 Mdulo CCP2(multiplexado com RB3 ) Entrada e sada de uso geral Mdulo CCP1 Sada ECCP1 Entrada e sada de uso geral Entrada e sada do clock serial para o modo SPI Entrada e sada do clock serial para o modo I2C Entrada e sada de uso geral Entrada de dados SPI Entrada e sada de dados I2C Entrada e sada de uso geral Sada de dados SPI Entrada e sada de uso geral Canal de transmisso UART Clock de sincronismo UART Entrada e sada de uso geral Canal de recepo UART Clock de sincronismo UART

Assim como no PORTA, o PORTC possui dois registradores que definem o modo de trabalho dos seus pinos de I/O: so eles: PORTC e TRISC. Tanto o registrador PORTC quanto o registrador TRISC esto localizados na memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais).

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 19 de 74

O registrador TRISC tem as mesmas funes que o registrador TRISA estudado anteriormente, que programar os pinos do PIC para serem entradas ou sadas. O registrador PORTC funciona da mesma maneira descrita no PORTA. As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

O PORTD
O PORTD, tal qual o PORT A, PORTB multiplexadas aos seus pinos, acompanhe:
Pino(DIP) 19 20 21 22 27 28 29 30 Funo RD0 PSP0 RD1 PSP1 RD2 PSP2 RD3 PSP3 RD4 PSP4 RD5 PSP5 P1B RD6 PSP6 P1C RD7 PSP7 P1D Tipo I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O Sada I/O I/O Sada I/O I/O Sada Descrio Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1 Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1 Entrada e sada de uso geral Porta de comunicao paralela Sada ECCP1

PORTC

implementa

diversas

outras

funes

Assim como nas outras portas, o PORT D possui dois registradores que definem o modo de trabalho dos seus pinos de I/O: so eles: PORTD e TRISD. Tanto o registrador PORT D quanto o registrador TRISD esto localizados na memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais). O registrador TRISD tem a funo de programar os pinos do PIC para serem entradas ou sadas. O registrador PORTD o "espelho" dos pinos do PORTD do PIC, para lermos ou escrevermos nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No podemos esquecer que o registrador TRISD tambm afeta a leitura e escrita no port. As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

O PORTE
O PORTE, tal qual as outras portas, implementa diversas outras funes multiplexadas aos seus pinos, acompanhe:
Pino(DIP) Funo Tipo Descrio

8 9 10 1

RE0 /RD AN5 RE1 /WR AN6 RE2 /CS AN7 /MCLR VPP RE3

I/O Entrada Entrada I/O Entrada Entrada I/O Entrada Entrada Entrada Entrada Entrada

Entrada e sada de uso geral Controle de leitura do port paralelo Entrada analgica AD5 Entrada e sada de uso geral Controle de escrita do port paralelo Entrada analgica AD6 Entrada e sada de uso geral Controle de seleo do port paralelo Entrada analgica AD7 Entrada do RESET externo. Este pino ativo em nvel baixo Pino de habilitao de alta voltagem ICSP Entrada Digital

Assim como nas outras portas, o PORTE possui dois registradores que definem o modo de trabalho dos seus pinos de I/O: so eles: PORTE e TRISE. Tanto o registrador PORTE quanto o registrador TRISE esto localizados na memria RAM do PIC e pertencem aos SFR'S (Registradores de Funes Especiais). O registrador TRISE tem a funo de programar os pinos do PIC para serem entradas ou sadas.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 20 de 74

O registrador PORTE o "espelho" dos pinos do PORTE do PIC, para lermos ou escrevermos nesse registrador estamos na verdade atuando sobre os pinos do port respectivamente. No podemos esquecer que o registrador TRISE tambm afeta a leitura e escrita no port. As funes especiais de cada pino sero vistas quando estudarmos suas aplicaes reais atravs dos projetos que vamos desenvolver durante nosso curso.

Reset
Sempre que energizamos nosso circuito microcontrolado interessante que o PIC seja resetado, para isso necessrio a insero de um circuito eletrnico bem simples, mas capaz de realizar esse procedimento que costumamos chamar de POWER ON RESET RESET. Alm disso interessante que exista um boto para que o usurio possa reiniciar o sistema sempre que for necessrio (reset manual), a seguir indicamos um exemplo de circuito para o reset.

Figura 1.11 Circuito de Reset

Os PICs possuem diversos tipos de reset:


POR - Power On Reset - o reset que ocorre quando o chip ligado. Reset do MCLR durante a operao normal Reset do MCLR durante o modo SLEEP Reset do watchdog durante operao normal Reset do detector de Brown-out (BOR) Instruo de Reset Reset do Stack Pointer

Ciclos de mquina
A contagem de tempo no medida diretamente pela freqncia de oscilao do cristal e sim atravs do que chamamos de CICLO DE MQUINA. Internamente no microcontroladores PIC a freqncia do cristal dividida por 4, o que nos resulta que a freqncia real de trabalho : freqncia de trabalho real = freqncia oscilador / 4

Conclumos ento que: a cada 1 ciclo de mquina corresponde a 4 pulsos do oscilador. Para exemplificar vamos supor que temos conectado ao microcontrolador um cristal de quartzo de 8 MHz.

Qual a freqncia real de execuo das instrues do nosso microcontrolador?


muito simples, acompanhe: Sabemos que a freqncia do cristal utilizado de 8 MHz, e que cada instruo leva exatamente 1 ciclo de mquina para ser executada; Basta dividir o valor do cristal por 4 para sabermos o valor real de trabalho do PIC. freqncia de trabalho real = 8 MHz / 4 => 2 MHz

Conclumos ento que nosso microcontrolador PIC com cristal de 8 MHz esta trabalhando efetivamente a 2 MHz, ou seja , cada instruo de programa leva 0.5 us para ser executada. Pois: Frequencia = 1 / periodo Logo: Periodo = 1/ 2MHz -> 0.5us

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 21 de 74

Nota: Temos que lembrar que nosso microcontrolador em estudo pode operar em 10MHz (ciclo de mquina)

Os bits de configurao (fusveis)


Os microcontroladores PIC possui internamente regies que so resposveis por determinar o modo de trabalho configurao ou fusveis. de grande importncia que desses bits, caso contrrio teremos srios problemas no de memrias no volteis (Flash) do chip. So chamados de bits de venhamos entender o funcionamento funcionamento do nosso projeto.

Os bits de configurao do PIC esto armazenados em uma rea reservada do PIC. Podemos configurar diversas funes atravs desses bits: OSC Selection (seleo do oscilador) RESET (tipos de acionamento de reset) POWER -on Reset (POR) Power -up Timer (PWRT) Oscillator Start-up Timer (OSC) Brown-out Reset (BOR) (verificador de tenso de alimentao) Interrupts Watchdog Timer (WDT) SLEEP Code Protection ID Locations In-Circuit Serial Programming

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 22 de 74

Mapa dos bits de configurao do PIC18F4520


Tabela 1.3 Bits de configurao do PIC18F4520

Tabela 1.4 Bits de configurao do PIC18F4520(Detalhado) Apresentamos a seguir uma tabela com a descrio de todos os bits de configurao do PIC18F4520: Oscilador Fail-Safe Clock Monitor Enable Internal External Switch Over Mode Power Up Timer Brown Out Detect Brown Out Voltage Watchdog Timer Watchdog Postscaler CCP2MX PortB A/D Enable Low Power Timer1 Osc Enable Mster Clear Enable Stack Overflow Reset Low Voltage Program Extended Instruction Enable Bit Background Debug Code Protect 0x0800 A 0x1fff Code Protect 0X2000 A 0X3FFF Code Protect 0X4000 A 0X5FFF Code Protect 0X6000 A 0X7FFF Code Protect Boot Data EEPROM Code Protect Table Write Protect 0x2000 A 0x1fff Table Write Protect 0x2000 A 0x3fff Table Write Protect 0x4000 A 0x5fff Table Write Protect 0x6000 A 0x7fff Config Write Protect Table Write Protect Boot Data Ee Write Protect Table Read Protect 0x0800 A 0x1fff Table Read Protect 0x2000 A 0x3fff Table Read Protect 0x4000 A 0x5fff Table Read Protect 0x6000 A 0x7fff Table Read Protect Boot Acompanhe: Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 23 de 74 RC, EC, LP, XT, HS, HS-PLL, RC-SOC2 com RA6, EC-OSC2 com RA6 Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado 2.5V, 2.7V, 4.5V ou 4.7V Habilitado ou Desabilitado 1:1 , 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, ou 1:128 Pino RC1 ou RB3 PortB configurado como I/O Digital no reset ou configurado como A/D no reset Habilitado ou Desabilitado MCLR Habilitado ou RE3 Habilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado Habilitado ou Desabilitado

No painel de configurao do MikroC PRO, podemos visualizar e configurar os bits de configurao referente ao nosso microcontrolador PIC18F4520.

Figura 1.12 Configurao dos fusiveis no MikroC PRO Podemos configurar os bits de configurao de duas maneiras: Atravs do MikroC PRO, no momento da criao ou desenvolvimento do projeto ou atravs dos programas de gravao dos gravadores de PIC (WinPIC800, IC-Prog etc.) No primeiro campo de configurao dos fusiveis do MikroC PRO encontramos o campo de seleo de clock. Atravs desses campos podemos informar vrios tipos de osciladores e circuitos de oscilao:

Configurao de Clock
Todo microcontrolador requer um circuito de oscilao pois quem d o sinal de "partida" e "sincronismo" para qualquer atividade interna da chip. A freqncia de operao de oscilao um dos agentes que determinam a velocidade de execuo das instrues do microcontrolador. O PIC18F4520 pode funcionar com diversas fontes de osciladores: LP XT HS HS + PLL RC RCIO EC ECIO Low-power cristal Cristal ou ressonador High-Speed cristal (cristal de alta velocidade) ou ressonador High-Speed cristal ou ressonador com PLL habilitada Resistor / Capacitor externo Resistor / Capacitor externo com pino de I/O Clock externo Clock exteno com pino de I/O

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 24 de 74

Vamos conhecer cada um dos tipos de osciladores:


Oscilador RC com pino RA6 como sada de clock

Este o tipo de oscilador mais simples que existe e tambm o mais barato, mas, por outro lado, o menos preciso, variando muito a tenso de trabalho, temperatura e tolerncias. O circuito RC deve ser ligado conforme a figura seguinte:

Oscilador

RC com pino RA6 como I/O de uso geral

Este o tipo de oscilador mais simples que existe e tambm o mais barato, mas, por outro lado, o menos preciso, variando muito a tenso de trabalho, temperatura e tolerncias. O circuito RC deve ser ligado conforme a figura seguinte: Nesta configurao o pino RA6 pode ser utilizado como I/O de uso geral Modo HSPLL HSPLL na verdade um modo em que podemos multiplicar o valor da freqncia de entrada do cristal oscilador por 4. ideal para ambientes em que o dispositivo no pode gerar EMI (interferncia Eletromagntica). Este modo deve ser habilitado nos "fusveis de configuraes" no momento em que formos gravar o chip.

Figura 1.13 - Modo HSPLL Por exemplo: Caso venhamos conectar ao PIC um cristal de 10 MHz entre os pinos OSC1 e OSC2 e ativarmos o modo HSPLL no momento em que gravarmos o chip, executando seu ciclo de mquina a 10MHz (10 MIPS - milhes de instrues por segundo). Exemplo: Frmula do ciclo de mquina com HSPLL ativado cristal de 8MHz Ciclo de mquina = (Fosc / 4 ) * 4 Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 25 de 74

Ciclo de mquina

= 8 MHz

ou

0.125us

Circuito de Oscilao EC com pino RA6 como I/O de uso geral Este modo de configurao utilizado quando temos uma fonte de clock em nosso circuito eletrnico. Obs: A fonte de clock dever estar livre de ruidos e deformaes.

Figura 1.14 Modo EC com pino RA6 como I/O de uso geral clock Circuito de Oscilao EC com pino RA6 como sada de clock Este modo de configurao utilizado quando temos uma fonte de clock em nosso circuito eletrnico. Percebam que a sada de clock Fosc/4, ou microcontrolador, a partir desse clock de microcontroladores no circuito. seja, o prprio ciclo de mquina do sada, poderemos sincronizar outros

Obs: A fonte de clock dever estar livre de ruidos e deformaes.

Figura 1.15 Modo EC com pino RA6 como sada de clock quartzo Osciladores LP , XT ou HS - Cristal de quartzo ou Ressonador Para utilizarmos cristal ou ressonadores em nosso chip, devemos conect-lo da seguinte maneira:

Figura 1.16 Clock gerado a partir de um cristal de quartzo Nota: Quando projetamos um circuito com microcontrolador, a regra colocar o oscilador to perto quanto possvel do microcontrolador, de modo a evitar qualquer interferncia nas linhas que ligam o oscilador ao chip. Note que existe dois capacitores ligados em paralelo com o cristal. O valor desses capacitores variam de acordo com a frquencia do cristal utilizado. Segue uma tabela apresentando os valores dos capacitores: Tipo de oscilador LP (cristal freqncia) de Freqncia cristal baixa 32kHz 200KHz Valores tipicos do capacitor C1 33pF 15pF C2 33pF 15pF para o

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 26 de 74

XT (cristal) HS (cristal freqncia) de

200KHz 1.0MHz 4.0MHz 4.0MHz alta 8.0 MHz 20.0MHz 25MHz

22-68pF 15pF 15pF 15pF 15-33pF 15-33pF 15-33pF

22-68pF 15pF 15pF 15pF 15-33pF 15-33pF 15-33pF

Para quem no se recorda de como um cristal de quartzo ou cermico, segue suas fotos:

Ressonador cermico cristal de quartzo Figura 1.17 Osciladores Os ressonadores cermicos so comercializados em dois tipos: com dois terminais e com trs terminais. Os mais utilizados so os ressonadores com trs terminais pois no precisam de capacitores externos. O ressonador com dois terminais obedecem a ligao da figura 5.4, enquanto no de trs o pino central deve ser aterrado. segue abaixo o esquema de ligao do ressonador com trs terminais: Os ressonadores cermicos uma segunda opo. No to barato quanto um RC mas bem mais estvel e preciso. Nota: Antes de gravarmos um programa no microcontrolador PIC devemos "queimar" os fusivel de configurao informando qual o tipo de oscilador estamos utilizando em nosso hardware. Nos projetos do nosso curso iremos utilizar cristal de quartzo de 8 MHz pois garantimos maior preciso nas rotinas de tempo nas execues das instrues. OSCSEN (SYSTEM CLOCK SWITCH BIT) Atravs desse bit de configurao, podemos selecionar o modo de acionamento do segundo oscilador de baixa frequncia do PIC, mas para isso faz necessrio habilitarmos o T1OSCEN no TIMER1. Obs: Caso desejemos utilizar o segundo oscilador (T1OSO e T1OSI), e no venhamos a programar o TIMER1 corretamente, automaticamente o bit de configurao do OSCSEN ser desabilitado.

Configurao dos Fusveis de Energia


PWRTEN PWRTEN (SYSTEM CLOCK SWITCH BIT) Atravs desse bit, podemos configurar o modo POWER para o acionamento do PIC, quando este bit estiver acionado o modo POWER-UP TIMER estar habilitado. O temporizador de power-up pode ser utilizado para fazer com que o chip permanea em reset por aproximadamente 72ms aps o chip ter sido ligado. E deve ser utilizado nos casos em que o chip no inicializa corretamente devido a um tempo muito elevado para a estabilizao da fonte de alimentao ou do circuito de reset externo. BROWNBROWN-Out O detector de brown-out utilizado para provocar o reset da CPU no caso de a tenso de alimentao cair abaixo de um determinado limite. Uma vez que a tenso retorne ao seu valor nominal, o circuito de reset liberado e o programa reiniciado. No PIC18F4520 podemos selecionar 4 tipos de tenses para o BROWN-OUT: 2.0V, 2.7V, 4.2V ou 4.5V.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 27 de 74

Podemos habilitar ou desabilitar o detector de brown-out, basta selecionar o bit de configurao caso desejemos habilitar o brown-out. Enable WDT - Watchdog Timer Enable (co de guarda) O watchdog timer ou co de guarda um sistema interno ao microcontrolador que evita que o programa pare em um determinado ponto. Imagine que voc desenvolveu uma aplicao e que por um erro de software em certo momento o seu programa pra (entra em loop infinito). Caso o watchdog dog no seja resetado de tempos em tempos ele ir "estourar", ou seja, chegar ao final da sua contagem fazendo com que o microcontrolador resete e reinicie todo o processo. O tempo mnimo para estouro do watchdog de 18 ms, porm podemos estender esse tempo atravs do postscale. Com essa funo podemos multiplicar o tempo mnimo de 18 ms com os seguintes multiplicadores do prescaler: 1:1; 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128. CCP2MX Podemos atravs desse bit definir se queremos multiplexar o mdulo CCP2 com o pino RC1 (CCP2MX = 0) ou com o pino RB3 (CCP2MX = 1) Debug Atravs desse bit , podemos habilitar o modo DEBUGGER no PIC. Nesse modo possvel emular um programa na prpria placa de testes. Emular consiste no processo de, junto com o computador, testar passo a passo o funcionamento do programa que est rodando no microcontrolador. Se esta opo estiver ativa, os pinos de gravao RB6 e RB7 deixam de funcionar como I/O's; caso contrrio, o funcionamento desses pinos fica normal. LVP (Low Voltagem Programming) Normalmente quando o PIC gravado, acionado uma tenso de 13Vcc no pino MCLR. Se a opo LVP estiver ativa, para gravar o PIC basta ter nivel lgico 1 no pino MCLR, mas neste modo, aps a gravao o pino RA5 do PIC no poder ser utilizado como I/O. STVREN (Stack Full/Underflow Reset Enable Bit) O PIC18F4520 possui internamente 31 endereos de pilha. Quando habilitamos esse bit STVREN, toda vez que ultrapassarmos o limite da pilha o microcontrolador ser resetado. rea de Protees contra leitura e escrita Code Protect 0x0800 a 0x1FFF Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x0800 a 0x1FFF. Code Protect 0x2000 a 0x3FFF Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x2000 a 0x3FFF. Code Protect 0x4000 a 0x5FFF Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x4000 a 0x5FFF. Code Protect 0x6000 a 0x7FFF Caso este bit esteja habilitado, protege contra leitura a memria de programa de 0x6000 a 0x7FFF. Data EE Read Protect Caso este bit esteja habilitado, protege contra leitura os 256 bytes da memria EEPROM (memria no voltil). Code Protect Boot Caso este bit esteja habilitado, protege contra leitura a regio de memria Boot (rea da memria de programa) 0x0000 at 0x0FF0. Table Write Protect 0x0200 a 0x1FFF Caso este bit esteja habilitado, protege a memria de programa contra escrita por tabela no endereo especificado. Table Write Protect 0x2000 a 0x3FFF Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no endereo especificado. Table Write Protect 0x4000 a 0x5FFF Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no endereo especificado. Table Write Protect 0x6000 a 0x7FFF Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 28 de 74

Caso este bit esteja habilitado, protege a memria de programa contra escrtita por tabela no endereo especificado. Data Write Protect Caso este bit esteja habilitado, protege contra escrita os 256 bytes da memria EEPROM (memria no voltil). Table Write Protect Boot Caso este bit esteja habilitado, protege contra escrtita por tabela a rea de boot. Config Write Protect Caso este bit esteja microcontrolador. habilitado, protege contra escrita a rea de configurao do

Table Read Protect 0x0800 a 0x1FFF Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no endereo especificado. Table Read Protect 0x2000 a 0x3FFF Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no endereo especificado. Table Read Protect 0x4000 a 0x5FFF Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no endereo especificado. Table Read Protect 0x6000 a 0x7FFF Caso este bit esteja habilitado, protege a memria de programa contra leitura por tabela no endereo especificado.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 29 de 74

Unidade 2 - Canais A/D


Conversor A/D do PIC
O PIC18F4520 possui internamente 12 canais de A/D com resoluo de 10 bits cada. Atravs de um conversor A/D com resoluo de 10 bits e tenso de referncia de 5V, podemos obter um valor de 4,8876.. mV, pois 5V/ (2E10 - 1) = 4,8876... mV. Os conversores A/D dos PICs utilizam uma tcnica de aproximao sucessivas, normalmente com resoluo de 10 bits, com clock selecionvel pelo usurio e mltiplas entradas multiplexadas.

Figura 2.1- Canais AD multiplexados Os registradores que participam da configurao do conversor A/D so: ADCON0, ADCON1 e ADCON2. Nosso A/D possui resoluo de 10 bits (8 + 2 bits), onde os valores das converses so armazenados nos registradores ADRESH e ADRESL.

Registrador ADCON0:
Vejamos o funcionamento de cada bit desse registrador:

ADCON0:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 30 de 74

Tabela 2.1 ADCON0


CHS3 CHS2 Bit7 Bit6 Bit5 Bit4 HS3 CHS0: CHS3 .. CHS0 Bit de seleo de canal A/D CHS1 Bit3 CHS0 Bit2 GO_DONE Bit1 ADON Bit0

Figura 2.2 Seleo A/D GO/DONE: GO/DONE Bit de status da converso A/D 0 - Converso A/D no est sendo realizada 1 - Converso A/D est sendo realizada ADON: ADON Liga ou desliga o A/D 0 - Conversor A/D desligado 1 - Conversor A/D ligado

Registrador ADCON1:
Vejamos o funcionamento de cada bit desse registrador:

ADCON1:
VCFG1 Bit7 Bit6 Bit5 VCFG0 Bit4 PCFG3 Bit3 PCFG2 Bit2 PCFG1 Bit1 PCFG0 Bit0

VCFG1: VCFG1 Bit de configurao de tenso de referencia (VREF-) 0 VREF-(AN2) 1 - VSS VCFG0: Bit de configurao de tenso de referencia (VREF+) VCFG0 0 VREF+(AN3) 1 - VDD PCFG3, PCFG2, PCFG1, PCFG0: bits configurao do A/D Tabela 2.2 Configurao Pinos A/D

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 31 de 74

ADCON2 Registrador ADCON2:


Vejamos o funcionamento de cada bit desse registrador:

ADCON2 ADCON2:
ADFM Bit7 Bit6 ACQT2 Bit5 ACQT1 Bit4 ACQT0 Bit3 ADCS2 Bit2 ADCS1 Bit1 ADCS0 Bit0

ADFM : Ajusta o formato do resultado da converso A/D 1 - Justifica a direita 0 - Justifica a esquerda ACQT0:Seleo de tempo de aquisio ACQT2 .. ACQT0

ADCS0:Seleo do Clock do Conversor A/D ADCS2 .. ADCS0

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 32 de 74

O bit de ADFM tem a funo de organizar o resultado da converso A/D, de forma que o os valores convertidos sejam justificados a direita ou a esquerda nos registradores ADRESH e ADRESL. Caso venhamos configurar ADFM = 1, organizamos o valor da converso a direita, ou seja, os oitos bits menos significativo ser armazendo em ADRESL, e os 2 bits mais significativo sero armazenados em ADRESH. Caso ADFM = 0, justificaremos a esquerda os valores de converso, desta forma os oitos bits mais significativos ficaro em ADRESH e os 2 menos significativo ficar em ADRESL. Frmula de converso analgico para digital: Rad = ( Vin - Vref-) * 1023 / (Vref+ - Vref-) onde: Rad = Resultado da converso Vref+ e Vref- = valor de tenso de referncia mxima e mnima Vin = Tenso de entrada no pino A/D obs: 1023 o valor mximo de converso do A/D, lembrando que o valor de 0 a 1023.

Trabalhando com AD no MikroC


No MikroC utilizamos os seguinte funo para leitura do conversor A/D do PIC: Sintaxe: Adc_Read (canal_ AD) Na qual 'canal_AD' o canal do conversor AD do PIC que desejamos ler. O nmero do canal AD depende do tipo de PIC usado. Exemplo: unsigned int leitura_ad; leitura_ad = Adc_Read(0); //'cria varivel leitura_ad com ranger 0 a 65535 //'l canal ad0 do PIC e salva na varivel leitura_ad pino RA0) na varivel

A funo Adc_read salva o valor da converso AD (canal 0 leitura_ad.

Lembre-se que o valor da resoluo do AD do PIC18F45200 de 10 bits, e por esse motivo devemos utilizar uma varivel do tipo inteiro para armazenar o valor do A/D.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 33 de 74

Unidade 3 Canal PWM do PIC


Introduo
Os controles de potncia, inversores de freqncia, conversores para servomotor, fonte chaveadas e muitos outros circuitos utilizam a tecnologia do PWM (Pulse Width Modulation) ou Modulao de Largura de Pulso como base de seu funcionamento.

Fonte Chaveada

ServoMotores

Inversores de Freqncia PWM a abreviao de Pulse Width Modulation ou Modulao de Largura de Pulso. Para que se entenda como funciona esta tecnologia no controle de potncia, partimos de um circuito imaginrio formado por um interruptor de ao muito rpida e uma carga que deve ser controlada, conforme a figura abaixo:

Quando o interruptor est aberto no h corrente na lmpada e a potncia aplicada nula. No instante em que o interruptor fechado, a carga recebe a tenso total da fonte e a potncia aplicada mxima. Como fazer para obter uma potncia intermediria, digamos 50%, aplicada carga? Uma idia fazermos com que a chave seja aberta e fechada rapidamente de modo a ficar 50% do

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 34 de 74

tempo aberta e 50% fechada. Isso significa que, em mdia, teremos metade do tempo com corrente e metade do tempo sem corrente. A potncia mdia e, portanto, a prpria tenso mdia aplicada carga neste caso 50% da tenso de entrada.

Figura 3.1 Largura de Pulsos Veja que o interruptor fechado pode definir uma largura de pulso pelo tempo em que ele fica nesta condio, e um intervalo entre pulsos pelo tempo em que ele fica aberto. Os dois tempos juntos definem o perodo e, portanto, uma freqncia de controle. A relao entre o tempo em que temos o pulso e a durao de um ciclo completo de operao do interruptor nos define ainda o ciclo ativo. Variando-se a largura do pulso e tambm o intervalo de modo a termos ciclos ativos diferentes, podemos controlar a potncia mdia aplicada a uma carga. Assim, quando a largura do pulso varia de zero at o mximo, a potncia tambm varia na mesma proporo (duty cycle), conforme est indicado na figura abaixo:

Figura 3.2 Variao mnima ao mximo do duty Cicle do PWM. Este princpio usado justamente no controle PWM: modulamos (variamos) a largura do pulso de modo a controlar o ciclo ativo do sinal aplicado a uma carga e, com isso, a potncia aplicada a ela.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 35 de 74

Figura 3.3 Variao do duty cicle do sinal PWM

Trabalhando Trabalhando com PWM no PIC


O microcontrolador PIC18F45200 possui internamente 2 mdulos CCP (Capture/Compare/PWM Module), CCP1 e CCP2. Podemos manipular com grande facilidade as instrues para gerao de sinal PWM no MikroC. Acompanhe: Os comandos para manipular o mdulo CCP1 so os seguintes: PWM1_Init PWM1_Set_Duty PWM1_Start PWM1_Stop para informar a freqncia do sinal PWM:

Funo de Inicializao da gerao do sinal PWM: No MikroC utilizamos a funo Pwm1_Init() Sintaxe PWM1_Init (valor_da_freqncia em Hz) onde: valor_da freqncia: fator da freqncia em Hz do sinal PWM. PS.: Consultar datasheet do PIC utilizado para saber a freqncia de oscilao. Exemplo: PWM1_Init (4000) //inicia pwm com freqncia de 4khz

Funo de duty Cycle: Atravs da funo PWM1_Set_Duty () podemos controlar o duty cycle do sinal PWM. O valor do duty cycle varia de 0 a 255, onde "0" igual a 0%, "127" igual a 50% e "255" igual a 100%. Sintaxe: PWM1_Set_Duty (valor_duty_cycle) onde: valor_duty_cycle: valor do tipo char (0 255) que determina a porcentagem do duty cycle PWM. Exemplo: PWM1_Set_Duty (192); // carrega duty cycle para 75%

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 36 de 74

Figura 3.4 Variao do duty Cicle Para outros valores de duty cycle calculamos atravs da formula: (Percentual * 255) /100 No caso de configurarmos o duty conforme a figura acima, devemos carregar o seguinte valor para: Duty de 10% PWM1_Set_Duty(25); // carrega valor 26 pois : (10% * 255) / 100 = 25,5 , como somente podemos colocar valores inteiros entre 0 a 255, o valor ser arrendondado para 25 Duty de 50% PWM1_Set_Duty(127); // carrega valor 127 pois : (50% * 255) / 100 = 127,50 , como somente podemos colocar valores inteiros entre 0 a 255, o valor ser arrendondado para 127 Duty de 90% PWM1_Set_Duty(229); // carrega valor 229 pois : (90% * 255) / 100 = 229,50 , como somente podemos colocar valores inteiros entre 0 a 255, o valor ser arrendondado para 229 Funo de Start e Stop: Atravs da funo Pwm_Start, damos incio a gerao do sinal PWM no PIC, e atravs da funo Pwm_Stop finalizamos a gerao do sinal Pwm. Sintaxe: Pwm_Start Pwm_Stop inicial a gerao do sinal PWM no mdulo CCP1 do PIC interrompe a gerao do sinal PWM no mdulo CCP1 do PIC

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 37 de 74

Unidade 4 - TIMERS/COUNTERS
Timers/Counters Os Timers/Counters
Os timers so ferramentas internas dos microcontroladores em contagem de tempo, eventos, temporizao entre outras funes. O PIC18F4520 possui internamente 4 TIMERS: TIMER0 TIMER1 TIMER2 TIMER3 geral que servem para

Vamos conhecer cada um desses temporizadores:

TIMER0
O TIMER0 um temporizador/contador de 8 ou 16 bits que possuem duas funes bsicas: Contagem de RA4/T0CKI; eventos externos (quando a entrada de clock feita por meio do pino

Temporizao (contagem de tempo) quando os pulsos de contagem proveniente do clock interno do PIC (temporizao baseado no ciclo de mquina). O TIMER0 pode ser configurado para trabalhar com prescaler dedicado. O prescaler nada mais do que um contador/divisor programvel que utilizado para reduzir a freqncia do sinal de clock aplicado ao TIMER0 por um fator conhecido.

Figura 4.1 Diviso do Prescaler O valor do prescaler pode ser configurado a partir dos bits T0PS2, T0PS1 e T0PS0 do registrador T0CON (TIMER0 CONTROL REGISTER); O prescaler passa a ser uma importantssima ferramentas do timer, pois atravs dele conseguimos gerar tempos muito maiores. Quando o TIMER0 configurado para operar no modo de 8 bits, podemos efetuar contagens de 0 a 255 (limite da capacidade para 8 bits). Quando a contagem chega at seu valor mximo de 255, o prximo pulso acarretaria o que chamamos de "estouro de contagem", fazendo com que o valor de contagem de incio novamente a partir do 0 (zero). No caso anterior, caso tenhamos a interrupo do TIMER0 habilitada, no momento que ocorre o "estouro de contagem", seria gerado um pedido de interrupo do TIMER0. No modo 16 bits do TIMER0, seu funcionamento igual ao modo de 8 bits, porm neste cado a faixa de contagem de 0 a 65535. Os valores de iniciais de temporizao/contagem devem ser carregados nos registradores especiais intitulado de TMR0L (TIMER0 Module Low Byte Register) e TMR0H (TIMER0 Module Hight Byte Register); Quando programamos os timers para atuarem como temporizadores, estamos considerando que os pulsos que incrementam os registradores de contagem so proveniente do valor do oscilador / 4, ou seja, caso estivermos utilizando um cristal de 4MHz, iremos incrementar em uma unidade os registradores de contagem a cada 1 us, pois 4Mhz/4 = 1MHz = 1us (microsegundos). Dica: Repare que a unidade resultante da diviso da Frequencia do oscilador / 4 (ciclo de mquina) esta em MHz ( unidade de frequncia), neste caso para sabermos o tempo (periodo), basta dividir 1 / seu valor. Ex: 1 / (Fosc / 4 )

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 38 de 74

Para um cristal de 8 MHz teremos o seguinte tempo de ciclo de mquina: 1 / (8 / 4) = 0,5 us (microsegundos).

Os Registradores relacionados ao TIMER0 so:


Tabela 4.1- Registrador relacionados com o TIMER0

TMR0L um registrador de contagem de 8 bits que possui a funo de armazenar a parte baixa do valor de contagem programada do TIMER0. TMR0H um registrador de contagem de 8 bits que possui a funo de armazenar a parte alta do valor de contagem programada do TIMER0. Os registradores TMR0L e TMR0H juntos formam um nico registrador de 16 bits, que nos permite uma contagem mxima de 0 a 65535. INTCON um registrador de 8 bits responsvel pela configurao do modo de operao do TIMER0. Podemos definir atravs desse registrador o valor do prescaler que desejamos acionar, o modo de operao de contagem de 8 ou 16 bits, seleo da fonte de clock (interna ou externa) para o timer, seleo de disparo do timer atravs de borda de subida ou borda de descida do clock externo no pino RA4/T0CK1. Abaixo segue o diagrama esquemtico do Timer0.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 39 de 74

Figura 4.2 Diagrama interno do TIMER0 O registrador T0CON responsvel pela configurao pelo modo de operao do Timer0, de vital importncia conhecer todas as funes de seus bits.

T0CON: (TIMER0 Counter Register)


Tabela 4.2 T0CON TMR0ON Bit7 T08BIT Bit6 T0CS Bit5 T0SE Bit4 PSA Bit3 T0PS2 Bit2 T0PS1 Bit1 T0PS0 Bit0

TMR0ON: Bit de controle para ligar e desligar a contagem do TIMER0; 0 desabilita a contagem do TIMER0 1 - Habilita a contagem do TIMER0 T08BIT: Bit de seleo de funcionamento do TIMER0 em 8 ou 16 bits; 0 - TIMER0 configurado para funcionar como contador/temporizador em 16 bits; 1 - TIMER0 esta configurado para funcionar como contador /temporizador de 8 bits; T0CS: Bit de seleo de fonte de clock para o TIMER0; 0 - A fonte de clock proveniente do meio interno do chip 1 - A fonte de clock proveniente do pino T0CKI (meio externo) T0SE: Bit de seleo de borda (vlido somente caso a fonte de clock seja pelo meio externo ao chip) 0 - Contagem do timer ocorre por borda de subida no Pino T0CKI 1 - O incremento do timer ocorre na borda de descida no pino T0CKI /PSA: Bit de seleo da utilizao do prescaler; 1 - TIMER0 no utiliza prescaler. A cada alterao do pulso de clock, corre incremento de uma unidade nos registradores de contagem. Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 40 de 74

0 - TIMER0 utiliza prescaler. T0PS2; T0PS1; T0PS0 : Bits de seleo de fonte de prescaler Tabela 4.3 - Bits de seleo de fonte de prescaler(Timer 0) T0PS2 1 1 1 1 0 0 0 0 Configurao do Prescaler: Como sabemos, atravs do prescaler conseguimos tempos maiores entendermos melhor sua utilizao acompanhe o exemplo abaixo: com os timers, para T0PS1 1 1 0 0 1 1 0 0 T0PS0 1 0 1 0 1 0 1 0 Prescaler 1:256 1:128 1:64 1:32 1:16 1:8 1:4 1:2

Digamos que o ciclo de mquina no PIC sej de 1us e o TIMER0 esteja configurado no modo 8 bits (contagem de 0 a 255) e sem o presacaler. O TIMER0 ira "estourar" sua contagem em 256us. Agora digamos que para o mesmo anunciado anterior, configuramos e acionamos o prescaler para 1:2. Nosso intervalo de "estouro" do TIMER0 no mais ser 256us mas sim 512us. Se ao invs de prescaler de 1:2 utilizarmos prescaler 1:32, o tempo agora ser de 256us x 32 = 8192us. Como calcular o tempo de estouro do TIMER0? Para calcular o tempo de "estouro" do TIMER com prescaler, utilizamos a seguinte frmula: Tempo de estouro: Em que: Ciclo de mquina: o valor da relao entre: 1 / (Fosc / 4 ), onde Fosc justamente a frequencia do cristal. Obs: manter modo PLL desabilitado, iremos estudar esta funo mais adiante. Prescaler : o fator de diviso programado no prescaler. Modo 8/16bits: o modo de contagem programado no TIMER0, para 8 bits o valor 256, e para 16 bits, o valor ser de 65536. Valor de contagem: o valor de carregagem no registrador de contagem TMR0H eTMRL. Exemplo: Precisamos ligar e desligar um rel a cada 1 segundo ( um segundo ligado e um segundo desligado), estamos utilizamdo um cristal de 8Mhz, utilizaremos para isso os recursos do Temporizador Timer0, acompanhe: Calculo do tempo de estouro do Timer0: T0CON = 0b10000110; TMR0L = 0xF7; TMR0H = 0xC2; //modo 16 bits, com prescaler 1:128, fonte de clock interno //carrega valores de contagem C2F7 equivale a ciclo de mquina x prescaler x (modo 8 /16bits valor de Contagem ).

Formula: Ciclo de Mquina x prescaler x (modo 8 /16 bits valor de carregem nos registradores de contagem) Tempo de estouro: 0.5us Tempo de estouro: x 128 x (65536 49911 ) 1.000.000 us (microsegundos) ou 1 segundo.

O registrador INTCON
O registrador INTCON possui diversar funes, entre elas a de habilitar algumas interrupes do PIC (veremos mais adiante no nosso curso) e de armazenar os bits de estatus de estouro do TIMER0:

INTCON (Interrupt Control)

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 41 de 74

Tabela 4.4 INTCON GIE/GIEH Bit7 PEIE/GIEL Bit6 TMR0IE Bit5 INT0IE Bit4 RBIE Bit3 TMR0IF Bit2 INT0IF Bit1 RBIF Bit0

Iremos estudar todos esses bits mais adiante em nosso curso, pois eles tratam das configuraes das interrupes, e neste momento no importante conhecer alguns deles. Vamos apresentar somente os bits que so utilizados nos TIMERS. INTCON. GIEH = bit de acionamento da "chave geral das interrupes" e habilitao das interrupes de alta prioridade 0 1 liga a chave geral das interrupes desliga a chave geral das interrupes

INTCON. GIEL = bit de habilitao das interrupes de baixa prioridade 0 - TIMER0 no ocorreu estouro de contagem (overflow) 1 - TIMER0 software. ocorreu estouro de contagem (overflow). Este bit deve ser apagado por

INTCON.TMR0IE = bit contagem.

que habilita interrupo do TIMER0 na ocorrncia do estouro de

0 - Desabilita interrupo do TIMER0 por ocorrencia de estouro de contagem (overflow) 1 - Habilita interrupo do TIMER0 por ocorrncia de estouro de contagem (overflow). INTCON. TMR0IF = bit sinalizador de estouro do TIMER0 0 - TIMER0 no ocorreu estouro de contagem (overflow) 1 - TIMER0 software. ocorreu estouro de contagem (overflow). Este bit deve ser apagado por

Aprendendo a programar os TIMER0: Conhecemos os registradores responsveis pela configurao do TIMER0 do PIC, agora vamos configur-los: Vamos nos recordar da frmula do TIMER0: Tempo de estouro: Exemplo 1 : Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como temporizador, com prescaler de 1:4, modo 8 bits e contagem inicial em TMR0L = 0, teremos ento: Tempo de estouro: ciclo de mquina x prescaler x (modo 8 /16bits valor de contagem). Tempo de estouro: 0,5us * 4 *(255 - 0) Tempo de estouro: 510us Exemplo 2 : Se tivermos conectado ao nosso PIC um cristal de 8 MHz e o TIMER0 seja programado como temporizador, com prescaler de 1:256, modo 16 bits e contagem inicial em TMR0L = 0 e TMR0H = 0, teremos ento: Tempo de estouro: ciclo de mquina x prescaler x (modo 8 /16bits valor de contagem). Tempo de estouro: 0,5us * 256 * (65536 - 0) Tempo de estouro: 8.388.608us, ou seja, 8, 388 segundos Obs: Repare que este o tempo mximo de estouro do TIMER0 Modo contador do TIMER0 do PIC: Neste novo exemplo de programa, vamos programar o TIMER0 do PIC para trabalhar como contador de pulsos externos. Neste modo, os pulsos externos, so aplicados no pino RA0/T0CK1 do PIC. Devemos contar apenas 10 pulsos externos, que neste caso, configuraremos o TIMER0 do PIC no modo 8 bits com prescaler 1 : 1, e os pulsos sero lidos por borda de descida. Ao completar a contagem de 10 pulsos, o led conectado ao pino RB1 do PIC dever acender para sinalizar o fim da contagem. Esquema eltrico: ciclo de mquina x prescaler x (modo 8 /16bits valor de contagem).

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 42 de 74

Figura Figura 4.3 Aplicao com o modo contador do TIMER0 Para realizar o seguinte desafio necessrio configurar os seguintes registradores do TIMER0: INTCON.TMR0IF (Bit de estouro do TIMER0) TMR0L (registrador de contagem do TIMER0) T0CON (registrador de configurao do modo de operao do TIMER0)

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 43 de 74

Programa: /*'****************************************//********************************** 'Microgenios | MicroControladores * 'Site: www.Microgenios.com.br * 'Autor: Fernando Simplicio de Sousa * ' ***************************************//********************************** 'Programa exemplo: TIMER0_Contador.c 'Cristal: 8MHz - modo HS * 'Microcontrolador PIC18F45200 Microchip * 'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios 'Configurao: DIP1 - Chave 09 -ON '****************************************//********************************** 'Objetivo: 'Este programa tem por objetivo ativar o modo contador do Timer0 'OBS: ESTE PROGRAMA PARA FINS DE ESTUDOS. NO H COMO SIMULAR MODO DE 'CONTAGEM COM O TIMERO NO KIT PICGENIOS, POIS O SENSOR INFRAVERMELHO ESTA LIGADO 'NO PINO T1CKI, AO INVS DE T0CKI '****************************************//**********************************/ void main(){ TRISD = 0; PORTD = 0; // 'define portd como sada // 'zera portd

TRISA.RA4 = 1; //'pino contador T0CKI configurado como entrada /*'obs: este pino naturalmente dreno aberto, neste caso necessrio pull-up 'ou pull-down externo '******************************calculo temporizao 1 segundo *************** 'calculo de temporizao de 1 segundo: 'tempo = ciclo_maquina * prescaler * (modo 8/16 - valor inicial) 'logo '1000.000us = 0.5us * 128 * (65536 - valor_inicial) 'valor inicial = 49911 ou C2F7h */ T0CON = 0B11101000;//'modo contador, prescaler off, borda descida, modo 8bits TMR0L = 246; //'contar 10 pulsos | 256 - 10 = 246 carrega valores de contagem INTCON.TMR0IF = 0; //'apaga flag de estou do timer0 while (1){ if (INTCON.TMR0IF==1){ PORTD.RD0 = ~ PORTD.RD0; // 'inverte o valor do led1 TMR0L = 246; //'recarga do timer0 INTCON.TMR0IF = 0; //'apaga flag de estou do timer0 } } }

Estudo detalhado do programa: Repare que o nos comandos abaixo que o registrador T0CON foi configurado como contador de pulsos externos, modo de operao do TIMER0 de 8 bits, com prescaler 1:1. O registrador de contagem TMR0L o registrador onde ser armazenado os valores de contagem dos pulsos externos, e neste caso ele foi pr configurado com o valor 246, devido a necessidade de contarmos apenas 10 pulsos. Devemos lembrar que os registradores de contagem do TIMER0 so incrementados em 1 unidade e contam para cima, neste caso, como desejamos programar o TIMER0 para que a cada 10 pulsos no pino RA0/T0CK1 seja gerado um estouro, devemos carregar em TMR0L o valor da diferena entre o valor mximo de contagem para o modo 8 bits, que 256, pelo valor da quantidade de pulsos a ser contado, que neste cado 10. Ento teremos: 256 - 10 = 246 Utilizaremos modo contador no Kit PICgenios quando utilizarmos o TIMER1 nos projetos. Mais adiante Iremos utilizar interrupes com nossos TIMERS/COUNTERS.

TIMER1
O TIMER1:
Realizamos nas unidades passadas um estudo no muito aprofundado sobre as funes e caractersticas dos TIMERS do PIC. Agora chegou o momento de estudarmos mais Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 44 de 74

profundamente os recursos e a programao dos registradores e modos de trabalho desses temporizadores e contadores. O TIMER1 pode operar como temporizador ou como contador de 16 bits, suas caractersticas so muito parecida com a do TIMER0. Dizemos que o timer est operando como temporizador quando a referncia do clock de incremento da contagem realizada pelo clock interno do PIC, e dizemos que o timer esta operando como contador quando a referncia do clock de incremento da contagem proveniente de um clock externo ao PIC. (pulso aplicado no pino RB6/T1OSO/T1CK1). Registradores de configurao do TIMER1: Tabela 4.5 Registrador relacionados com o TIMER1 (as clulas em branco)

P1R1: um registrador onde armazenado os bits de status das interrupes e estouro dos timers. P1E1: um registrador de 8 bits onde habilitado as interrupes do PIC. TMR1L um registrador de contagem de 8 bits que possui a funo de armazenar a parte baixa do valor de contagem programada do TIMER0. TMR1H um registrador de contagem de 8 bits que possui a funo de armazenar a parte alta do valor de contagem programada do TIMER0. Os registradores TMROL e TMR0H juntos formam um nico registrador de 16 bits, que nos permite uma contagem mxima de 0 a 65535. T1CON TIMER1. acionar, (interna ou borda um registrador de 8 bits responsvel pela configurao do modo de operao do Podemos definir atravs desse registrador o valor do prescaler que desejamos o modo de operao de contagem de 8 ou 16 bits, seleo da fonte de clock ou externa) para o timer, seleo de disparo do timer atravs de borda de subida de descida do clock externo no pino RB6/T10S0/T1CK1.

T1CON: (TIMER1 CONTROL REGISTER):


Tabela 4.6 T1CON RD16 Bit7 --Bit6 T1CKPS1 Bit5 T1CKPS0 Bit4 T10SCEN Bit3 T1SYNC Bit2 TMR1CS Bit1 TMR1ON Bit0

RD16: bit de leitura e escrita em 16bits (utilizado para o modo comparador do canal CCP) 1 leitura e escrita em 16 bits habilitada 0 leitura e escrita em 16 bits desabilitada T1CKPS1; T1CKPS0: Bits de seleo de fonte de prescaler Tabela 4.7 Bits de seleo de fonte de prescaler T1CKPS1 1 1 0 0 T1OSCEN: T1CKPS0 1 0 1 0 Prescaler 1:8 1:4 1:2 1:1

Habilitao do oscilador externo de baixa frequencia nos pinos T1OSO e T1OSI

0 - Oscilador desligado 1 - Oscilador Ligado T1SYNC: Controle do sincronismo interno. Caso TMR1CS = 0, esse bit descartado 0 - Sincronismo ligado

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 45 de 74

1 - Sincronismo desligado TMR1CS: Bit de seleo de clock; 0 - A base de clock para o TIMER1 interna (Fosc/4); 1 - Clock externo no pino RC0/T1CK1; TMR1ON: Habilita TIMER1; 0 - TIMER1 desligado 1 - TIMER1 ligado Obs: Bit6 no implementado, lido como "0" Abaixo o diagrama simplificado do Timer1:

Figura 4.4 Diagrama interno do TIMER1 O TIMER1 opera de maneira idntica a do timer anterior, suas diferenas bsicas que este novo timer pode operar como temporizador para o modo Capture/Compare para o modo CCP. Foi implementado neste novo Timer a possibilidade de ligarmos um outro cristal oscilador, de forma que nos permite ligar cristais de baixa freqncia, tais como 32,768 KHz, para maiores preciso na temporizao. Nota: Obs: Este segundo cristal dever ser ligado entre os pinos RC0 e RC1. Em hiptese alguma poderemos dispensar o uso do cristal oscilador principal Fosc. A figura apresenta o diagrama de funcionamento do TIMER1 operando com o oscilador de baixa freqncia.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 46 de 74

Figura 4.5 Circuito interno do modo RTC A figura seguinte mostra para ns claramente oscilador conectado ao nosso microcontrolador. uma aplicao em hardware do segundo

Figura 4.6 Ligao do segundo oscilador ao microcontrolador PIC

Programando o TIMER1 do PIC.


Para exemplificar a utilizao do TIMER1 do PIC vamos analizar um exemplo de programa: O Hardware:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 47 de 74

Figura 4.7 Esquema Eletrnica Programa:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 48 de 74

/*'****************************************//********************************** 'Microgenios | MicroControladores * 'Site: www.Microgenios.com.br * 'Autor: Fernando Simplicio de Sousa * ' ***************************************//********************************** 'Programa exemplo: TIMER1.c 'Cristal: 8MHz - modo HS * 'Microcontrolador PIC18F45200 Microchip * 'Tools: Kit PICgenios PIC18F Mdulo Profissional Microgenios 'Configurao: DIP1 - Chave 09 -ON '****************************************//********************************** 'Objetivo: 'Este programa tem por objetivo ativar a temporizao mxima do TIMER1 'utilizando cristal de 8Mhz '****************************************//**********************************/ void main(){ /*'******************************calculo temporizao timer1 *************** 'calculo de temporizao mxima do timer1 'tempo = ciclo_maquina * prescaler * (modo 16 - valor inicial) 'logo 'Tempo = 0.5us * 8 * (65536 - 0) 'Tempo = 262.144 us ou 262ms */ TRISD = 0; PORTD = 0; //'define portb como saida //'apaga todos os leds conectados ao portd

T1CON = 0b10110001; //'liga TIMER1, prescaler 1:8, modo 16bits. TMR1L = 0; //'carrega valor de contagem baixa do TIMER1 TMR1H = 0; //'carrega valor de contagem alta do TIMER1 PIR1.TMR1IF = 0; //'apaga flag de estouro do TIMER1 while (1){ if (PIR1.TMR1IF == 1) { PORTD.RD0 = ~PORTD.RD0; //'inverte o valor do led1 TMR1L = 0; //'carrega valor de contagem baixa do TIMER1 TMR1H = 0; //'carrega valor de contagem alta do TIMER1 PIR1.TMR1IF = 0; //'apaga flag de estouro do TIMER1 } } } O programa acima configura o TIMER1 para operar em 16bits com prescaler 1:8, clock interno. A cada estouro do TIMER1, o led conectado o portd.rd0 invertido. Anlise detalhado do programa: Sabendo que nosso microcontrolador esta trabalhando com um cristal externo de 8MHz, vamos calcular o tempo de estouro do TIMER1:

Configurao do TIMER1:
Modo de Operao: 16 bits (timer1 somente opera no modo 16 bits) Fonte de oscilao: Ciclo interno. Prescaler: 1:8

Calculo de Estouro do TIMER1:


Frmula: Tempo: ciclo de mquina * prescaler * (modo 16bits valor de carga) Portanto Tempo: 0.5 * 8 * (65536 0) = 262.144us ou 262ms

TIMER2 :
O TIMER2 um timer de 8 bits com recarga automtica. Esse TIMER tem um registrador de configurao, um de contagem e outro de comparao. Ele possui um registrador de contagem de 8 bits ( 0 a 255) chamado TMR2. Diferentemente dos outros timers, o TIMER2 possui um prescale e um postscaler. Os registradores especiais responsvel pela configurao de temporizao do TIMER2 so:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 49 de 74

Configura T2CON (TIMER2 CONTROL REGISTER): Configura o setup do TIMER2;


TMR2: Registrador de contagem do TIMER2 (8 bits); PR2: Registrador de comparao do TIMER2 Dizemos que o TIMER2 um timer com recarga automtica pois quando o valor carregado em PR2 igual ao de contagem TMR2, o valor de TMR2 zerado e inicia-se uma nova contagem, ou melhor dizendo, temporizao. Os registradores relacionados com o TIMER2 so: Tabela 4.8 Registradores responsveis pela configurao do TIMER2

Atravs do registrador T2CON, podemos configurar o modo de operao do TIMER2, tais como: valor do prescale e postcale e ligar ou desligar o timer2. Veja o diagrama esquemtico de construlo do TIMER2: (procure sempre comparar um TIMER com o outro, pois dessa forma voc saber qual mais adequado para sua aplicao).

Figura 4.8 Diagrama de construo interna do TIMER2

Registradores de configurao do TIMER2:


T2CON: (TIMER2 CONTROL REGISTER): Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 50 de 74

Tabela 4.9 T2CON --Bit7 TOUTPS3 Bit6 TOUTPS2 Bit5 TOUTPS1 Bit4 TOUTPS0 Bit3 TMR2ON Bit2 T2CKPS1 Bit1 T2CKPS0 Bit0

TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0: Bits de ajuste do postcale: Tabela 4.10 Bits de ajuste do postcale 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 Postscale 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

O funcionamento do postcale muito semelhante ao prescaler, sua diferena bsica est na contagem. Em vez de contar pulsos de ciclos de mquina, o postscale conta n comparaes do TMR2 com PR2. Aps n comparaes, o flag de estouro do TIMER2 sinalizado com nvel lgico 1. TMR2ON: Habilitao do TIMER2; 0 - TIMER2 desligado 1 - TIMER 2 ligado T2CKPS1 T2CKPS0: Bits responsveis pelo ajuste de prescaler: Tabela 4.11 Bits responsveis pelo ajuste de prescaler(TIMER 2) T2CKPS1 0 0 1 X pode ser 1 ou 0 Tempo mximo do TIMER2 com cristal de 8Mhz: Tempo = ciclo de maquina * prescaler * postscale * (PR2 + 1) Tempo = 0.5us * 16 * 16 * (255 +1) Tempo = 32.768us ou 32ms A partir disso voc sabe que no tem como programar tempos maiores que 32 milisegundos com seu TIMER2, neste caso necessrio repetir n ciclos de estouros, utilizando variveis de incrementos. OBS: Quando utilizamos a funo PWM do mdulo CCP os registradores de contagem do TIMER2 so comprometidos, por esse motivo no podemos utilizar a funo de temporizador do TIMER2 e PWM ao mesmo tempo nos nossos projetos. T2CKPS0 0 1 x Prescaler 1:1 1:4 1:16

TIMER3
O TIMER3 :
O TIMER3 um temporizador e contador de 16 bits. Possui internamente dois registradores de 8 bits, TMR3L e TMR3H, que juntos formam um registrador de 16 bits (contagem de 0 a 65535). Diferente do TIMER1, o TIMER3 somente pode operar no modo 16 bits. Os registradores relacionados com o TIMER3 so: Tabela 4.12 Registradores relacionados com o TIMER3

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 51 de 74

Atravs do registrador T3CON, podemos configurar o modo de operao do TIMER3, tais como: valor do prescale , ligar ou desligar o TIMER3, seleo de clock interno ou externo (contador) e fonte do timer para o mdulo CCP do PIC.

Figura 4.9 Estrutura interna do TIMER3

Registradores de configurao do TIMER3:


O registrador de controle do TIMER3; T3CON: (TIMER3 CONTROL REGISTER); Tabela 4.13 T3CON RD16 Bit7 T3CCP2 Bit6 T3CKPS1 Bit5 T3CKPS0 Bit4 T3CCP1 Bit3 T3SYNC Bit2 TMR3CS Bit1 TMR3ON Bit0

RD16: bit de leitura e escrita em 16bits 0 leitura e escrita em 16 bits desabilitada (utilizado no modo CCP) 1 leitura e escrita em 16 bits habilitada (utilizado no modo CCP)

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 52 de 74

T3CCP2 T3CCP1: Habilita a fonte de timer para o mdulo CCP; Tabela 4.14 Habilita a fonte de timer para o mdulo CCP T3CCP2 0 0 1 1 T3CCP1 0 1 0 1 Prescaler TIMER1 fonte TIMER1 fonte TIMER3 fonte TIMER3 fonte de de de de timer timer timer timer para para para para os mdulos CCP o mdulo CCP1 o mdulo CCP2 os mdulos CCP

T3CKPS1 T3CKPS0: bits de ajuste do prescaler do TIMER3; Tabela 4.15 bits de ajuste do prescaler do TIMER3 T3CKPS1 0 0 1 1 T3CKPS0 0 1 0 1 Prescaler 1:1 1:2 1:4 1:8

/T3SYNC: Controle de sincronismo interno. Caso TMR3CS = 0, este bit descartado; obs: este bit somente utilizado para trabalhar com o perifrico RTC (segundo oscilador ligado aos pinos T1OSO e T1OSI). 0 - Sincronismo ligado 1 - Sincronismo desligado TMR3CS: Seleo de Clock 0 - Clock Interno -TIMER3 programado como Temporizador mquina) 1 - clock externo no pino T1CK1 TMR3ON: Habilitao do TIMER3; 0 - TIMER3 desligado 1 - TIMER3 ligado Para exemplificar a utilizao do TIMER3, vamos efetuar algumas pequenas modificaes no programa exemplo anterior, cuja finalidade piscar um Led conectado ao pino RB0 do PIC em intervalos de 1 segundo. (ligado e desligado). Primeiramente devemos programar o TIMER3: Para este exemplo, vamos programar o TIMER3 no modo 16 bits (contagem de 0 a 65535 lembre-se que TIMER3 somente opera em 16 bits), prescaler de 1:8, clock interno, cristal de 8Mhz e modo HSPLL desativado (multiplicador do ciclo de mquina), temos ento a seguinte formla de temporizao: Tempo de estouro do TIMER3 = carga inicial) ciclo de mquina * prescaler * (modo 16bits - valor de a ( clock baseado no ciclo de

- Habilitar modo contador do TIMER1

Antes de comearmos a programar nossa temporizao de 1 segundo, vamos descobrir temporizao mxima suportada pelo TIMER3. (com cristal de 8MHz) Tempo TIMER3 = Logo Tempo TIMER3 = 262.144us ou 262ms (valor igual ao do TIMER1) Nota: 0.5us * 8 * (65536 0)

Faa a comparao entre o TIMER1 com o TIMER3 e repare que suas estruturas so muito semelhantes, inclusive seus modos contadores compartilham o mesmo pino RC0 (T1CKI) para leitura dos pulsos externos. Como desejamos que o estado do Led pisque a cada 1 segundo, somos obrigados a criar uma rotina em C para multiplicar n vezes o estouro do TIMER3, pois nossa temporizao mxima de 262ms (com cristal de 8MHz). Vamos prograr o TIMER3 para estourar a cada 250ms, e atravs de alguns comandos em C vamos mutiplicar esta temporizao em 4x para que tenhamos 1 segundo (4 * 250ms = 1 segundo).

Unidade 5 Programando as Interrupes do PIC


As Interrupes do PIC18F4520

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 53 de 74

Introduo
Diferente da famlia PIC16F da Microchip, essa nova famlia PIC18F implementa prioridades nas interrupes. Na memria FLASH do PIC18F4520 possui dois endereos de interrupo: um chamado de vetor de alta prioridade, cujo endereo 0008h, e outro chamado de vetor de baixa prioridade, cujo endereo 0018h.

Figura 5.1 Vetor de Alta Prioridade e Baixa Prioridade de Interrupo srie PIC18F No PIC18F4520 existem diversos tipos de interrupes, segue algumas: Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo do TIMER0 do TIMER1 do TIMER2 do TIMER3 por mudana de estado (pinos RB4, RB5, RB6, RB7) externa INT0 externa INT1 externa INT2 na converso AD na recepo serial na transmisso serial do mdulo CCP de escrita na EEPROM/FLASH por queda de tenso.

As prioridades de interrupo funcionam da seguinte maneira: Caso venhamos programar interrupes de alta e baixa prioridade em nosso programa, e por um determinado momento seja solicitado ao mesmo tempo as duas interrupes, a interrupo de alta prioridade ser atendida primeiro. Ao trmino da execuo da rotina de interrupo de alta prioridade, automaticamente a rotina de baixa prioridade comea o seu tratamento. Quando uma rotina de baixa prioridade estiver sendo executada e ocorrer uma interrupo de alta prioridade, a interrupo de alta prioridade ser atendida priomeiro, e ao seu trmino, a interrupo de baixa prioridade continuar a sua execuo do ponto seguinte onde parou. Se formos traar um grfico sobre as prioridades de interrupo e seus acionamentos, teremos:

Interrupo Figura 5.2 Diagrama de Interrupo x Tempo Atravs do grfico ficou fcil perceber que uma rotina de interrupo de alta prioridade pode interromper a qualquer momento qualquer rotina de menor prioridade de interrupo ou execuo.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 54 de 74

Como funciona as interrupes?


Podemos resumidamente comparar as interrupes instalao eltrica de uma residncia qualquer. Repare no diagrama: do nosso microcontrolador com uma

Figura 5.3 Exemplo para compreeno das Interrupes do PIC Repare que temos em nosso exemplo uma chave geral, esta chave geral habilita ou desabilita todas as interrupes interna do nosso microcontrolador, mas o fato dela estar ativado no representa que as interrupes dos perifricos esto habilitadas. Caso necessitarmos habilitar a interrupo de algum perifrico interno do PIC, como exemplo, o TIMER0, faz necessrio ligar a chave geral e o interruptor de parede, ou seja, o IE do TIMER0. Iremos apartir de agora apresentar os comandos responsveis pela configurao geral das interrupes. //Configurao Geral das interrupes INTCON.GIEH = 1; /*habilita a chave geral das interrupes e habilita o vetor de alta prioridade de interrupo*/ INTCON.GIEL = 1; //habilita o vetor de baixa prioridade de interrupo RCON.IPEN = 1; //define caracterstica da famlia PIC18F com 2 level de prioridade de interrupo Diferente da famlia PIC16F, a famlia PIC18F possui dos vetores de interrupo. Pensando nos projetos da famlia PIC16F, a Microchip criou uma estrutura interna nos PIC18F de forma a permitir a micrao de software com facilidade. Caso venhamos a colocar nvel lgico zero em rcon.ipen herdamos caractersticas famlia PIC16F que possui apenas 1 vetor de interrupo (endereo 0004h da Flash). Caso necessitarmos trabalhar com dois nveis de prioridade de interrupo programa somos obrigados a habiltar o bit rcon.ipen = 1 e intcon.giel = 1. em da

nosso

Bom, agora que j programamos as configuraes gerais de interrupo do nosso microcontrolador, podemos habilitar a interrupo particular de um determinado perifrico. Para exemplificar vamos programar a interrupo do TIMER0: Primeiro de tudo devemos conhecer a nomenclatura utilizado pela Microchip. Nomenclatura: Para habilitarmos a interrupo de qualquer perifrico precisamos configurar 3 bits: (alm das configuraes gerais que j conhecemos)

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 55 de 74

Bit com final: IF, IP e IE: IF Flag de interrupo IP Prioridade de interrupo IE Habilitao de Interrupo Logo a interrupo do TIMER0 ser: _________.TMR0IF = 0 'configurao inicial, flag de estouro do TIMER0 apagado (voc no quer programar um timer com seu alarme j tocando, no ?) _________.TMR0IP = 1 'define a prioridade de interrupo do TIMER0, neste caso, alta prioridade. _________.TMR0IE = 0 'habilita a chave individual de interrupo do TIMER0 lembre-se do interruptor de parede O que foi nos apresentado o nome do BIT, falta ainda colocar o nome do byte, mas antes disso vamos habilitar mais uma interrupo, neste caso INT3. (interrupo externa 3); _________.INT3IF = 0 'configurao inicial, flag de sinalizao de INT3 apagado _________.INT3IP = 0 'define a prioridade de interrupo de INT3, neste caso, BAIXA prioridade. _________.INT3IE = 0 'habilita a chave individual de interrupo do INT3 Nota parte 1/2: Para habilitar qualquer interrupes, que so: interrupo precisamos garantir as configuraes gerais das

//Configurao Geral das interrupes INTCON.GIE = 1 INTCON.GIEL = 1 RCON.IPEN = 1 E habilitar os 3 bits individuais de interrupo de qualquer perifrico, por exemplo: INT2 Ento teremos: _________.INT2IF = 0 'configurao inicial, flag de sinalizao de INT2 apagado _________.INT2IP = 1 'define alta prioridade de interrupo de INT2 _________.INT2IE = 0 'habilita a chave individual de interrupo do INT2 Para descobrirmos o nome registradores seguintes do byte apresentado com um _______, basta consultar os

Registradores que so usados para controlar as interrupes;


RCON INTCON INTCON2 INTCON3 PIR1, PIR2 PIE1 , PIE2 IPR1, IPR2

Registradores Estudo dos Registradores de Configurao das Interrupes do PIC Uma das funo do registrador RCON na interrrupo definir as prioridades altas e baixas das interrupes (0x0008 e 0x0018), vetor nico (modo normal, compatvel com a familia PIC16 em que somente h um vetor de interrupo) do PIC ou modo com dois nveis de prioridade, presente na famlia PIC18F. O bit do registrador RCON responsvel pela seleo de habilitao do modo de interrupo chama-se: IPEN. RCON (CONTROL REGISTER) Tabela 5.1 - RCON IPEN Bit7 --Bit6 ---Bit5 /RI Bit4 /T0 Bit3 /PD Bit2 /POR Bit1 /BOR Bit0

IPEN: Habilita as prioridades de interrupes do PIC

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 56 de 74

1 - Habilitao do modo de alta e baixa prioridades do PIC (presente na familia PIC18) 0 Desabilita o Modo de alta e baixa prioridade (modo compatvel com familia PIC16) Demais bits consultar datasheet do microcontrolador PIC18F45200. Os registradores INTCON, INTCON2 e INTCON3 so responsveis pela habilitao das interrupes de baixa e alta prioridade, alm de definir se algumas interrupes externas sero utilizadas. INTCON (Interrupt Control) Tabela 5.2 INTCON Bit INTCON.GIE (INTCON <7>) = 1 INTCON.PEIE (INTCON <6>) = 1 INTCON.TMR0IE (INTCON <5>) = INTCON.INT0IE (INTCON <4>) = INTCON.RBIE (INTCON <3>) = 1 INTCON.TMR0IF (INTCON <2>) = INTCON.INT0IF (INTCON <1>) = INTCON.RBIF (INTCON <0>) = 1 Evento Habilitao geral das interrupes Habilitao Interrupo dos perifricos Habilitao Interrupo doTIMER0 Habilitao Interrupo INT0 externa Habilitao Interrupo por mudana de estado Bit de sinalizao de estouro do TIMER0 Bit de sinalizao de interrupo externa INT0 Bit de sinalizao de interrupo por mudana de estado

1 1 1 1

No registrador INTCON, os registradores marcados em amarelo na tabela acima so bits de sinalizao de interrupo INTCON2 (Interrupt Control 2) Tabela 5.3 INTCON2 Bit INTCON2.RBPU (INTCON2 <7>) = 0 INTCON2.RBPU (INTCON2 <7>) = 1 INTCON2.INTEDG0 (INTCON2 <6>) = 1 INTCON2.INTEDG0 (INTCON2 <6>) = 0 INTCON2.INTEDG1 (INTCON2 <5>) = 1 INTCON2.INTEDG1 (INTCON2 <5>) = 0 INTCON2.INTEDG2 (INTCON2 <4>) = 1 INTCON2.INTEDG2 (INTCON2 <4>) = 0 INTCON2.TMR0IP (INTCON2 <2>) INTCON2.TMR0IP (INTCON2 <2>) INTCON2.RBIP (INTCON2 <0>) = INTCON2.RBIP (INTCON2 <0>) = INTCON3 (Interrupt Control 3) Tabela 5.4 INTCON3 Bit Evento INTCON3.INT2IP (INTCON3 <7>) = 1 Alta prioridade na Interrupo externa INT2 INTCON3.INT2IP (INTCON3 <7>) = 0 Baixa prioridade na Interrupo externa INT2 INTCON3.INT1IP (INTCON3 <6>) = 1 Alta prioridade na Interrupo externa INT1 INTCON3.INT1IP (INTCON3 <6>) = 0 Baixa prioridade na Interrupo externa INT1 INTCON3.INT2IE (INTCON3 <4>) = 1 Habilita interrupo externa INT2 INTCON3.INT2IE (INTCON3 <4>) = 0 desabilita interrupo externa INT2 INTCON3.INT1IE (INTCON3 <3>) = 1 Habilita interrupo externa INT1 INTCON3.INT1IE (INTCON3 <3>) = 0 desabilita interrupo externa INT1 INTCON3.INT2IF (INTCON3 <1>) = 1 Bit de sinalizao de Interrupo INT2 INTCON3.INT2IF (INTCON3 <1>) = 0 Bit de sinalizao de Interrupo INT2 INTCON3.INT1IF (INTCON3 <0>) = 1 Bit de sinalizao de Interrupo INT1 INTCON3.INT1IE (INTCON3 <0>) = 0 Bit de sinalizao de Interrupo INT1 Dica: Sempre quando voc estiver estudando e se deparar Bits finalizados com IF, IP e IE, j interprete eles da seguinte maneira: IF = bit de sinalizao de algum perifrico Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 57 de 74 = 1 = 0 1 0 Evento Habilita resistores de pull-up do portb desabilita resistores de pull-up do portb Configura interrupo externa INT0 por borda de Subida Configura interrupo externa INT0 por borda de descida Configura interrupo externa INT1 por borda de Subida Configura interrupo externa INT1 por borda de descida Configura interrupo externa INT2 por borda de Subida Configura interrupo externa INT2 por borda de descida Alta prioridade da Interrupo do TIMER0 Baixa prioridade da Interrupo do TIMER0 Alta prioridade da Interrupo por mudana de estado Baixa prioridade da Interrupo por mudana de estado

IE = bit de hablitao de interrupo de algum perifrico IP = bit de habilitao da prioridade de algum perifrico. No se esquea disso!!! Os registradores P1R1 e P1R2 so responsveis em armazenar os estados das interrupes. Quando uma interrupo foi programada, atravs dos bits desse registrador que poderemos monitorar o estado da interrupo (acionada ou no acionada). PIR1 (sinaliza Interrupo dos Perifricos 1) Tabela 5.5 PIR1 Bit PIR1.PSPIF (PIR1 < 7 > ) = 1 PIR1.ADIF (PIR1 < 6 > ) = 1 PIR1.RCIF (PIR1 < 5 > ) = 1 PIR1.TXIF ( PIR1 < 4 > ) = 1 PIR1.SSPIF (PIR1 < 3 > ) = 1 PIR1.CCP1IF (PIR1 < 2 > ) = 1 PIR1.TMR2IF (PIR1 < 1 > ) = 1 PIR1.TMR1IF (PIR1.< 0 > ) = 1 Evento bit de bit de bit de bit de bit de bit de bit de bit de status status status status status status status status da da da da da da do do Interrupo da porta Parallel Port Slave Interrupo do conversor A/D Dado recebido pela USART Dado transmitido pela USART interrupo do mdulo SSP Interrupo do mdulo CCP estouro do TIMER2 estouro do TIMER1

PIR2 (sinaliza Interrupo dos Perifricos 2) Tabela 5.6 PIR2 Bit PIR2.EEIF (PIR2 < 4 >) = 1 PIR2.BCLIF (PIR2 < 3 >) = 1 PIR2.LCDIF (PIR2 < 2 >) = 1 PIR2.TMR3IF (PIR2 < 1 >) = 1 PIR2.CCP2IF (PIR2 < 0 >) = 1 Evento Bit de sinalizao da Interrupo de escrita na EEPROM/Flash Bit de sinalizao da Interrupo por coliso de dados Bit de sinalizao da Interrupo do mdulo de baixa voltagem LDV Bit de sinalizao da Interrupo de estouro do TIMER3 Bit de sinalizao da Interrupo do mdulo CCP2 Tabela 5.7 PIE1 Bit PIE1.PSPIE (PIE1 < 7 > ) = 1 PIE1.ADIE (PIE1 < 6 > ) = 1 PIE1.RCIE (PIE1 < 5 > ) = 1 PIE1.TXIE ( PIE1 < 4 > ) = 1 PIE1.SSPIE (PIE1 < 3 > ) = 1 PIE1.CCP1IE (PIE1 < 2 > ) = 1 PIE1.TMR2IE (PIE1 < 1 > ) = 1 PIE1.TMR1IE (PIE1.< 0 > ) = 1 Evento habilita habilita habilita habilita habilita habilita habilita habilita Interrupo Interrupo Interrupo Interrupo interrupo Interrupo interrupo interrupo da do da da do do do do porta Parallel port Slave conversor A/D recepo serial transmisso serial mdulo SSP mdulo CCP TIMER2 TIMER1

PIE1 (Habilitao das interrupo dos perifricos )

PIE2 (Habilitao das Interrupo dos Perifricos) Tabela 5.8 PIE2 Evento Bit de sinalizao de Interrupo de escrita na PIE2.EEIF (PIE2 < 4 >) = 1 EEPROM/Flash PIE2.BCLIF (PIE2 < 3 >) = 1 Bit de sinalizao de Interrupo por coliso de dados Interrupo do mdulo de baixa PIE2.LCDIF (PIE2 < 2 >) = 1 Bit de sinalizao de voltagem LDV PIE2.TMR3IF (PIE2 < 1 >) = 1 Bit de sinalizao de Interrupo do TIMER3 PIE2.CCP2IF (PIE2 < 0 >) = 1 Bit de sinalizao de Interrupo do mdulo CCP2 IPR1 (registrador de prioridade de interrupes) Atravs dos registradores IPR1 e IPR2 definimos interrupes, caso esse sistema seja utilizado. as prioridades altas e baixas das Bit

Tabela 5.9 IPR1 Bit IPR1.PSPIP (BIT < 7 >) = 1 IPR1.PSPIP (BIT < 7 >) = 0 IPR1.ADIP (BIT < 6 >) = 1 IPR1.ADIP (BIT < 6 >) = 0 Evento Alta prioridade na interrupo paralela Baixa prioridade na interrupo paralela Alta prioridade na interrupo converso AD Baixa prioridade na interrupo converso AD

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 58 de 74

IPR1.RCIP (BIT < 5 >) = 1 IPR1.RCIP (BIT < 5 >) = 0 IPR1.TXIP (BIT < 4 >) = 1 IPR1.TXIP (BIT < 4 >) = 0 IPR1.SSPIP (BIT < 3 >) = 1 IPR1.SSPIP (BIT < 3 >) = 0 IPR1.CCPIP (BIT < 2 >) = 1 IPR1.CCPIP (BIT < 2 >) = 0

Alta prioridade na interrupo de recepo serial Baixa prioridade na interrupo de recepo serial Alta prioridade na interrupo de transmisso serial Baixa prioridade na interrupo de transmisso serial Alta prioridade na interrupo MSSP Baixa prioridade na interrupo MSSP Alta prioridade na interrupo do mdulo CCP Baixa prioridade na interrupo do mdulo CCP

IPR1.TMR2IP (BIT < 1 >) = 1 Alta prioridade na interrupo do TIMER2 IPR1.TMR2IP (BIT < 1 >) = 0 Baixa prioridade na interrupo do TIMER2 IPR1.TMR1IP (BIT < 0 >) = 1 Alta prioridade na interrupo do TIMER1 IPR1.TMR1IP (BIT < 0 >) = 0 Baixa prioridade na interrupo do TIMER1 IPR2 (registrador de prioridade de interrupes 2) Atravs dos registradores IPR1 e IPR2 definimos interrupes, caso esse sistema seja utilizado. as prioridades altas e baixas das

Tabela 5.10 IPR2 Bit IPR2.EEIP (BIT < 4 >) = 1 IPR2.EEIP (BIT < 4 >) = 0 IPR2.BCLIP (BIT < 3 >) = 1 IPR2.BCLIP (BIT < 3 >) = 0 IPR2.LVDIP (BIT < 2 >) = 1 IPR2.LVDIP (BIT < 2 >) = 0 Evento Alta prioridade na interrupo EEPROM Baixa prioridade na interrupo EPROM Alta prioridade na interrupo por coliso no barramento Baixa prioridade na interrupo por coliso no barramento Alta prioridade na interrupo por queda de tenso Baixa prioridade na interrupo por queda de tenso

IPR2.TMR3IP (BIT < 1 >) = 1 Alta prioridade na interrupo do TIMER3 IPR1.TMR3IP (BIT < 1 >) = 0 Baixa prioridade na interrupo do TIMER3 IPR1.CCP2IP (BIT < 0 >) = 1 Alta prioridade na interrupo CCP2IP IPR1.CCP2IP (BIT < 0 >) = 0 Baixa prioridade na interrupo CCP2IP Nota parte 2/2: Consultando as tabelas descobrimos que para habilitar a interrupo INT2 necessrio programar: //Configurao Geral das interrupes INTCON.GIE = 1; INTCON.GIEL = 1; RCON.IPEN = 1; //Configurao de habilitao individual da interrupo externa INT2 INTCON3.INT2IF = 0; //configurao inicial, flag de sinalizao de INT2 apagado INTCON3.INT2IP = 1; //define alta prioridade de interrupo de INT2 INTCON3.INT2IE = 0; //habilita a chave individual de interrupo do INT2

Resumo: 1 - bit para habilitar a interrupo desejada, finalizadas com o nome IE. Ex: INTCON3.INT2IE = 1; // habilita interrupo externa INT2 1 - bit para monitorar o estado da interrupo, tambm chamado de bit de sinalizao ou flag, finalizadas com o nome IF. Ex: INTCON3.INT2IF = 1; // flag de sinalizao da interrupo externa INT2 (setada por hardware do microcontrolador aps o acionamento de INT2). 1 - bit de definio de prioridade de interrupo (alta ou baixa prioridade), finalizadas com o nome IP

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 59 de 74

Ex: INTCON3.INT2IP = 1; INT2.

// bit de habilitao de prioridade de interrupo externa

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 60 de 74

Unidade 6 Programando a Interrupo externa


INT0
A interrupo interna INT0 do PIC18F4520 est multiplexada com o pino RB0. Segue um diagrama estrutural de INT0, acompanhe:

Figura 6.1 Diagrama estrutural da interrupo externa INT0 Sabemos que todas as interrupes que ocorre dentro do nosso microcontrolador so geradas por causa dos flags de sinalizao (bit com final IF na Microchip). A interrupo externa INT0 no diferente dos demais perifricos, ela internamente possui um bit de sinalizao de status que informa ao microcontrolador que ocorreu uma mudana de nvel lgico no pino de interrupo. Podemos programar a interrupo externa por borda de descida ou por borda de subida:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 61 de 74

Figura 6.2 Tipos de disparo das interrupes externa INT0, INT1 e INT2 Importante: A interrupo externa INT0 somente pode operar como alta prioridade de interrupo, ou seja, no existe registrador INT0IP para INT0, as demais interrupes externa INT1 e INT2 permite serem programadas em baixa prioridade.

Vamos conhecer os registradores relacionados a INT0:


Registradores responsveis pelas configuraes gerais das interrupes:
INTCON.GIEH: habilita ou desabilita a chave geral das interrupes e as interrupes de alta prioridade INTCON.GIEL: habilita ou desabilita as interrupes de baixa prioridades RCON.IPEN : habilita ou desabilita pertencente a famlia PIC18F as interrupes de baixa ou alta prioridades

Registradores responsveis pela habilitao da interrupo externa INT0


INTCON.INT0IE : bit de habilitao da interrupo externa INT0 INTCON.INT0IF : bit de sinalizao da interrupo externa INT0 TRISB.RB0 = 1 : somos obrigados a programar pino RB0/INT0 como entrada

Registrador responsvel pelo tipo de disparo de INT0:


INTCON2.INTEDG0 : bit de configurao do modo de disparo da interrupo externa INT0 1 = Aciona interrupo externa por borda de subida 0 = aciona interrupo externa por borda de descida Obs: A interrupo INT0 somente pode ser programada em alta prioridade, ou seja, no existe o registrador TMR2IP. Esta limitao est presente no microcontrolador PIC18F4520 e PIC18F45200.

INT1 INT1
Programando a interrupo externa INT1
O funcionamento da interrupo externa INT1 parecida com a interrupo INT0, sua nica diferena esta no fato de INT1 permitir ser acionado por baixa prioridade de interrupo. Segue um diagrama estrutural de INT1, acompanhe:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 62 de 74

Figura 6.3 Diagrama estrutural da interrupo externa INT1

Vamos conhecer os registradores relacionados a INT1: Registradores responsveis pelas configuraes gerais das interrupes:
INTCON.GIEH: habilita ou desabilita a chave geral das interrupes e as interrupes de alta prioridade INTCON.GIEL: habilita ou desabilita as interrupes de baixa prioridades RCON.IPEN : habilita ou desabilita pertencente a famlia PIC18F as interrupes de baixa ou alta prioridades

responsveis Registradores responsveis pela habilitao da interrupo externa INT1


INTCON3.INT1IE : bit de habilitao da interrupo externa INT1 INTCON3.INT1IF : bit de sinalizao da interrupo externa INT1 INTCON3.INT1IP : bit de habililitao de alta ou baixa prioridade de interrupo externa INT1 TRISB.RB1 = 1 : somos obrigados a programar pino RB1/INT1 como entrada

INT2 INT2
Registrador responsvel pelo tipo de disparo de INT2:
INTCON2.INTEDG1 : bit de configurao do modo de disparo da interrupo externa INT0 1 = Aciona interrupo externa por borda de subida 0 = aciona interrupo externa por borda de descida Diagrama estrutural de INT2:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 63 de 74

Figura 6.4 Diagrama estrutural da interrupo externa INT2.

registradores INT2 Vamos conhecer os registradores relacionados a INT2:


Registradores responsveis pelas configuraes gerais das interrupes: INTCON.GIEH: habilita ou desabilita a chave geral das interrupes e as interrupes de alta prioridade INTCON.GIEL: habilita ou desabilita as interrupes de baixa prioridades RCON.IPEN : habilita ou desabilita pertencente a famlia PIC18F as interrupes de baixa ou alta prioridades

Registradores responsveis pela habilitao da interrupo externa INT2


INTCON3.INT2IE : bit de habilitao da interrupo externa INT2 INTCON3.INT2IF : bit de sinalizao da interrupo externa INT2 INTCON3.INT2IP : bit de habililitao de alta ou baixa prioridade de interrupo externa INT2 TRISB.RB2 = 1 : somos obrigados a programar pino RB2/INT2 como entrada

responsvel Registrador responsvel pelo tipo de disparo de INT2:


INTCON2.INTEDG2 : bit de configurao do modo de disparo da interrupo externa INT2 1 = Aciona interrupo externa por borda de subida 0 = aciona interrupo externa por borda de descida

estado Interrupo por mudana de estado


Os microcontroladores PIC (alguns modelos) possuem uma interrupo externa chamada Interrupo por mudana de estado (tambm chamado de RB ou interrupo de teclado) ligado aos pinos RB4, RB5, RB6 e RB7.

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 64 de 74

Diferente das interrupes externas INT0, INT1 e INT2 que somente podem ser acionadas por borda de subida ou por borda de descida, as interrupes por mudana de estado acontece nos dois estados. Analise o grfico de acionamento da interrupo:

Figura 6.5 - Grfico de acionamento de interrupo externa RB

relacionados Vamos conhecer os registradores relacionados a interrupo RB:


Registradores responsveis pelas configuraes gerais das interrupes:
INTCON.GIEH: habilita ou desabilita a chave geral das interrupes e as interrupes de alta prioridade INTCON.GIEL: habilita ou desabilita as interrupes de baixa prioridades RCON.IPEN : habilita ou desabilita pertencente a famlia PIC18F as interrupes de baixa ou alta prioridades

Registradores responsveis pela habilitao da interrupo externa RB


INTCON.RBIF : bit responsvel pelo flag de status da interrupo por mudana de estado

INTCON.RBIE : bit de habilitao da interrupo por mudana de estado INTCON2.RBIP : bit de configurao de alta ou baixa prioridade de interrupo TRISB = $1111xxxx : somos obrigados a programar os pinos RB4, RB5, RB6 e RB7como entrada INTCON.RBPU = 1 : desabilita resistores de pull up interno do PORTB (obrigatrio)

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 65 de 74

Unidade 7 Exemplos de Perifricos


Controle de display LCD
Iremos no decorrer das unidades programar o PIC para controlar e escrever mensagens publicitrias nos display LCD 16X2 alfanumrico:

Figura 7.1 Aplicaes com display LCD Os displays LCD so amplamente utilizados em diversos equipamentos e aparelhos. No decorrer dos estudos iremos explorar as funes do MikroC PRO em linguagem C para controle de displays LCD. Estudaremos passo a passo como escrever mensagens de textos nos modos 4 e 8 bits.

Projetos com displays LCD:

Equipamentos industriais

Equipamentos domsticos

Equipamentos de Informtica

CLPs e controladores industriais

Equipamentos portteis

Figura 7.2 Projetos com displays LCD

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 66 de 74

Varredura de displays de 7 segmentos


Os displays de 7 segmentos so largamente utilizados em equipamentos como: balana, painis de mquinas industriais, equipamentos mdicos, eletrodomsticos entre outros. Podemos controlar os displays de 7 segmentos atravs de conversores BCD, como por exemplo o 74HC247 (decodificador BCD) ou desenvolver cdigos BCD pelo microcontrolador. Em nosso caso, os displays esto sendo acionados por varredura. Para acionar os displays de 7 segmentos, iremos utilizar o sistema de varredura, que permite atravs de um barramento de dados de 8 bits e mais 4 pinos de acionamento, "escrever" o valor correspondente ao dado que deve ser mostrado no visor.

Projetos com displays de 7 segmentos:

Painis de equipamentos industriais Balanas Figura Figura 7.3 Projetos com displays de 7 segmentos

Varredura de Teclado matricial


O sistema de varredura de teclado matricial permite que o microcontrolador leia muitas teclas ligadas aos seus pinos. O teclado matricial muito utilizado para economizar pinos fsicos do microcontrolador. Equipamentos de diversos tipos usam o teclado matricial para inserir dados ao microcontrolador.

Figura 7.4 Teclado Matricial

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 67 de 74

Projetos Projetos com teclados matriciais:

Equipamentos Eletrodomsticos

Aparelhos de som CLPs

Figura 7.5 Projetos com teclados matriciais

Acionamento de Leds
Os leds so utilizados praticamente em quase todas as aplicaes eletrnicas. Atravs dos leds podemos visualizar o status de uma mquina, "desenhar" mensagens de textos, iluminar objetos, criar animaes visuais, entre outras aplicaes. Iremos estudar os recursos de programao em C para controle das portas de sada disponveis no microcontroladores PIC utilizando os leds como barramento de dados visual.

Projetos com com Leds


Os leds so utilizados em diversos equipamentos no mercado para as mais variadas aplicaes. Muitas das aplicaes o microcontrolador responsvel pelo controle desses leds.

Letreiros com leds

Letreiros Figura 7.6 Projetos com Leds

Controle de Iluminao de painis

Conversor Analgico digital (A/D)


A aplicao bsica do microcontrolador PIC trabalhando com o conversor A/D abaixo simples, mas possui um grande contedo educativo para ns neste momento. No exemplo abaixo utilizamos dois simples trimpots para variarmos o valor de tenso no pino A/D do PIC. Este exemplo na verdade representa inmeras aplicaes prticas de equipamentos do mercado, tais como: aparelhos de medio, leitores de sensores de temperatura, atuadores, entre outros. Criaremos programas para controle e leitores de tenso nas unidades seguintes.

Figura 7.7 Conversores A/D

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 68 de 74

Veremos tambm como ler e interpretar valores analgicos vindo de sensores de temperatura (LM35) utilizando os recursos da linguagem BASIC.

Projetos com os conversores A/D do PIC

Sensores de proximidade

Sondas e termopares Equipamentos de medio

Figura 7.8 Projetos com Conversores A/D

Controle PWM
Iremos simular programas de controle de largura de pulsos. Atravs do canal PWM disponvel no PIC, podemos controlar diversos equipamentos, tais como: inversores de freqncia, estabilizadores, fonte chaveada, controle de velocidade de motores DC, entre outras. Em nossos laboratrios, iremos controlar a velocidade controlar o aquecimento de uma carga resistiva via PWM. de giro de uma ventoinha e

Figura 7.9 Acionamento PWM

Projetos com os PWM

Inversores de freqncia Fontes chaveadas Drive de Motores Figura 7.10 Projetos com PWM

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 69 de 74

Unidade 8 Anexos
Pinagens(LCD) Descrio das Pinagens(LCD)
Pino 1 2 3 4 5 6 7 8 9 10 11 12 12 14 15 16 Funo Alimentao Alimentao V0 RS Seleo: R/W seleo E chip Select D0 D1 D2 D3 D4 D5 D6 D7 A (display c/ back) K (display c/ back) Descrio Terra ou GND VCC ou +5V Tenso para ajuste de contraste (ver figura1) 1 - dado, 0 - instruo 1 - Leitura, 0 - Escrita 1 ou (1 - 0) Habilita, 0 - desabilita

barramento de dados

Anodo p/ LED backlight Catodo p/ LED backlight

Lista de cdigos dos Caracteres


A seguir o cdigo que devemos enviar para o LCD a fim de obtermos caracter: um determinado

Figura 8.1 Lista de cdigos dos Caracteres no LCD

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 70 de 74

Tabela com o conjunto completo de instrues:

Figura 8.2 Conjunto completo de instrues do LCD

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 71 de 74

Tabela Tabela com as instrues mais comuns:

Figura 8.3 Instrues mais comuns do LCD

Resumo com as instrues mais teis:

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 72 de 74

Comandos LCD do mikroC PRO (LCD)


Comandos
_LCD_FIRST_ROW _LCD_SECOND_ROW _LCD_THIRD_ROW _LCD_FOURTH_ROW _LCD_CLEAR _LCD_RETURN_HOME _LCD_CURSOR_OFF _LCD_UNDERLINE_ON _LCD_BLINK_CURSOR_ON _LCD_MOVE_CURSOR_LEFT _LCD_MOVE_CURSOR_RIGHT _LCD_TURN_ON _LCD_TURN_OFF _LCD_SHIFT_LEFT _LCD_SHIFT_RIGHT

Descrio

Move cursor para primeira linha do LCD Move cursor para segunda linha do LCD Move cursor para a terceira linha do LCD Move cursor para a quarta linha do LCD Apaga todo o display Retorna cursor Home (1 coluna da 1 linha do LCD) Desliga cursor Cursor aparecer no visor como underline Ativa o modo piscante do cursor Move cursor para a esquerda sem movimentar os textos Move cursor para a direita sem movimentar os textos Liga todo o visor do LCD Apaga todo o visor do LCD, sem perder os dados no visor Movimenta todos os textos do LCD para a esquerda Movimenta todos os textos do LCD para a direita

Unidade 9 Figuras
Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura 1.1 Evoluo da Famlia PIC .................................................... 6 1.2 - Encapsulamentos ............................................................ 8 1.3 Diagrama interno do PIC18F4520 ............................................. 9 1.4 Memria de Programa FLASH do PIC18F4520 ................................... 12 1.5 - Opcode gerado aps compilao do programa ................................. 13 1.6 Cdigo Hexadecimal ........................................................ 14 1.7 Diagrama da memria RAM interna ........................................... 15 1.8 Registradores de Funes Especiais SFRs ................................ 16 1.9 PIC18F4520 ................................................................ 17 1.10 - PORTA .................................................................... 18 1.11 Circuito de Reset ........................................................ 21 1.12 Configurao dos fusiveis no MikroC PRO .................................. 24 1.13 - Modo HSPLL ............................................................... 25 1.14 Modo EC com pino RA6 como I/O de uso geral ............................. 26 1.15 Modo EC com pino RA6 como sada de clock ............................... 26 1.16 Clock gerado a partir de um cristal de quartzo ........................... 26 1.17 Osciladores .............................................................. 27 2.1- Canais AD multiplexados .................................................... 30 2.2 Seleo A/D ............................................................... 31 3.1 Largura de Pulsos ......................................................... 35 3.2 Variao mnima ao mximo do duty Cicle do PWM. ........................... 35 3.3 Variao do duty cicle do sinal PWM ....................................... 36 3.4 Variao do duty Cicle .................................................... 37 4.1 Diviso do Prescaler ...................................................... 38 4.2 Diagrama interno do TIMER0 ................................................ 40 4.3 Aplicao com o modo contador do TIMER0 ................................... 43 4.4 Diagrama interno do TIMER1 ................................................ 46 4.5 Circuito interno do modo RTC .............................................. 47 4.6 Ligao do segundo oscilador ao microcontrolador PIC ...................... 47 4.7 Esquema Eletrnica ........................................................ 48 4.8 Diagrama de construo interna do TIMER2 .................................. 50 4.9 Estrutura interna do TIMER3 ............................................... 52 5.1 Vetor de Alta Prioridade e Baixa Prioridade de Interrupo srie PIC18F ... 54 5.2 Diagrama de Interrupo x Tempo ........................................... 54 5.3 Exemplo para compreeno das Interrupes do PIC .......................... 55 6.1 Diagrama estrutural da interrupo externa INT0 ........................... 61 6.2 Tipos de disparo das interrupes externa INT0, INT1 e INT2 ............... 62 6.3 Diagrama estrutural da interrupo externa INT1 ........................... 63 6.4 Diagrama estrutural da interrupo externa INT2. .......................... 64 6.5 - Grfico de acionamento de interrupo externa RB .......................... 65 7.1 Aplicaes com display LCD ................................................ 66 7.2 Projetos com displays LCD ................................................. 66 7.3 Projetos com displays de 7 segmentos ...................................... 67 7.4 Teclado Matricial ......................................................... 67 7.5 Projetos com teclados matriciais .......................................... 68 7.6 Projetos com Leds ......................................................... 68 7.7 Conversores A/D ........................................................... 68 7.8 Projetos com Conversores A/D .............................................. 69

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 73 de 74

Figura Figura Figura Figura Figura

7.9 Acionamento PWM ........................................................... 69 7.10 Projetos com PWM ......................................................... 69 8.1 Lista de cdigos dos Caracteres no LCD .................................... 70 8.2 Conjunto completo de instrues do LCD .................................... 71 8.3 Instrues mais comuns do LCD ............................................. 72

Unidade 10 Tabelas
Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela Tabela 1.1 Descrio dos pinos do Microcontrolador PIC18F4520 ........................ 11 1.2 Pinos PORTA ............................................................... 17 1.3 Bits de configurao do PIC18F4520 ........................................ 23 1.4 Bits de configurao do PIC18F4520(Detalhado) ............................. 23 2.1 ADCON0 .................................................................... 31 2.2 Configurao Pinos A/D .................................................... 31 4.1- Registrador relacionados com o TIMER0 ...................................... 39 4.2 T0CON ..................................................................... 40 4.3 - Bits de seleo de fonte de prescaler(Timer 0) ............................ 41 4.4 INTCON .................................................................... 42 4.5 Registrador relacionados com o TIMER1 (as clulas em branco) ............ 45 4.6 T1CON ..................................................................... 45 4.7 Bits de seleo de fonte de prescaler ..................................... 45 4.8 Registradores responsveis pela configurao do TIMER2 .................... 50 4.9 T2CON ..................................................................... 51 4.10 Bits de ajuste do postcale ............................................... 51 4.11 Bits responsveis pelo ajuste de prescaler(TIMER 2) ...................... 51 4.12 Registradores relacionados com o TIMER3 .................................. 51 4.13 T3CON .................................................................... 52 4.14 Habilita a fonte de timer para o mdulo CCP .............................. 53 4.15 bits de ajuste do prescaler do TIMER3 .................................... 53 5.1 - RCON ...................................................................... 56 5.2 INTCON .................................................................... 57 5.3 INTCON2 ................................................................... 57 5.4 INTCON3 ................................................................... 57 5.5 PIR1 ...................................................................... 58 5.6 PIR2 ...................................................................... 58 5.7 PIE1 ...................................................................... 58 5.8 PIE2 ...................................................................... 58 5.9 IPR1 ...................................................................... 58 5.10 IPR2 ..................................................................... 59

Microgenios Treinamentos, Kits de desenvolvimento e muito mais... Pgina 74 de 74