Vous êtes sur la page 1sur 254

www.mecatronicadegaragem.blogspot.

com

antnio srgio sena

microcontroladores PIC

www.mecatronicadegaragem.blogspot.com

antnio srgio sena

microcontroladores PIC

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

ndice de Contedos
COMO TUDO COMEOU .................................................................... 10 Microcontrolador versus Microprocessador .............................................. 13 Conceitos Bsicos ...................................................................................... 14
Um mundo de nmeros ......................................................................................................................14 Sistema de numerao Binrio...........................................................................................................15 Sistemas de numerao Hexadecimal ................................................................................................16 O cdigo BCD....................................................................................................................................17 Converso de Binrio para Decimal ..................................................................................................17 Converso de Hexadecimal para Decimal .........................................................................................18 Converso de Hexadecimal para Binrio ...........................................................................................18 Bit.......................................................................................................................................................19 Byte ....................................................................................................................................................19 Circuitos Lgicos ...............................................................................................................................20 Porta lgica AND ...............................................................................................................................20 Porta lgica OR ..................................................................................................................................21 Porta lgica NOT ...............................................................................................................................21 Porta lgica EXCLUSIVE OR / XOR ...............................................................................................22 Registo ...............................................................................................................................................23 SFR / Special Function Register - Registo de Funo Especial ........................................................23 Portas de Entrada/Sada - I/O .............................................................................................................24 Unidade de memria ..........................................................................................................................26 Interrupes........................................................................................................................................27 CPU - Unidade Central de Processamento ........................................................................................28 Barramento.........................................................................................................................................29 Comunicaes Srie ...........................................................................................................................29 Baud Rate - Velocidade de transferncia ...........................................................................................30 Oscilador ............................................................................................................................................32 Circuito de Alimentao ....................................................................................................................32 Temporizadores e Contadores ............................................................................................................33 Temporizadores / Contadores ............................................................................................................34 Contadores .........................................................................................................................................37 Temporizador Watchdog ....................................................................................................................37 Conversores Analgico/Digital ..........................................................................................................38

antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Arquitectura Interna.................................................................................. 40
Arquitectura von-Neumann ...............................................................................................................40 Arquitectura Harvard .........................................................................................................................40

Conjunto de Instrues .............................................................................. 42 Como escolher o microcontrolador certo para a aplicao? ........................ 43 Microcontroladores PIC ............................................................................ 43 Microcontrolador PIC16F887 .................................................................. 44 Uma panormica........................................................................................ 44
Descrio dos pinos ...........................................................................................................................48 CPU ....................................................................................................................................................51 Memria .............................................................................................................................................52 Registos de funo geral - GPR .........................................................................................................54 Registos de funo especial - SFR .....................................................................................................55 Bancos de Memria ...........................................................................................................................55 Pilha de memria - Stack ...................................................................................................................59 Sistema de interrupo .......................................................................................................................60 Como usar os Registos de funo especial - SFR ..............................................................................61

Os Registos de Funo Especial - SFR - do CPU ....................................... 62 Caractersticas e Funes ........................................................................... 62


Registo STATUS ................................................................................................................................62 Registo OPTION_REG......................................................................................................................64 Registos do Sistema de Interrupes .................................................................................................66 Registo PCON....................................................................................................................................75 Registos PCL e PCLATH ...................................................................................................................76 Endereamento Indirecto ...................................................................................................................79

Portas I/O - Entrada/Sada ....................................................................... 80 Funcionalidades e Funes......................................................................... 80


antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Registos PORTA e TRISA .................................................................................................................81 Unidade ULPWU ...............................................................................................................................82 Registos PORTB e TRISB .................................................................................................................84 Pino RB0/INT ....................................................................................................................................87 Pinos RB6 e RB7 ...............................................................................................................................87 Registos PORTC e TRISC .................................................................................................................88 Registos PORTD e TRISD.................................................................................................................89 Registos PORTE e TRISE..................................................................................................................89 Registos ANSEL e ANSELH .............................................................................................................90

Temporizadores ......................................................................................... 93 Temporizador TMR0 ................................................................................ 93 Registo OPTION_REG............................................................................ 94 Temporizador TMR1 ................................................................................ 99
Divisor do TMR1 ...............................................................................................................................100 Oscilador do TMR1 ...........................................................................................................................101 Gate do TMR1 ...................................................................................................................................101 TMR1 em modo de Temporizador .....................................................................................................102 Oscilador do TMR1 ...........................................................................................................................103 TMR1 em modo de Contador ............................................................................................................104 Registo T1CON .................................................................................................................................105

Temporizador TMR2 ................................................................................ 106


Registo T2CON .................................................................................................................................108

Mdulos CCP ............................................................................................ 110 Capture/Compare/PWM - Captura/Compara/PWM.............................. 110 Mdulo CCP1 ........................................................................................... 110
Modo de Captura com CCP1 .............................................................................................................111 Modo de Comparao com CCP1......................................................................................................112
antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Modo de PWM com CCP1 ................................................................................................................113 Periodo do PWM................................................................................................................................116 Duty-Cycle do PWM .........................................................................................................................116 Resoluo do PWM ...........................................................................................................................117 Registos CCP1CON ...........................................................................................................................117

Mdulo CCP2 ........................................................................................... 120


Registo CCP2CON ............................................................................................................................120

Congurao do mdulo CCP1, para funcionamento em PWM ............... 121 Modo avanado do CCP1 .......................................................................... 122 Mdulos de Comunicao Srie ................................................................. 123 Modo Assncrono da EUSART ................................................................. 124
Transmissor Assncrono da EUSART ................................................................................................125 Receptor Assncrono da EUSART .....................................................................................................127 BRG - Baud Rate Generator - Gerador de Relgio para a EUSART ................................................133 Registo BAUDCTL............................................................................................................................137 Resumidamente:.................................................................................................................................139

Modo Sncrono da EUSART ..................................................................... 141


Modo SPI ...........................................................................................................................................142 Modo I2C ...........................................................................................................................................146 I2C em modo Mestre .........................................................................................................................154

Mdulos Analgicos .................................................................................. 161


Registos e Modo do ADC - Conversor A/D.......................................................................................161 Registos ADRESH e ADRESL ..........................................................................................................162

antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Requisitos da Aquisio A/D .................................................................... 163


Periodo do ADC .................................................................................................................................163

Como usar o Conversor A/D ..................................................................... 164


Registo ADCON0 ..............................................................................................................................165 Registo ADCON1 ..............................................................................................................................167 Resumidamente:.................................................................................................................................167

Comparador Analgico.............................................................................. 168


Fonte de Tenso de Referncia interna ..............................................................................................169 Comparadores e funcionamento com Interrupes............................................................................170 Registo CM1CON0............................................................................................................................171 Registo CM2CON0............................................................................................................................173 Registo CM2CON1............................................................................................................................175 Registo VRCON ................................................................................................................................176

Em resumo : ............................................................................................... 177 Outros circuitos internos ........................................................................... 178 Oscilador, EEPROM e Reset ..................................................................... 178
Registo OSCCON ..............................................................................................................................179

Modos de Relgio Externo ........................................................................ 181


Modo EC - Oscilador Externo ...........................................................................................................181 Modo LP, XT ou HS - Oscilador Externo ..........................................................................................183 Ressoador Cermico no modo XT ou HS ..........................................................................................184 Modo RC e RCIO - Oscilador Externo ..............................................................................................185

antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Modos de Relgio Interno ......................................................................... 186


Modo INTOSC - Oscilador Interno ...................................................................................................186 Modo INTOSCIO - Oscilador Interno ...............................................................................................186

Congurao do Oscilador Interno............................................................ 187 Modo de Arranque de Relgio a Duas-Velocidades .................................. 188
Fail-Safe Clock Monitor - FSCM - Monitor de Relgio contra falhas ..............................................188 Registo OSCTUNE ............................................................................................................................189

Memria EEPROM................................................................................... 191


Registo EECON1 ...............................................................................................................................191 Leitura da EEPROM ..........................................................................................................................192 Escrita da EEPROM ..........................................................................................................................193

Reset! Black-out, Brown-out ou Ruidos? ................................................... 195


Reset por Black-out - Falha de Energia Sbita ..................................................................................196 Reset por Brown-out - Descida de Tenso Lenta e Gradual ..............................................................196 Ruidos ................................................................................................................................................197 Pino de MCLR ...................................................................................................................................197

Conjunto de Instrues ............................................................................. 198 Conjunto de Instrues da Famlia PIC16Fxx de Microcontroladores ...... 198 Transferncia de dados .............................................................................. 200 Lgicas e aritmticas .................................................................................. 200 Operaes com bits .................................................................................... 201

antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC ndice

Controlo de Execuo de um Programa.............................................................................................201 Perodo de execuo da instruo ......................................................................................................203 Listagem das instrues .....................................................................................................................203

Como programar um Microcontrolador .................................................... 224 Linguagem Assembly ................................................................................. 226 Instrues .................................................................................................. 227 Operandos ................................................................................................. 227 Comentrios .............................................................................................. 228 Directivas .................................................................................................. 228
Directiva PROCESSOR .....................................................................................................................228 Directiva EQU ...................................................................................................................................228 Directiva ORG ...................................................................................................................................229 Directiva END ...................................................................................................................................229 Directiva.............................................................................................................................................$INCLUDE ..............................................................................................................................................230 Directivas CBLOCK e ENDC ...........................................................................................................230 Directivas IF, ENDIF e ELSE ............................................................................................................231 Directiva BANKSEL .........................................................................................................................232

Operadores aritmticos de assembler ........................................................ 233 Exemplo de como escrever um Programa ................................................... 234 Ficheiros criados ao compilar um programa............................................... 236 MPLAB ..................................................................................................... 238
Instalando o programa - MPLAB ......................................................................................................238 A implementao de um PROJECTO ................................................................................................243 Escrever um novo Programa ..............................................................................................................245 O primeiro programa..........................................................................................................................247 Simulador ...........................................................................................................................................249

antnio srg io sen a w ww.sen ae ng .co m : : pr ojec t os e s olu es em ele c t r n i c a + 351.9 67 03 32 09

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

COMO TUDO COMEOU


Em 1969, uma equipa de engenheiros Japoneses da BUSICOM, foi para os EUA com o pedido de desenhar alguns circuitos integrados para calculadoras. O pedido foi enviado para a INTEL, e Marcian Ho estava encarregue do projecto. Tendo experincia em trabalhar com um computador, o PDP8, ele teve a ideia de sugerir solues diferentes, ao invs dos designs sugeridos pelos Japoneses. A ideia dele presumia que o funcionamento do circuito integrado, era determinado pelo programa armazenado dentro do chip. Signicava que a congurao era mais simples, mas iria requerer muito mais memria que o projecto dos engenheiros Japoneses.

Aps um certo tempo, apesar de os Japoneses estarem ainda a tentar encontrar uma soluo mais simples, a ideia de Marcian venceu, e o primeiro microprocessador nasceu. Federico Faggin foi uma grande ajuda em tornar a ideia num produto acabado. E, nove meses aps ter sido contratado, a INTEL tinha acabado de desenvolver um produto desde a ideia original.

Em 1971, a INTEL obteve os direitos de venda deste circuito integrado, e antes disso j tinha comprado a licena da BUSICOM. Durante esse ano, um microprocessador chamado 4004 foi lanado no mercado. Esse foi o primeiro processador de 4 bits, com a velocidade de 6000 instrues por segundo.

No muito tempo depois, uma empresa Americana chamada CTC pediu INTEL e TEXAS Instruments, para fabricarem um microprocessador de 8 bits, para ser aplicado nos seus terminais. Embora a CTC tenha desistido do projecto, a INTEL e a TEXAS continuaram o trabalho e, em Abril de 1972, o primeiro microprocessador de 8 bits, chamado de 8008, foi lanado no mercado. Podia enderear 16Kb de memria, tinha 45 instrues e uma velocidade de 300.000 instrues por segundo. Esse microprocessador foi o predecessor de todos os actuais microprocessadores. A INTEL continuou o desenvolvimento e, em Abril de 1974, lanou um processador de 8 bits, chamado de 8080. Podia enderear 64Kb de memria, tinha 75 instrues, e um preo inicial de $360.

Outra empresa Americana chamada MOTOROLA, depressa se apercebeu do potencial, e ento lanaram o

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

microprocessador de 8 bit, 6800. O engenheiro chefe era Chuck Peddle. Aparte do microprocessador, a MOTOROLA tambm fabricava perifricos como o 6820 e 6850. Nessa altura muitas empresas reconheciam a importncia dos microprocessadores, e iniciaram o seu prprio desenvolvimento. Chuck Peddle deixou a MOTOROLA, juntou-se MOS Technology, e continuou o trabalho intensivo no desenvolvimento em microprocessadores.

Na exposio WESCON, nos EUA em 1975, um evento crucial na histria dos microprocessadores aconteceu. A MOS Technology anunciou que estava a vender os processadores 6501 e 6502 a $25 cada, que os interessados podiam comprar na hora. Foi tamanha a sensao, que muita gente pensava em fraude, considerando que a concorrncia vendia o 8080 e 6800, a $179 cada.

No primeiro dia da exposio, em resposta concorrncia, a MOTOROLA e a INTEL baixaram os seus microprocessadores para $69,95. A MOTOROLA acusou a MOS Technology e Chuck Peddle de plagiarem o protegido 6800. Devido a isto, a MOS Technology desistiu do fabrico do 6501, mas continuou o fabrico do 6502. Era um processador de 8 bits, com 56 instrues, e capaz de enderear directamente 64Kb de memria.

Devido ao seu baixo preo, o 6502 tornou-se muito popular, e ento foi instalado em computadores como o KIM-1, Apple I, Apple II, Atari, Commodore, Acorn, Oric, Galeb, Orao, Ultra e muitos outros. Em breve, muitas empresas comearam a fabricar o 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh, Commodore assumiram a MOS Technology). No ano da sua prosperidade, 1982, este processador estava a ser vendido taxa de 15 milhes de unidades por ano.

Outras empresas no desistiram. Frederico Faggin deixou a INTEL, e abriu a sua prpria empresa chamada ZILOG INC. Em 1976 a ZILOG anunciou o Z80. Quando desenhou este processador, Faggin tomou uma deciso crucial. O 8080 j tinha sido desenvolvido, e ele apercebeu-se que muitos iriam continuar eis a esse processador, devido aos grandes gastos em reescrever todos os programas. Ento, ele decidiu que este novo processador teria de ser compativel com o 8080, ou seja, teria de poder correr todos os programas escritos para o 8080. Aparte desta deciso, muitas outras funcionalidades foram acrescentadas, para que o Z80 fosse o micropro-

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

cessador mais poderoso da altura. Podia enderear directamente 64Kb de memria, tinha 176 instrues, um grande nmero de registos, uma opo interna para fazer o refrescamento da RAM, s uma fonte de alimentao, maior velocidade, entre outros. O Z80 foi um grande sucesso, e toda a gente substituiu o 8080 pelo Z80. Alm da ZILOG, outros fabricantes como Mostek, NEC, SHARP e SGS apareceram logo a seguir. O Z80 era o corao de muitos computadores, tais como: Spectrum, Partner, TRS703, Z-3 and Galaxy.

Em 1976 a INTEL lanou uma verso melhorada do microprocessador de 8 bits, chamado de 8085. No entanto, o Z80 era muito melhor, e a INTEL perdeu a batalha. Mesmo aps outros microprocessadores terem aparecido no mercado, 6809, 2650, SC/MP, etc, no havia grandes melhoramentos que justicasse aos fabricantes mudarem de processador, por isso o 6502, o Z80 e o 6800 continuaram os microprocessadores dominantes, e durante muito tempo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Microcontrolador versus Microprocessador


Um microcontrolador difere de um microprocessador em diversas formas.

A primeira, e mais importante, a sua funcionalidade. Para que um microprocessador possa ser usado, outros componentes tais como memria, tem que ser ligados ao chip. Mesmo sendo os microprocessador considerados potentes mquinas matemticas, o seu ponto fraco a sua parca possibilidade de comunicar com perifricos.

Ento, de maneira a que possa comunicar com perifricos, o microprocessador tem que usar circuitos especiais, como chips externos. Resumindo, os microprocessadores so o corao dos computadores. Era assim no incio, e ainda nos dias de hoje se mantm.

Microcontrolador versus Microprocessador

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Por outro lado, o microcontrolador est desenhado para ser um tudo-em-um. No so necessrios componentes externos, para as suas aplicaes, porque todos os circuitos, que pertencem aos perifricos, j esto dentro do chip. Poupa tempo e espao necessrios, aquando do design de um sistema.

Conceitos Bsicos
Um mundo de nmeros

O universo por ser descrito com apenas 10 digitos. Mas, precisamos apenas de 10 digitos? Claro que no, apenas uma questo de hbito.

Por exemplo, o nmero 764 o que signica?: quatro unidades, seis dezenas e sete centenas, ou 4 + 60 + 700, ou 4*1 + 6*10 + 7*100! Podemos representar o nmero de uma maneira mais cientca? a resposta positiva: 4*10^0 + 6*10^1 + 7*10^2. Mas porqu? Simplesmente porque usamos um sistema de numerao de base 10, ou seja, um sistema de numerao dcimal.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Sistema de numerao Binrio

O que aconteceria se apenas dois digitos pudessem er usados, o 0 e o 1? Nada de especial, continuaramos a usar nmeros mas de forma diferente. Por exemplo: 11011010. Qual a quantidade que o nmero 11011010 indica?

De maneira a que possamos aprender isto, devemos seguir a mesma lgica do exemplo anterior, mas em ordem inversa. No esquecer que se trata de matemtica com apenas dois digitos, ou seja, um sistema de numerao binrio.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

o mesmo nmero, representado de duas formas distintas. A nica diferena reside no nmero de dgitos necessrios para escrever um nmero. Um dgito (2) usado para escrever o nmero 2 em dcimal, onde dois dgitos (1 e 0), so usados para escrever esse nmero em sistema binrio.

chamado de nvel lgico zero (0) e nvel lgico um (1), com os quais a electrnica perfeita e simplesmente trabalha as operaes complexas matemticas. a electrnica que aplica a matemtica, onde todos os nmeros so representados por apenas dois dgitos, e onde s importa saber se h tenso elctrica, ou no. Estamos a falar de electrnica digital.

Sistemas de numerao Hexadecimal


No incio do desenvolvimento dos computadores, percebeu-se que as pessoas tinham muitas diculdades em trabalhar com numerao binria. Devido a isto, um novo sistema de numerao foi desenvolvido, e usando 16 digitos distintos. Os primeiros dez dgitos so os tradicionais (0, 1, 2,... 9), mas existem mais seis. Por forma a no inventar novos smbolos, convencionou-se usar as seis primeiras letras do alfabeto: A, B, C, D, E e F. Um sistema hexadecimal de numerao, consistindo nos dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F foi estabelecido.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

O maior nmero que pode ser representado por 4 dgitos binrios 1111. E corresponde ao nmero 15 no sistema decimal. Esse nmero no sistema hexadecimal, representado pelo dgito F. o maior nmero de um dgito no sistema hexadecimal. O nmero da gura escrito com oito dgitos, ao mesmo tempo o nmero hexadecimal de dois dgitos. No esquecer que os computadores usam nmeros binrios de 8 dgitos.

O cdigo BCD
O cdigo BCD um cdigo binrio apenas para nmeros decimais. usado para fazer comunicar os circuitos electrnicos com os perifricos, e num sistema binrio dentro do seu prprio mundo. Consiste em nmeros binrios de quatro dgitos, que representam os primeiros dez dgitos dcimais (0, 1, 2,... 9). Embora quatro digitos nos dem 16 combinaes possiveis, apenas as primeiras 10 so usadas.

Converso de Binrio para Decimal


Os digitos de um nmero binrio tem diferentes valores, dependendo da posio onde se encontram. Adicionalmente, cada posio pode ter 1 ou 0, e o seu valor facilmente determinado atravs da sua posio desde a direita. Para executar a converso, necessrio multiplicar valores pelos dgitos correspondentes, e somar os resultados.

110 = (1 * 2^2) + (1 * 2^1) + (0 * 2^0) = 6

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Converso de Hexadecimal para Decimal


Por forma a se fazer a converso de um nmero hexadecimal para decimal, cada digito hexadecimal deve ser multiplicado por 16, levantado ao expoente da sua posio. Por exemplo:

Converso de Hexadecimal para Binrio


No necessrio nenhum clculo, de maneira a converter nmeros hexadecimais para binario. Os dgitos hexacedimais so simplesmente substituidos pelos seus congneres 4 dgitos binrios. Por exemplo:

Esta tabela comparativa, tem os valores dos nmeros de 0 a 255, em trs sistemas de numerao distintos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Bit
Um bit um dgito binrio. De igual forma que o sistema de numerao decimal, no qual os dgitos de um nmero no tem o mesmo valor, o signicado do bit depende da sua posio no nmero binrio. Ento, no faz sentido falar de unidades, dezenas, etc. Deve-se, sim, falar do bit zero, bit um, bit dois, etc. Sempre a contar do lado direito. E, como o sistema binrio usa apenas dois dgitos, 0 e 1, o valor de um bit s pode ser 0 ou 1. No nos devemos confundir, se o bit tiver valor de 4, 16 ou 32. Isso signica que os valores dos bits esto representado em sistema decimal. Ser correcto dizer que: o valor do quinto bit de um nmero binrio, equivalente ao decimal 32.

Byte
Um byte consiste em oito bits agrupados. semelhana dos digitos de outro qualquer sistema de numerao,

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

10

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

os dgitos dos bytes no tem o mesmo signicado. O maior valor tem o bit mais esquerda chamado de Bit Mais Signicativo (MSB - Most Signicant Bit). O bit mais direita tem o menor valor, e chamado de Bit Menos Signicativo (LSB - Least Signicant Bit). Como um byte pode ter 256 combinaes possiveis de bits, o maior nmero decimal possvel de representar o 255, pois h uma combinao que representa zero. Um nibble representado como meio byte. Dependendo de que metade do byte estamos a falar, h nibbles altos ou baixos.

Circuitos Lgicos
A electrnica de que so feitos os circuitos integrados, microcontroladores ou microprocessadores, composta de elementos chamados de circuitos lgicos ou portas lgicas. Os princpios operacionais desdes elementos foram estabelecidos pelo matemtico Ingls, George Boole, e a ideia central era expressar formas lgicas, como funes de lgebra. Mais tarde o princpio evoluiu para o que hoje conhecemos como circuitos lgicos AND, OR e NOT, tambm conhecido como lgebra de Boole. Como algumas instrues de programa do microcontrolador funcionam da mesma maneira que as portas lgicas, o seu princpio de funcionamento descrito a seguir.

Porta lgica AND


A porta lgica AND tem duas ou mais entradas, e uma sada. A sada ter um 1 lgico, se as as suas entradas A e B estiverem a nivel lgico 1.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

11

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

A tabela mostra dependncia entre entradas e sada. Qualquer outra combinao nas entradas, dar um nivel lgico 0 na sada.

Quando usada num programa, a operao lgica AND feita por instrues, que sero discutidas mais frente. Por agora, importante referir que AND num programa, faz correspondncia aos bits de dois registos.

Porta lgica OR
A porta lgica OR tem duas ou mais entradas, e uma sada. A sada ter um 1 lgico, se qualquer das suas entradas A ou B estiverem a nivel lgico 1.

Num programa, a operao lgica OR feita entre os bits correspondentes dos registos. semelhana da operao lgica AND.

Porta lgica NOT


A porta lgica NOT tem apenas uma entrada, e uma sada. Quando um 0 lgico est presente na entrada, a

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

12

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

sada apresenta um 1 lgico, e vice-versa. Esta porta tambm chamada de Inversora.

Se for executada num programa, a operao NOT feita num byte. O resultado esse byte com todos os bits invertidos. Se o byte for considerado um nmero, o valor invertido na realidade o complemento desse nmero. Isto , o complemento de um nmero o que necessrio adicionar-lhe, para que o mesmo atinja o mximo valor de 8 bits (255).

Porta lgica EXCLUSIVE OR / XOR


Esta porta uma combinao das atrs referidas. A sada apresenta um 1 lgico, apenas quando as suas entradas apresentam niveis lgicos diferentes.

Em um programa, esta operao tambm usada para comparar dois bytes, para inverter quaisquer bits de um byte ou para subtrair. E no h o perigo de subtrair um nmero grande, de um menor.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

13

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Registo
Um registo um circuito electrnico que consegue memorizar o estado de um byte.

Registo

SFR / Special Function Register - Registo de Funo Especial


Como acrescento aos registos que no tem qualquer funo predeterminada, todos os microcontroladores tem alguns registos em que a sua funo est predeterminada pelo fabricante. Os seus bits esto interligados sicamente aos circuitos internos, tais como temporizadores, conversores A/D, osciladores, portas srie e outros, o que signica que so responsaveis pelo funcionamento do microcontrolador. Como um byte tem oito bits, como se fossem oito interruptores que comandam outros pequenos circuitos dentro do chip. Os SFR tem essa exacta funo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

14

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

SFR - Special Function Register - Registo de Funo Especial

Portas de Entrada/Sada - I/O


De maneira a tornar o microcontrolador de alguma utilidade, o mesmo tem que estar ligado a electrnica adicional no seu exterior, tais como perifricos. Cada micro tem um ou mais registos, chamados de Portas, ligados aos pinos do mesmo. O porqu de I/O, deve-se a que o utilizador pode alterar a funo a seu belo prazer, e conforme a aplicao a dar-lhes. Como exemplo, vamos supor que queremos comandar trs LEDs, e simultaneamente controlar o estado lgico de cinco botes: algumas portas tem de ser conguradas para que haja trs sadas e cinco entradas. Esta congurao simples e confortavelmente feita por software, o que signica, tambm, que a funo pode ser alterada durante a operao (on-the-y).

Uma das mais importantes especicaes dos pinos I/O, a corrente mxima que os mesmos podem suportar. Para a maioria dos microcontroladores, a corrente possvel de tirar de um pino a suciente para activar um LED, ou outro dispositivo similar de baixa corrente (5-25mA). Se o microcontrolador tiver muitos pinos I/O, ento a mxima corrente de um s pino menor. Resumidamente, no possvel que todos os pinos suportem a mxima corrente, se houver mais de 80 pinos em total no microcontrolador. A corrente mxima descrita nas especicaes, partilhada entre todos os portos I/O.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

15

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Outra importante funo, a de que podem ter resistncias de pull-up (polarizao positiva). Estas resistncias ligam os pinos alimentao positiva, e o seu efeito visivel quando o pino est congurado como entrada. As novas verses de microcontroladores j tem estas resistncias conguraveis por software. Normalmente, cada porto I/O controlado por um SFR, o que signica que, cada bit desse registo, determina o estado do pino correspondente do microcontrolador. Como exemplo, escrevendo 1 lgico no bit desse SFR, o pino da porta correspondente automaticamente congurado como entrada. De outra maneira, escrevendo 0 lgico no SFR, o pino da porta correspondente congurado como sada. A tenso deste pino, 0v ou 5v, corresponde ao estado do correspondente bit do registo da Porta. Se escrevermos 0 em um bit de registo da Porta, esse pino apresentar 0v. Se, inversamente, escrevermos 1 no mesmo bit, o pino j vai apresentar 5v.

Portas Input/Output - Entrada/Sada

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

16

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Unidade de memria
A memria a parte do microcontrolador usada para o armazenamento de dados.

Cada endereo de memria corresponde a uma posio de memria. O contedo dessa posio, conhecido atravs do seu endereamento. A memria tanto pode ser lida de, como pode ser escrita para. Existem vrios tipos de memria dentro do microcontrolador.

ROM - Read Only Memory: Apenas de Leitura, usada para permanentemente gravar o programa a executar.

OTP ROM - One Time Programmable ROM: ROM onde s se pode escrever o programa na memria apenas uma vez. Se houver necessidade de alterar o mesmo, ter de se fazer a gravao em um novo chip.

UV EPROM - UltraViolet Erasable Programmable ROM: ROM que permite apagar o programa, usando luz Ultra-Violeta. O chip tem uma janela de vidro no topo do seu corpo, o que permite a passagem dos raios Ultra-Violeta, que vo apagar a memria.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

17

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

FLASH - Este tipo de memria foi inventada pela Intel nos anos 80. O seu contedo pode ser escrito/apagado quase que innitamente. Os microcontroladores com memria Flash so muito uteis para aprendizagem, investigao e desenvolvimento, bem como para pequenas sries. Devido sua popularidade, a maioria dos microcontroladores so fabricados com este tipo de memria.

RAM - Random Access Memory: Este tipo de memria voltil, o que signica que quando se desliga a alimentao do chip, a sua informao desaparece. usada para o armazenamento temporrio de dados, criados e usados durante a operao do microcontrolador. Como exemplo, se o programa faz uma adio, necessrio haver um registo que tenha o valor da soma. Para esse m, um dos registos da RAM chamado de soma e usado para armazenar o resultado da adio.

EEPROM - Electrically Erasable Programmable ROM: ROM programavel, que se pode apagar electricamente. O contedo desta memria pode ser mudado durante a operao, mas o seu contedo no perdido quando se desliga a alimentao do microcontrolador. Este tipo de memria usada para guardar valores, criados durante a operao, que devem ser permanente armazenados.

Interrupes
A maioria dos programas usa interrupes durante a execuo normal dos mesmos. O m de um microcontrolador o de reagir consoante os estmulos exteriores. Posto por outras palavras, quando algo acontece, o microcontrolador faz qualquer coisa. Como exemplo, quando se pressiona um boto de um controlo remoto, o microcontrolador vai registar o acto, e responder ordem aumentando/baixando o volume, mudando de canal, etc.

Se o microcontrolador dispendesse o teu tempo indenidademente, a ler alguns botes durante horas ou dias, simplesmente seria impraticavel. Em vez de o fazer, o microcontrolador delega este trabalho ao especialista, que vai apenas reagir quando houver necessidade de ateno.

O sinal que informa o processador central deste tipo de eventos, chamado de Interrupo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

18

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

CPU - Unidade Central de Processamento


Como o seu nome sugere, esta a unidade que monitoriza e controla todos os processos dentro do microcontrolador. Consiste em variadas subunidades, em que as mais importantes so:

Descodicador de Instrues: a parte electrnica que reconhece as instrues de programa, e faz funcionar o outros circuitos com base nisso. O conjunto de instrues que diferente para cada familia de microcontroladores, mostra as capacidades deste circuito.

ALU: Unidade Lgica e Aritmtica: responsavel por todas as operaes lgicas e matemticas.

Acumulador: um registo SFR responsavel pela operao da ALU. como um registo de trabalho, usado para armazenar todos os dados que so usados para executar uma operao, e que tambm armazena os resultados prontos para serem usados para a continuao do processamento. Um dos SFR, chamado de Status, contm bastante informao sobre o estado dos dados armazenados no Acumulador (o nmero maior ou menor que zero, etc).

CPU - Central Processing Unit - Unidade de Processamento Central

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

19

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Barramento
Fisicamente, o barramento constituido por 8, 16 ou mais condutores. Existem dois tipos de barramento: o de endereamento e o de dados. O barramento de endereamento consiste no nmero de linhas necessrias para poder enderear a memria. usado para transmitir o endereo da CPU para a Memria. O barramento de dados to largo quanto os dados que vo ser trabalhados, e no caso deste manual de 8 bits ou largura de os. usado para ligar todos os circuitos dentro do microcontrolador.

Comunicaes Srie
Ligaes paralelas entre microcontroladores e perifricos, atravs de portas I/O, so a soluo ideal para curtas distncias - poucos metros. No entanto, e em outros casos em que h necessidade de estabelecer comunicaes entre dois dispositivos em maiores distncias, no possvel utilizar comunicaes paralelas. Nestas situaes, a comunicao srie a melhor soluo. Hoje em dia, a maior parte dos microcontroladores tem dentro, j de fbrica, variados sistemas para comunicaes srie. Quais destes so usados, depende de muitos factores, os quais mais importantes so:

com quantos dispositivos, o microcontrolador tem de trocar informao? com que velocidade tem que ser feita a troca de dados? qual a distncia entre os dispositivos? necessrio enviar e receber dados simultaneamente?

Um dos mais importantes pontos a considerar na comunicao srie, o Protocolo. O protocolo um conjunto de regras que devem ser obedecidas, de maneira a que os dispositivos possam correctamente interpretar os dados que todos trocam entre si. Felizmente, o microcontrolador trata desta situao de maneira perfeitamente autnoma, o que liberta o programador para a tarefa de simplesmente ler e escrever.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

20

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

CPU - Central Processing Unit - Unidade de Processamento Central

Baud Rate - Velocidade de transferncia


O termo Baud Rate normalmente usado para especicar o nmero de bits transferidos por segundo (bps). Dever-se- ter em ateno que se referem bits, e no bytes. , normalmente, requisito do protocolo, que cada byte seja transferido em conjunto com vrios bits de controlo, o que pode signicar que um byte da trama de dados srie, consista em 11 bits. Como exemplo, se o Baud Rate de 300 bps, ento, um mximo de 37 e um mnimo de 27 bytes podem ser transferidos por segundo, ambos dependentes do tipo de ligao e protocolo usado.

Os sistemas de comunicao Srie mais usados so:

I2C (Inter Integrated Circuit) um sistema usado quando a distncia entre microcontroladores e perifricos curta (normalmente o emissor e o receptor esto na mesma placa de circuito impresso). A ligao feita com dois condutores: um para transferncia de dados, e o outro para o sinal de relgio (sincronizao). Como se pode ver na gura, um dos dispositivos sempre o Mestre. Faz o endereamento de um chip Escravo, antes da comunicao se iniciar. Desta maneira, um microcontrolador pode comunicar com 112 dispositivos diferentes.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

21

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

O Baud Rate normalmente de 100 Kbit/s no modo normal, ou de 10 Kb/s em modo lento. A distncia mxima, sem ajudas, entre dispositivos que se comunicam por I2C, est limitada a poucos metros.

Comunicao I2C

SPI (Serial Peripheral Interface Bus) um sistema de comunicao srie, que usa at 4 condutores: um para receber dados, outro para enviar dados, um para sinal de relgio, e em alternativa outro para escolher com qual dos dispositivos o Mestre vai comunicar. uma ligao Full-Duplex, o que signica que o envio e a recepo podem ser feitas simultaneamente. O Baud Rate mximo superior a uma ligao I2C.

Comunicao SPI

UART (Universal Asynchronous Receiver/Transmitter) uma ligao assncrona, o que signica que o sinal de relgio no usado. Como h apenas uma linha de comunicao, ambos o receptor e emissor trabalham a um Baud Rate pr-determinado, de maneira a manter a sua sincronizao. Esta uma maneira muito simples de transferir informao, pois representa a converso de dados 8-bit em formato paralelos, para formato srie. O Baud Rate faz-se abaixo de 1 Mbit/s.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

22

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Oscilador
Pulsos dados pelo oscilador, possibilitam a operao sncrona de todos os circuitos do microcontrolador. O mdulo oscilador normalmente congurado para usar um cristal de quartzo, ou um ressoador cermico, para ter a sua oscilao estabilizada. Se no houver, por parte da aplicao, necessidade de estabilidade da oscilao, ento pode usar-se um oscilador RC (resistncia/condensador).

importante sublinhar que, as instrues, no so executas ao ritmo imposto pelo oscilador, mas algumas vezes mais lento. Isto acontece porque cada instruo executada em vrios passos. Em alguns microcontroladores, o mesmo nmero de ciclos necessrio para qualquer instruo, enquanto que em outros, o tempo de execuo no o mesmo para todas as instrues. Se o sistema usa um cristal de 20 MHz, o tempo de execua de uma instruo no de 50ns, mas 200ns, 400 ou 800ns, dependendo do tipo de microcontrolador usado.

Oscilador

Circuito de Alimentao
H duas situaes a ter em ateno, no que toca alimentao do microcontrolador:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

23

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Brown-Out, um estado potencialmente perigoso, e que acontece no momento em que o microcontrolador est a ser desligado, ou em situaes onde a energia de alimentao cai para o limite, devido a ruido elctrico. Como o microcontrolador consiste em vrios circuitos com diferentes necessidades de nvel de tenso, este estado pode causar um grande desvio na sua performance. De maneira a preveni-lo, este circuito imediatamente faz Reset a toda a electrnica interna, quando a tenso de alimentao desce abaixo de um nvel pr-determinado.

Pino Reset, normalmente marcado como MCLR (Master Clear Reset), e serve para fazer o Reset externo do microcontrolador, aplicando nvel lgico 0 ou 1, dependendo do tipo de microcontrolador usado. No caso de o chip no ter circuito de Brown-Out, um simples circuito externo de Brown-Out pode ser ligado a este pino.

Temporizadores e Contadores
O microcontrolador usa, normalmente, cristal de quartzo para funcionar. Mesmo que no seja a soluo mais simples, h muitas razes para o fazer. Nomeadamente, a frequncia do oscilador precisamente denida e muito estavel, os pulsos originados tem sempre a mesma largura, o que os faz ideais para medies de tempo. Estes osciladores so usados em relgios de quartzo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

24

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Temporizadores / Contadores

Se necessrio medir o tempo entre dois eventos, suciente contar os pulsos enviados pelo oscilador. Isto exactamente o que o Temporizador faz.

Muitos programas usam estes cronmetros miniatura, que so SFR de 8 ou 16 bits, e o seu conteudo automaticamente incrementado a cada pulso recebido. Quando um registo chegar ao m da contagem (255 ou 65535), uma Interrupo gerada.

Se os temporizadores usam um oscilador interno de quartzo, ento possvel medir o tempo entre dois eventos (se o valor do registo T1 no momento inicial, e T2 no momento nal, ento o tempo passado igual ao resultado da subtrao T2-T1). Se os temporizadores usam pulsos externos, ento o temporizador transformado em contador.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

25

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Como funciona um temporizador Na prtica, os pulsos que chegam do oscilador de quartzo a cada ciclo de mquina, ou atravs o divisor, vo incrementar (somar uma unidade) o valor do registo do temporizador. Se uma instruo (um ciclo de mquina) durar por quatro periodos do oscilador de quartzo, ento, o nmero vai mudar um milho de vezes por segundo, ou a cada microsegundo (us).

Funcionamento do Temporizador

simples medir curtos intervalos de tempo (at 256us), pelo mtodo descrito acima, porque o maior nmero que um registo pode ter. Esta bvia desvantagem pode ser facilmente contornavel de diversas maneiras, como usando um oscilador mais lento, registos com mais bits, um divisor ou interrupes. Como as duas primeiras solues so menos simples de resolver, preferivel enveredar pelas duas ltimas.

Usar o divisor no funcionamento do temporizador Um divisor um dispositivo electrnico usado para reduzir a frequncia, por um factor pr-determinado. O que signica que, para gerar um pulso na sua sada, necessrio fazer chegar 1, 2, 4, 8 ou mais pulsos sua entrada. Este circuito parte integrante do microcontrolador, e o seu factor de diviso pode ser alterado pelo software. usado quando necessrio medir perodos de tempo longos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

26

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Este divisor normalmente partilhado pelo Temporizador e pelo Watchdog, o que faz com que no possa ser usado por ambos em simultneo.

Usando o Divisor, no funcionamento do Temporizador

Usar a Interrupo no funcionamento do Temporizador Se o registo do temporizador for de 8 bits, o maior nmero que lhe poder ser escrito de 255 (ou de 65535 se o registo for de 16 bits). Se este nmero for excedido, o temporizador vai automaticamente limpar-se (auto reset), e a contagem vai iniciar-se do 0. Esta condio chamada de Overow. Se for habilitado pelo software, esse overow pode gerar uma interrupo, o que nos trs imensas novas possibilidades. Como exemplo, o estado dos registos de um relgio, segundos-minutos-horas, podem ser alterados dentro da rotina de interrupo. Todo o processo, excepto a rotina de interrupo, executado em background, o que possibilita que o circuito principal do microcontrolador execute outras operaes.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

27

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Usando a Interrupo, no funcionamento do Temporizador

Atrasos de diferente durao, com mnima interferncia do programa principal, podem facilmente ser obtidos atribuindo o divisor ao temporizador.

Contadores
Se o temporizador estiver a ser carregado com pulsos do exterior, ento o mesmo torna-se num Contador. O circuito no mudou, mantm-se o mesmo. A nica diferena que, neste caso, os pulsos a contar chegam atravs das portas, e a sua durao nunca denida. Esta a razo pela qual no podem ser usados para medio de tempo, embora os seus ns sejam imensos. Desde a contagem de peas numa linha de montagem, quantidade de passos que o motor andou, nmero de passageiros numa la, etc. As possibilidades so vastas, e so dependentes dos sensores usados.

Temporizador Watchdog
O watchdog um temporizador ligado a um oscilador RC, e totalmente independente do microcontrolador. O que faz com que no possa ser desligado durante o funcionamento.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

28

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Se o watchdog estiver ligado, escolha que apenas pode ser feita durante a programao fsica, cada vez que chega ao m da sua contagem, ocorre um reset do microcontrolador, e a execuo do programa volta primeira instruo. O objectivo fazer com que isto no acontea, pelo uso de uma instruo especca. Assim, se algo se descontrolar na execuo do programa, o microcontrolador poder reiniciar-se, no correndo o risco de car empatado num crculo innito.

Se as instrues que fazem o reset do watchdog, forem colocadas em stios especcos do programa, ento, o funcionamento do watchdog no vai interferir com o programa principal. Se, por alguma razo, normalmente por ruidos na linha elctrica, o programa car bloqueado em alguma posio da qual no consegue sair, no vai ser feito o reset do watchdog e, quando este chegar ao m da contagem, o reset do microcontrolador acontece, iniciando o programa desde o incio.

Temporizador Watchdog

Conversores Analgico/Digital
Os sinais externos so, normalmente, diferentes dos que o microcontrolador compreende (1s e 0s). Devido a isto, os sinais tem que ser convertidos para linguagem compatvel. Um conversor de Analgico para Digital, um circuito que converte sinais contnuos, para nmeros digitais. Este circuito , ento, usado para converter um valor analgico, para um nmero binrio, e envi-lo ao CPU para processamento. Posto por outras palavras, este mdulo usado para medir tenses presentes no pino. O resultado da medida um nmero de valor

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

29

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

digital, usado e processado pelo programa.

Conversor A/D

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

30

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Arquitectura Interna
Todos os microcontroladores modernos usam uma de duas arquitecturas: Harvard ou von-Neumann. Em suma, so duas formas distintas de trocar a informao entre o CPU e a Memria.

Arquitectura von-Neumann
Os microcontroladores que usam esta tecnologia, s tem disponivel uma zona de memria, e um barramento de dados de 8 bits. Como todos os dados so trocados, usando estas 8 linhas, este barramento sobrecarregado e a comunicao extremamente lenta e ineciente. O CPU pode lr uma instruo, ou lr/escrever dados de/para a memria. Ambas as situaes ao mesmo tempo so impossiveis, pois as instrues partilham o barramento com os dados.

Arquitectura Harvard
Os microcontroladores que usam esta arquitectura, dispem de dois barramentos de dados distintos. Um de 8 bits e liga o CPU RAM. O outro tem vrias linhas (12, 14 ou 16) e liga o CPU ROM.

Assim, o CPU pode ler uma instruo, ao mesmo tempo que faz um acesso memria de dados. Como todos os registos RAM so de 8 bits, todos os dados trocados dentro do microcontrolador esto no mesmo formato. Adicionalmente, durante a escrita do software, apenas 8 bits de dados so considerados. Por outras palavras, s se pode trabalhar com 8 bits de dados, no mximo.

Um programa escrito para estes microcontroladores, depois de compilado, vai ser guardado na ROM interna.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

31

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

No entanto, estas posies de memria no tem apenas 8 bits, mas sim 12, 14 ou 16. Os restantes 4, 6 ou 8 bits representam a prpria instruo, especicando ao CPU o que fazer com os dados de 8 bits.

Arq. Harvard

As vantagens deste modelo, so as seguintes:

Todos os dados so de 8 bits. Como o barramento usado para a leitura do programa tem 12, 14 ou 16 linhas, ambos as instrues e dados pode ser lidos simultaneamente. Assim, todas as instrues so executadas em apenas um ciclo. A nica excepo so as instrues de salto, que so executadas em dois ciclos.

Como a ROM e RAM so separadas, o CPU pode executar duas instrues simultaneamente. Enquanto a leitura/escrita da RAM est a ser feita, a prxima instruo est a ser lida pelo outro barramento.

Nesta arquitectura, o barramento de programa maior que um byte, o que possibilita que cada linha de programa seja feita de instruo + dados. Por outras palavras: uma linha de programa - uma instruo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

32

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Conjunto de Instrues

As instrues que so compreendidas pelo microcontrolador, so conhecidas como o Conjunto de Instrues. Quando se escreve um programa em linguagem Assembler, est-se a contar uma estria, especicando as instrues pela ordem que as mesmas devem ser executadas. A nica restrio, pelo reduzido nmero de instrues disponiveis.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

33

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Introduo

Como escolher o microcontrolador certo para a aplicao?


Antes de se comear a desenvolver um sistema baseado num microcontrolador, dever-se- equacionar o seguinte:

quantas entradas/sadas so necessrias? comunicaes srie? conversor A/D? outro...

Quando se dene muito bem os requisitos do projecto, a larga oferta naturalmente ltrada, e muito mais simples fazer a escolha adequada.

Por ltimo, fazer a escolha consoante o nmero de unidades do produto, e o preo por unidade.

Microcontroladores PIC
Estes microcontroladores, fabricados pela Microchip, so provavelmente a melhor aposta para iniciados. O verdadeito nome deste microcontroladores PICmicro, mas so mais conhecidos por PIC.

O primeiro modelo foi desenhado em 1975 pela General Instruments. Chamava-se PIC1650, e foi idealizado para ns totalmente diferentes. Aps 10 anos, e juntando memria EEPROM, este circuito transforma-se num verdadeiro microcontrolador PIC.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

34

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Microcontrolador PIC16F887 Uma panormica

O PIC16F887 um dos mais recentes produtos da Microchip. Tem todos os componentes que um moderno microcontrolador tem e, pelo baixo custo, amplo campo de aplicaes, alta qualidade e facilidade de adquirir, a soluo ideal para aplicaes como: controlo de processo industrial, controlo de mquinas, medio de valores, entre outros.

Algumas das funcionalidades esto descritas abaixo:

Arquitectura RISC (CPU de instrues reduzidas) apenas 35 instrues para aprender todas as intrues de um-ciclo, excepto os saltos

Frequncia de operao de 0 a 20MHz

Oscilador interno de preciso calibrado de fbrica frequncia escolhida por software entre 31KHz e 8MHz

Tenso de alimentao entre 2.0V e 5.5V consumo: 220uA @ 2.0V @ 4MHz, 11ua @ 2.0V @ 32KHz, 50nA em Stand-by

Modo de poupana de energia

Reset por Brown-out, com controlo por software

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

44

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

35 pinos de I/O alta corrente para polarizar LEDs directamente resistncias individuais de polarizao positiva, programaveis por software interrupo quando h mudana no estado lgico dos pinos de entrada

Memria ROM de 8k, em tecnologia FLASH o chip pode ser reprogramado cerca de 100.000 vezes

Opo de gravao no circuito o chip pode ser programado, quando est j montado no sistema nal

Memria EEPROM de 256 bytes pode ser escrita cerca de 1.000.000 vezes

Memria RAM de 368 bytes

Conversor A/D 14 canais 10 bits de resoluo

3 Temporizadores/Contadores independentes

Temporizador Watch-dog

Mdulo comparador analgico com dois comparadores analgicos tenso xa de referncia, 0.6V referncia de tenso programavel

Sada por PWM

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

45

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Mdulo USART melhorado suporta RS-485, RS-232 e LIN2.0 deteco automtica de Baudrate

Porta srie sncrona suporta os modos I2C e SPI

Microcontrolador PIC16F887 - Encapsulamento PDIP40

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

46

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Microcontrolador PIC16F887 - Encapsulamento QFN44

Microcontrolador PIC16F887 - Diagrama de Blocos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

47

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Descrio dos pinos

Como se pode ver na gura acima, quase todos os pinos so multi-funcionais. Como exemplo, o pino 33, com a designao RB0/AN12/INT, tem as seguintes funes:

RB0, Porta B, primeiro pino entrada/sada (I/O) AN12, Dcima segunda entrada analgica INT, Pino de interrupo externa

Este modo de dar funcionalidade extra aos pinos, faz o microcontrolador mais compacto, sem perder a sua funcionalidade. Estas funcionalidades no podem ser usadas em simultneo, mas podem ser alteradas a qualquer momento pelo software.

As tabelas seguintes, referem-se ao microcontrolador com caixa PDIP 40 pinos :

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

48

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Atribuio de Pinos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

49

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Atribuio de Pinos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

50

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Atribuio de Pinos

CPU
No vamos falar do funcionamento da CPU por enquanto. Mas importante frisar que a CPU desenhada com tecnologia RISC, o que um importante factor a ter em conta, aquando da deciso de que microcontrolador usar.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

51

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Esta tecnologia oferece duas grandes vantagens:

apenas 35 instrues para aprender o tempo de execuo o mesmo para todas as instrues, excepto para as que fazem salto. O que signica que com o microcontrolador a 20MHz, o tempo de execuo de cada instruo ed 200ns, ou seja, o programa executado velocidade de 5 milhes de instrues por segundo.

A CPU e a Memria

Memria
Este microcontrolador tem trs tipos de memria: ROM, RAM e EEPROM. Todas elas vo ser separadamente discutidas, pois cada uma delas tm funcionalidade e organizao especicas.

Memria ROM A memria ROM usada para permanentemente guardar o programa a executar, e esta a razo pela qual

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

52

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

chamada de memria de programa. O PIC16F887 tem 8Kb de ROM, num total de 8192 posies. Como esta ROM feita com tecnologia FLASH, o seu contedo pode ser mudado electricamente, com o auxlio de um programador externo.

Conceito de Memria ROM

Memria EEPROM Com parecenas memria de programa, o contedo da EEPROM permanentemente gravado, mesmo que a energia seja desligada. No entanto, ao contrrio da ROM, o contedo da EEPROM pode ser alterado durante a execuo do programa. E esta a razo, pela qual esta memria perfeita para guardar resultados criados, e usados, durante a operao.

Memria RAM Esta a mais complexa memria do microcontrolador. Neste caso, consiste em dois mdulos: os registos-defuno-geral (GPR), e os registos-de-funo-especial.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

53

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Embora ambos os mdulos de registos sejam limpos quando a alimentao desliga, e sejam fabricados da mesma maneira, as suas funes so completamente dspares.

Registos SFR - Special Funcion Registers, e GPR - General Purpose Registers

Registos de funo geral - GPR


Os GPR so usados para armazenar temporariamente os dados, e resultados, criados durante a execuo do

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

54

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

programa. Se o programa est a executar uma contagem, necessrio que haja um registo que sirva de somador ou contador. Como o microcontrolador tem que ser congurado para trabalhar como o utilizador deseja, necessrio, tambm, especicar o endereo de alguns GPRs e dar-lhes novas funes.

Ento, o microcontrolador pode executar o programa, porque sabe o qu, e onde est a soma que deve ser incrementada. Por analogia, a cada variavel do programa deve ser atribuido um GPR.

Registos de funo especial - SFR


Os SFR tambm so locais na RAM, mas contrariamente aos GPR, o seu m predeterminado no processo de fabrico, e no pode ser alterado.

Como os seus bits esto sicamente ligados a circuitos internos do chip (mdulo de comunicaes srie, conversor A/D, temporizadores, etc), qualquer alterao ao seu conteudo, afecta directamente o funcionamento do microcontrolador, ou alguns dos seus circuitos. Como exemplo, mudando o registo TRISB, a funo de cada pino da porta B pode ser alterada, para que seja ou entrada ou sada.

Outra particularidade dos SFRs, a de que estes tem nomes, tanto o registo como os seus bits, o que torna a escrita do programa mais facilitada. Como a programao em linguagens de alto-nvel pode usar a lista de

todos os registos, com o seu endereo exacto, apenas necessrio especicar o nome do registo, de maneira a escrever/lr o seu conteudo.

Bancos de Memria
A memria de dados est particionada em quatro bancos. Antes de aceder a algum registo, durante a escrita do programa para escrever/lr, necessrio seleccionar o banco que contm esse mesmo registo. Dois bits no registo STATUS so usados para a seleco dos bancos. De forma a facilitar esta operao, os SFR mais comuns tm o mesmo endereo em todos os bancos, o que possibilita que possam ser facilmente acedidos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

55

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Bancos de Memria

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

56

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

SFR - Banco 0

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

57

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

SFR - Banco 1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

58

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

SFR - Banco 2

SFR - Banco 3

Pilha de memria - Stack


A parte da RAM destinada Stack, consiste em oito registos de 13 bits. Antes do microcontrolador executar

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

59

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

uma subrotina (instruo CALL), ou quando surge uma interrupo, o endereo da prxima instruo empurrado para dentro de um registo da stack.

Dessa maneira, aquando da concluso da subrotina ou interrupo, o microcontrolador sabe de onde deve continuar a execuo normal do programa. Este endereo, na stack, limpo depois do retorno ao programa principal, pois no h necessidade de o conservar, e essa posio ca automaticamente disponivel para ser usada.

importante compreender que a stack funciona em crculo, ou seja, quando a stack j foi carregada oito vezes, a nona carga vai ser sobrepr-se ao valor que est guardado na primeira posio. A dcima carga vai sobrepr a segunda posio, e por a em diante. Os dados que foram sobrepostos desta maneira, no tem qualquer maneira de serem recuperados. Ainda, o programador no tem acesso a estes registos para escrever/ler, e no h nenhum bit no registo STATUS que indique que houve stack overow ou stack underow. Devido a isto, deve ter-se em considerao esta particularidade aquando da programao.

Sistema de interrupo
A primeira situao que o microcontrolador faz quando acontece uma interrupo, executar a actual instruo e parar a execuo do programa. Imediatamente depois disso, o endereo da memria do programa automaticamente empurrado para a stack, e o endereo predenido carregado para o contador de programa. Essa localizao de onde o programa continua, chama-se de Vector de Interrupo. Para o PIC em causa, o vector 0x0004.

Como se pode ver na gura abaixo, o endereo que tem o vector de interrupo saltado durante a execuo normal do programa. Parte do programa que activado quando acontece uma interrupo, chamado de Rotina de Interrupo. A sua primeira instruo est localizada no vector de interrupo. Quo longa a subrotina vai ser, e como vai ser, depende apenas do programador, bem como do tipo de interrupo.

Alguns microcontroladores tem mais vectores de interrupo (cada interrupo tm um vector associado), mas no caso deste PIC, existe apenas um vector. Consequentemente, a primeira parte da rotina de interrupo, consiste no reconhecimento da fonte da mesma, ou onde foi originada.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

60

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Panormica

Por ltimo, quando a origem da interrupo foi encontrada, e a rotina de interrupo executada, o microcontrolador chega instruo RETFIE, puxa o endereo da stack, e continua a execuo do programa de onde tinha sado.

Stack e Sistema de Interrupo

Como usar os Registos de funo especial - SFR


O programador adquire o microcontrolador, j com uma ideia bem denida do que vai fazer com o mesmo. H uma lista longa de SFRs, com os seus bits. Cada um deles controla um qualquer processo. Num todo, tudo como uma grande tabela de controlo, com muitos instrumentos e interruptores.

Os microcontroladores oferecem muitos produtos a baixo preo, que cabe ao programador tomar a deciso. Assim, este deve escolher a rea que mais o agrada, e estudar apenas aquilo que necessita de saber. Depois, quando compreender por completo o funcionamento completo do hardware, deve estudar os SFRs que o controlam.

E no esquecer!, que durante a escrita do programa, aquando do trabalho com registos e seus bits, deve ser lembrado mudar para o banco apropriado. As tabelas acima so perfeitamente explanatrias.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

61

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

Os Registos de Funo Especial - SFR - do CPU


Caractersticas e Funes
Os SFRs podem ser classicados em duas categorias:

SFR do CPU, que controlam e monitorizam os processos no processador central. Mesmo havendo poucos, a operao de todo o microcoltrolador depende do seu contedo.

SFR perifricos, que controlam a operao dos perifricos (conversor A/D, mdulo de comunicaes srie, etc). Cada um destes registos normalmente usado para um circuito, e por esta razo, ser explicado mais frente o seu funcionamento junto com o do perifrico.

Os SFR do CPU do PIC, sero descritos neste captulo. Visto que os seus bits controlam vrios circuitos dentro do chip, no possivel classic-los por grupos. Estes bits so descritos juntamente com o processo que vo controlar.

Registo STATUS

O registo de STATUS contm: o estado aritmtico do registo W, o estado do RESET e os bits de seleco do banco de memria.

O programador deve ser cauteloso, quando escreve valores para este registo porque, se o zer erradamente, os

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

62

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

resultados podem ser diferentes do esperado. Por exemplo, se se tentar apagar todos os bits, usando a instruo CLRF STATUS, o resultado no registo ser 000xx1xx, em vez do esperado 00000000. Tais erros acontecem, porque alguns bits deste registos so comandados pelo hardware, e no podem ser alterados pelo programa. E, tambm, os bits 3 e 4 so apenas de leitura.

Por estas razes, se necessrio alterar o seu contedo, recomendado usar instrues que no alterem os bits de estado C, DC e Z. Consultar o captulo sobre as Instrues do PIC.

IRP - selecciona o banco de resgistos. usado para endereamento indirecto. 1 - Bancos 0 e 1 so activados (endereos de memria 0x00 a 0xFF) 2 - Bancos 2 e 3 so activados (endereos de memria 0x100 a 0x1FF)

RP1,RP0 - selecciona o banco de registos. usado para endereamento directo RP1 0 0 1 1 RP0 0 1 0 1 Banco Activo Banco 0 Banco 1 Banco 2 Banco 3

TO - bit de Time-out 1 - A seguir ao Power-on, ou depois de executar a instruo CLRWDT, que limpa o temporizador do watchdog, ou da instruo SLEEP, que pe o microcontrolador em modo adormecido. 0 - A seguir a ter ocorrido um time-out do temporizador watchdog.

PD - bit de Power-down 1 - Depois do Power-on, ou depois de executar a instruo CLRWDT, que limpa o temporizador watchdog. 0 - Depois de de executar a instruo SLEEP, que coloca o microcontrolador em modo adormecido e baixo consumo.

Z - bit Zero 1 - O resultado da operao lgica ou aritmtica zero

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

63

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

0 - O resultado da operao lgica ou aritmtica diferente de zero

DC - bit de transporte de digito, mudado durante a soma ou subtraco, se houver overow ou um borrow do resultado 1 - Houve transporte do 4 bit do resultado. 0 - No houve transporte do 4 bit do resultado.

C - bit de Transporte, mudado durante a soma ou subtraco, se houver overow ou um borrow do resultado: se o resultado maior que 255 ou menor que 0 1 - Houve transporte do bit mais signicativo do resultado 0 - No houve transporte do bit mais signicativo do resultado

Registo OPTION_REG

O registo OPTION_REG tem vrios bits de controlo, para congurar: divisor do TMR0/WDT, temporizador TMR0, Interrupo externa e Pull-ups da Porta B.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

64

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

RBPU - Interruptor dos Pull-ups da Porta B 1 - Pull-ups desligados 0 - Pull-ups ligados

INTEDG - Seleco do anco da interrupo 1 - Interrupo no anco ascendente do pino RB0/ INT 0 - Interrupo no anco descendente do pino RB0/ INT

T0CS - Seleco da fonte de clock para o TMR0 1 - Transio no pino T0CKI 0 - Clock interno a Fosc/4

T0SE - Seleco do anco para o contador TMR0, no pino RA4/T0CKI 1 - Incrementa no anco descendente do pino T0CKI 0 - Incrementa no anco ascendente do pino T0CKI

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

65

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

PSA - Selecciona a atribuio para o TMR0 ou Watchdog, do divisor 1 - Divisor atribuido ao Watchdog 0 - Divisor atribuido ao TMR0

PS2, PS1 e PS0 - Bits de seleco da magnitude de diviso, do divisor interno

A magnitude de diviso, do divisor interno, congurada por estes trs bits, descritos na tabela abaixo. A magnitude depende de se o divisor est atribuido ao TMR0, ou ao Watchdog. PS2 0 0 0 0 1 1 1 PS1 0 0 1 1 0 1 1 PS0 0 1 0 1 1 0 1 TMR0 1:2 1:4 1:8l 1:16 1:64 1:128 1:256 WDT 1:1 1:2 1:4 1:8 1:32 1:64 1:128

De maneira a conseguir uma diviso de 1:1, quando o temporizador TMR0 usado, o divisor dever estar atribuido ao Watchdog. Como resultado, o temporizador TMR0 no usa o divisor, e conta directamente os pulsos que lhe so chegados pelo oscilador interno, ou por via externa no pino RA4/T0CKI.

Registos do Sistema de Interrupes


Quando um pedido de interrupo chega ao microcontrolador, no signica que a interrupo seja automaticamente atendida pois, a mesma, ter de estar habilitada pelo programador. Devido a isto, h bits seleccionados para ligar/desligar as interrupes.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

66

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

simples reconhecer estes bits, porque o seu nome tem a sigla IE (Interrupt Enable, ou Habilitao da Interrupo). Alm disto, cada interrupo est associada com outro bit chamado de Flag (sinalizador), que indica que o pedido de interrupo chegou ao microcontrolador, independentemente se a interrupo est habilitada, ou no. Tambm so facilmente reconhecidos pelas ltimas letras IF (Interrup Flag, ou Sinalizador de Interrupo).

Como j foi descrito, o princpio baseado numa ideia simples e eciente. Quando um pedido de interrupo chega, o bit de ag tambm automatica e autonomamente ligado em primeiro lugar.

Registos do Sistema de Interrupes

Se o bit respectivo IE no est activado, este evento ser completamente ignorado pelo microcontrolador. De outra forma, a interrupo ser trabalhada pelo CPU. Se vrias fontes de interrupo esto activadas, ento necessrio detectar as que esto activas, antes de iniciar a execuo da interrupo. A deteco feita, analisando quais os bits de ags que esto activos.

importante compreender que os bits de ag no so automaticamente limpos, depois da interrupo ser executada. Sim, devem ser apagados pelo programador, dentro do software de execuo da interrupo. Se este pormenor no fr tomado em conta, outra interrupo ir disparar quando se voltar para o programa principal, mesmo que no haja mais pedidos para a sua execuo. Resumindo, o bit de ag e o bit IE continuaro activados.

Todas as fontes de interrupo do microcontrolador PIC16F887, podero ser visualisadas na imagem abaixo. De notar os seguintes pontos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

67

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

bit GIE - activa/desactiva todas as interrupes bit PEIE - activa/desactiva todas as interrupes de perifricos. No se aplicam ao TMR0 e Porta B.

Para habilitar as interrupes causadas pela mudana de estado na Porta B, necessrio activar cada bit separadamente. Neste caso, os bits do registo IOCB tem essa funo em particular.

SFRs - Special Function Registers das Interrupes

Registo INTCON O registo INTCON contm vrios bits de activao, e ag, para o TMR0, Porta B e pino INT.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

68

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

GIE - Habilitao global e simultnea de Interrupes 1 - Activa todas as interrupes 0 - Desactiva todas as interrupes

PEIE - Habilita as Interrupes dos perifricos 1 - Activa todas as interrupes dos perifricos 0 - Desactiva todas as interrupes dos perifricos

T0IE - Habilita a interrupo de m de contagem do TMR, quando da contagem de 255 para 0. 1 - Activa interrupo do TMR0 0 - Desactiva interrupo do TMR0

INTE - Habilita interrupo externa em RB0/INT, causada pela mudana de estado no pino 1 - Activa interrupo do RB0/INT 0 - Desactiva interrupo do RB0/INT

RBIE - Habilita interrupo da Porta B, da mudana de estado nos pinos. Quando congurados como entradas, os pinos da Porta B podem causar interrupo, se mudarem de estado lgico. Seja com anco ascendente, seja descendente. Interessa apenas que houve mudana. 1 - Activa interrupo por mudana de estado da Porta B 0 - Deactiva interrupo por mudana de estado da Porta B

T0IF - Flag de interrupo de m de contagem do TMR0 1 - TMR0 chegou ao m da contagem, ag dever ser limpa pelo software 0 - TMR0 no chegou ao m da contagem

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

69

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

INTF - Flag de interrupo externa por mudana de estado no pino RB0/INT 1 - Ocorreu interrupo externa em INT, ag dever ser limpa pelo software 0 - No ocorrer interrupo externa em INT

RBIF - Flag de interrupo pela mudana de estado nos pinos da Porta B 1 - Pelo meno um dos pinos da Porta B mudou de estado lgico. Aps a leitura da Porta B, a ag RBIF dever ser limpa pelo software. 0 - Nenhum dos pinos da Porta B mudou de estado lgico.

Registo PIE1 O registo PIE1 contm os bits que habilitam as interrupes dos perifricos.

ADIE - Habilita a interrupo do Conversor A/D 1 - Liga a interrupo do conversor A/D 0 - Desliga a interrupo do conversor A/D

RCIE - Habilita a interrupo da Recepo da EUSART 1 - Liga a interrupo da Recepo da EUSART 0 - Desliga a interrupo da Recepo da EUSART

TXIE - Habilita a interrupo da Transmisso da EUSART 1 - Liga a interrupo da Transmisso da EUSART

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

70

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

0 - Desliga a interrupo da Transmisso da EUSART

SSPIE - Habilita a interrupo da Porta Srie Sncrona (MSSP), a cada transferncia efectuada 1 - Liga a interrupo MSSP 0 - Desliga a interrupo MSSP

CCP1IE - Habilita a interrupo do mdulo CCP1 (Capture/Compare/PWM - Captura/Compara/ PWM) 1 - Liga a interrupo CCP1 0 - Desliga a interrupo CCP1

TMR2IE - Habilita a interrupo por comparao entre PR2 e TMR2 1 - Liga a interrupo da comparao PR2 e TMR2 0 - Desliga a interrupo da comparao PR2 e TMR2

TMR1IE - Habilita a interrupo de m de contagem do TMR1, quando da contagem de 255 para 0. 1 - Activa interrupo do TMR1 0 - Desactiva interrupo do TMR1

Registo PIE2 O registo PIE2 tambm contm bits que habilitam as interrupes dos perifricos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

71

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

OSFIE - Habilita interrupo por falha do Oscilador interno 1 - Liga interrupo por falha do Oscilador 0 - Desliga interrupo por falha do Oscilador

C2IE - Habilita interrupo do Comparador C2 1 - Liga interrupo do Comparador C2 0 - Desliga interrupo do Comparador C2

C1IE - Habilita interrupo do Comparador C1 1 - Liga interrupo do Comparador C1 0 - Desliga interrupo do Comparador C1

EEIE - Habilita a interrupo pela escrita da EEPROM 1 - Liga a interrupo pela escrita da EEPROM 0 - Desliga a interrupo pela escrita da EEPROM

BCLIE - Habilita a interrupo pela Coliso de Dados no Barramento 1 - Liga a interrupo pela Coliso de Dados no Barramento 0 - Desliga a interrupo pela Coliso de Dados no Barramento

ULPWUIE - Habilita a interrupo pelo Despertar em extrema baixa potncia 1 - Liga a interrupo pelo Despertar em extrema baixa potncia 0 - Desliga a interrupo pelo Despertar em extrema baixa potncia

CCP2IE - Habilita a interrupo do mdulo CCP2 (Capture/Compare/PWM - Captura/Compara/ PWM) 1 - Liga a interrupo CCP2 0 - Desliga a interrupo CCP2

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

72

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

Registo PIR1 O registo PIR1 contm as ags das interrupes.

ADIF - Flag da interrupo do conversor A/D 1 - A converso A/D est completa. Flag dever ser limpa por software 0 - A converso no est completa ou no foi iniciada

RCIF - Flag da interrupo da recepo da EUSART 1 - O buer de recepo da EUSART est completo. A ag limpa, lendo o registo RCREG. 0 - O buer de recepo da EUSART no est completo.

TXIF - Flag de interrupo da transmisso da EUSART 1- O buer de transmisso da EUSART est vazio. A ag limpa, escrevendo para o registo TXREG 0 - O buer de transmisso da EUSART est completo.

SSPIF - Flag de interrupo da Porta Srie Sncrona (MSSP) 1 - A interrupo MSSP durante a transmisso/recepo ocorreu. Estas condies diferem, dependendo do modo em que se opera: SPI ou I2C. Esta ag deve ser limpa por software. 0 - Nenhuma interrupo MSSP ocorreu.

CCP1IF - Flag de interrupo de CCP1 1 - A interrupo de CCP1 ocorreu. Dependendo do modo de operao, ocorreu um valor coincidente com sucesso na captura ou comparao. Em ambos os casos, a ag dever ser limpa por software. Este bit no usado no modo de PWM. 0 - A interrupo de CCP1 no ocorreu.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

73

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

TMR2IF - Flag de interrupo de coincidncia de valores entre TMR2 e PR2 1 - Ocorreu coincidncia de valores entre o TMR2 e PR2. Este bit dever ser limpo por software. 0 - No ocorreu coincidncia de valores entre TMR2 e PR2.

TMR1IF - Flag de interrupo de m de contagem do TMR1 1 - O TMR1 chegou ao m da contagem. Este bit dever ser limpo por software. 0 - O TMR1 no chegou ao m da contagem.

Registo PIR2 O registo PIR2 tambm contm as ags das interrupes.

OSFIF - Flag de interrupo por falha do Oscilador 1 - O oscilador do sistema falhou, e o clock do sistema foi transferido para o oscilador INTOSC. Este bit dever ser limpo por software 0 - O oscilador do sistema funciona normalmente.

C2IF - Flag de interrupo do comparador C2 1 - A sada do comparador C2 mudou de estado (bit C2OUT). Este bit dever ser limpo por software. 0 - A sada do comparador C2 no mudou de estado.

C1IF - Flag de interrupo do comparador C1 1 - A sada do comparador C1 mudou de estado (bit C1OUT). Este bit dever ser limpo por software. 0 - A sada do comparador C1 no mudou de estado.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

74

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

EEIF - Flag de interrupo da operao de escrita na EEPROM 1 - Escrita na EEPROM completa. Este bit dever ser limpo por software 0 - Escrita na EEPROM no est completa, ou no foi iniciada.

BCLIF - Flag de interrupo de coliso de transferncia de dados no Barramento 1 - Ocorreu uma coliso no barramento, quando o mdulo MSSP est congurado para I2C mestre. Este bit dever ser limpo por software 0 - No ocorreu coliso no barramento

ULPWUIF - Flag de interrupo de Despertar em extrema baixa potncia 1 - Condio de Despertar ocorreu. Este bit dever ser limpo por software 0 - Condio de Despertar no ocorreu.

CCP2IF - Flag de interrupo de CCP2 1 - A interrupo de CCP2 ocorreu. Dependendo do modo de operao, ocorreu um valor coincidente com sucesso na captura ou comparao. Em ambos os casos, a ag dever ser limpa por software. Este bit no usado no modo de PWM. 0 - A interrupo de CCP2 no ocorreu.

Registo PCON
O registo PCON contm apenas duas ags, para diferenciar entre: Reset de Power-on, Reset de Brown-out, Reset de Watchdog ou Reset externo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

75

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

ULPWUE - Habilitao do modo de Despertar em extrema baixa potncia 1 - Liga Despertar em extrema baixa potncia 0 - Desliga Despertar em extrema baixa potncia

SBOREN - Habilitao por software do Reset de Brown-out 1 - Liga Reset de Brown-out 0 - Desliga Reset de Brown-out

POR - Flag de estado do Reset de Power-on 1 - No ocorreu Reset de Power-on 0 - Reset de Power-on ocorreu. Este bit dever ser limpo por software, depois de um Reset de Power-on acontecer.

BOR - Flag de estado do Reset de Brown-out 1 - No ocorreu Reset de Brown-out 0 - Reset de Brown-out ocorreu. Este bit dever ser limpo por software, depois de um Reset de Brown-out acontecer.

Registos PCL e PCLATH


O tamanho da memria de programa do PIC16F887 de 8k. Ento, tem 8192 posies para armazenar o programa. Por esta razo, o contador de programa tem de ter 13 bits (2^13 = 8192). Por forma a que o contedo de qualquer posio seja alterada por software durante a operao, o seu endereo dever ser acessvel atravs de algum SFR. Como os SFRs so todos de 8 bits, este registo articialmente criado, dividindo os seus 13 bits por dois registos independentes: PCLATH e o PCL.

Se a execuo do programa no interferir com o contador de programa, o valor deste registo automatica e constantemente incrementado +1, +1, +1, +1 ... Desta forma, o programa executado como est escrito - instruo a instruo, seguindo um constante incremento de endereo de memria de programa.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

76

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

Se o contador de programa alterado pelo software, ento h alguns pontos a ter considerao, para evitar problemas:

Os oito bits menos signicativos so provenientes do registo PCL, que legvel e escrevvel, quando os cinco bits mais signicativos provem do registo PCLATH que apenas escrevvel.

O registo PCLATH limpo aquando de qualquer RESET.

Em linguagem assembler, o valor do contador de programa marcado como PCL, mas obviamente apenas se refere aos 8 bits menos signicativos. O programador dever ter em ateno quando usar a instruo ADDWF PCL. O resultado um salto na posio de memria, atravs da soma de um nmero ao actual endereo. bastante usado quando de saltos para tabelas de converso (look-up). Um problema surge quando esta soma se arrasta para mais dos 8 bits do registo PCL. No esquecer que, acima destes 8 bits, j se trata do registo PCLATH.

Executando qualquer instruo para o registo PCL, simultaneamente causa os bits do contador de programa serem substituidos pelo conteudo do registo PCLATH. No entanto, o PCL tem acesso a apenas 8 bits do resultado da instruo, e o salto consequente ser totalmente errneo. O problema resolvido colocando essas instrues em endereos terminando por 0xXX00. Isto possibilita o programa saltar at 255 posies. Se saltos maiores so executados por esta instruo, o PCLATH dever ser incrementado em uma unidade para cada excesso do PCL (255 para 0).

Aquando da chamada, ou salto, para subrotinas (instrues CALL e GOTO), o microcontrolador dispe apenas de 11 bits para enderear. Por esta razo, como a RAM que tambm dividida em bancos, a ROM est dividida em pginas de 2k cada. Tais instrues so executadas dentro destas pginas, sem quaisquer problemas. Simplesmente, como o processador tem 11 bits de endereo do programa, pode enderear qualquer posio dentro dos 2KB. A gura abaixo explica em mais detalhe esta situao, como um salto

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

77

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

para a subrotina PP1.

No entanto, se a subrotina, ou endereo de salto, no est dentro da mesma pgina da origem do mesmo, os dois bits superiores em falta devem ser escritos no PCLATH. Esta operao est descrita na gura abaixo, como um salto para o endereo da subrotina PP2.

Registos do PCLATH

Em ambos os casos, quando a subrotina encontra as instrues RETURN, RETLW ou RETFIE (para voltar ao programa principal), o microcontrolador vai simplesmente continuar a execuo do programa de onde tinha deixado, pois o endereo de retorno foi armazenado na stack que, como mencionado, consiste de registos de 13 bits.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

78

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Registos de Funo Especial

Endereamento Indirecto
Juntamente com o endereamento indirecto, o qual lgico por si s, este microcontrolador capaz de fazer endereamento indirecto atravs dos registos INDF e FSR. E, por vezes, simplica em muito a escrita do programa. Todo o procedimento possvel porque o registo INDF no um verdadeiro registo (sicamente no existe), mas apenas especica o registo que dado pelo valor que est no FSR. Devido a isto, escrever ou ler do INDF, signica que se est a ler ou a escrever no registo que dado pelo valor que est no FSR. Por outras palavras, os endereos dos registos so especicados pelo FSR, e o contedo dos registos est armazenado no INDF. A diferena entre endereamento directo e indirecto, exemplicado na gura abaixo.

Endereamento Directo e Indirecto

Como se pode ver, o problema dos bits de endereos no existentes, solucionado por pedi-los emprestado de outro registo. Desta vez, o stimo bit chamado IRP, do registo STATUS.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

79

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Portas I/O - Entrada/Sada


Funcionalidades e Funes
Uma das mais importantes funcionalidades do microcontrolador, o nmero de pinos I/O usados para ligao aos perifricos externos. Neste caso do PIC16F887, h um total de 35 pinos I/O de uso geral.

De maneira a que o funcionamento dos pinos I/O coincida com a organizao a 8 bits, todos eles esto, similarmente aos registos, agrupados em Portas denominadas A, B, C, D e E. Todas tem caractersticas em comum:

Por razes prticas, a maioria dos pinos I/O tm vrias funes. Se um pino usado para uma qualquer funo, no pode ser usado como I/O;

Cada porta tem um par, isto , o correspondente registo TRIS: TRISA, TRISB, TRISC, TRISD e TRISE, que determina o funcionamento, mas no o contedo.

Limpando os bits do TRIS (bit=0), o correspondente pino da Porta congurado como Sada.

De igual forma, activando os bits do TRIS (bit=1), o correspondente pino da Porta congurado como Entrada.

Esta regra simples de memorizar: 0 = Output (Sada), 1 = Input (Entrada)

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

80

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Portas I/O - Entrada/Sada

Registos PORTA e TRISA


A Porta A um registo de 8 bits bidireccionais. Os bits do TRISA e ANSEL controlam os pinos da PORTA. Todos os pinos da PORTA funcionam como I/O digital, e cinco deles ainda podem trabalhar como entradas analgicas (descritas a AN):

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

81

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Similarmente aos bits do TRISA, que determinam quais dos pinos vo ser congurados como entrada ou sada, os bits respectivos do ANSEL determinam quais os pinos que vo ser usados como entradas analgicas ou I/O digitais.

RA0 = AN0 (determinado pelo bit ANS0 do registo ANSEL); RA1 = AN1 (determinado pelo bit ANS1 do registo ANSEL); RA2 = AN2 (determinado pelo bit ANS2 do registo ANSEL); RA3 = AN3 (determinado pelo bit ANS3 do registo ANSEL); e RA5 = AN4 (determinado pelo bit ANS4 do registo ANSEL).

Cada bit desta porta tem uma funco adicional, relacionada com algum perifrico interno. Estas funes adicionais vo ser discutidas mais frente.

Unidade ULPWU
O microcontrolador normalmente usado em dispositivos que tem que funcionar periodicamente e, completamente independentemente, usando energia de baterias. Nestes casos, o consumo de energia dever ser o mais reduzido possvel e prioritrio. Exemplos tpicos dessas so: termmetro, sensores de deteco de incndio e produtos de baixo consumo similares. Tambm sabido que, uma reduo na frequncia de relgio reduz o consumo energtico, ento, uma das mais convenientes solues para esta situao reduzir o relgio (usar um cristal de 32KHz em vez de 4MHz ou 20MHz).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

82

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Colocar o microcontrolador em modo de adormecido (Sleep) outro passo a dar. No entanto, mesmo com ambas as medidas aplicadas, outra situao aparece. Como acordar o microcontrolador, e coloc-lo em modo normal de operao. obviamente necessrio ter um sinal externo, que mude de estado lgico em um dos pinos. Mesmo assim, a situao ainda persisnte. Este sinal dever ser gerado por electrnica adicional, o que causa um aumento do consumo de energia do sistema.

A soluo ideal ser a de, o microcontrolador, acordar szinho peridicamente, o que perfeitamente possvel. O circuito que o permite fazer, mostrado aqui.

O princpio de operao simples:

Um pino congurado como sada, e activado a nvel lgico 1. Isso causa o condensador ser carregado. Imediatamente depois, o mesmo pino congurado como entrada. A mudana de estado lgico, habilita uma interrupo, e o microcontrolador posto em modo Sleep. Seguidamente no h nada a fazer, excepto aguardar que o condensador se descarregue, atravs da corrente de fuga que ui pelo pino de entrada. Quando isso ocorre, uma interrupo gerada e o microcontrolador continua a execuo do programa em modo normal. A sequncia outra vez repetida.

Teoricamente, esta uma soluo perfeita. O problema que, todos os pinos possveis de gerar uma interrupo, so digitais, e tem uma corrente de fuga excessivamente grande, quando a sua voltagem no est prxima dos limites de Vdd ou Vss. Neste caso, o condensador descarregado rapidamente, pois a corrente de descarga de vrias centenas de microamperes. Esta a razo pela qual o circuito ULPWU foi desenhado para ter lentas quedas de tenso, e muito baixo consumo. A sua sada gera uma interrupo, enquanto que a entrada ligada a um dos pinos do microcontrolador. Est no pino RA0. Vendo a gura abaixo, com R=200ohms e C=1nF, descarrega em aproximadamente 30ms, enquanto que o consumo total do microcontrolador reduz-se em 1000 vezes (algumas centenas de nanoamperes).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

83

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Unidade ULPWU

Registos PORTB e TRISB


A Porta B um registo de 8 bits bidireccionais. Os bits do registo TRISB determinam a funo dos seus pinos.

Similarmente Porta A, um 1 lgico no registo TRISB, congura o pino respectivo como entrada, e vice-versa. Seis pinos desta porta podem ser congurados como entrada analgica (AN). Os bits do registo ANSELH determinam quais destes pinos vo trabalhar como entradas analgicas ou I/O digitais.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

84

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

RB0 = AN12 (determinado pelo bit ANS12 do registo ANSELH); RB1 = AN10 (determinado pelo bit ANS10 do registo ANSELH); RB2 = AN8 (determinado pelo bit ANS8 do registo ANSELH); RB3 = AN9 (determinado pelo bit ANS9 do registo ANSELH); RB4 = AN11 (determinado pelo bit ANS11 do registo ANSELH); e RB5 = AN13 (determinado pelo bit ANS13 do registo ANSELH).

Cada bit desta porta tem uma funo adicional, relacionada com algum perifrico interno. Estas funes adicionais vo ser discutidas mais frente.

Todos os pinos desta porta tem resistncias pull-ups internas, o que faz deles ideais para ligar botesde-presso, interruptores, foto-acopladores, entre outros. De forma a ligar estas resistncias s portas dos microcontroladores, o bit apropriado do registo WPUB deve ser activado.

Alm dos bits do WPUB, h outro bit que afecta a operao das resistncias pull-up: o bit RBPU do registo OPTION_REG. um bit de uso geral, porque afecta a instalao global destas resistncias.

Sendo de alta impedncia, estes resistncias virtuais no afectam os pinos congurados como sadas, mas servem de extraordinria ajuda para as entradas. Assim, esto ligadas s entradas dos circuitos lgicos CMOS. De outra maneira, comportar-se-iam como se estivessem a utuar, devido ao estado de alta impedncia.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

85

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Resistncias de Pull-up

Se habilitado, cada pino da Porta B congurado como entrada, pode causar uma interrupo, mudando o seu estado lgico. De maneira a habilitar os pinos que podem gerar a interruo, o bit respectivo no registo IOCB dever ser activado.

Devido a estas particularidades, os pinos da Porta B so normalmente usados para ligar botes-de-presso, ou teclados, pois no h necessidade de perder ciclos de programa a fazer o varrimento destas entradas.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

86

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Exemplo de Teclado

Quando os pinos X, Y e Z esto conguradas como sadas activadas ao estado lgico 1, apenas necessrio esperar por um pedido de interrupo, que chega quando qualquer boto premido. Fazendo, ento, o varrimento das teclas, pode encontrar-se qual a que est a ser premida.

Pino RB0/INT
O pino RB0/INT uma fonte verdadeira de interrupo externa. Pode ser congurado para reagir a um anco ascendente ou descentence. O bit INTEDG do registo OPTION_REG selecciona qual o sinal.

Pinos RB6 e RB7


O leitor j deve ter notado que o microcontrolador PIC no tem quaisquer pinos especiais para a programao (escrever para a memria de programa). Os pinos I/O normalmente usados para o funcionamento normal, so usados para este m (RB6 para o clock e RB7 para dados). Tambm, necessrio alimentar o chip com 5V em

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

87

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Vdd e 0V em Vss, como tambm a tenso de programao Vpp da FLASH (12-14V). Durante a programao, a tenso Vpp aplicada no pino de Reset (MCLR). Apesar destas ligaes serem necessrias, o microcontrolador pode ser gravado mesmo estando j montado no sistema nal. Normalmente, um programa j gravado pode ser alterado pelo mesmo processo. Esta funo chama-se ICSP (In-Circuit Serial Programming - Programao Srie Dentro do Circuito). necessrio planear o sistema, se se pretende usar esta funcionalidade.

No nada de complicado, basta instalar um conector de 5 pinos no sistema a gravar, para que as tenses do hardware programador possam aceder ao microcontrolador. De maneira a que estas tenses no interram com a restante electrnica, dever ser pensado um circuito para travar as mesmas, usando resistncias, dodos ou jumpers.

Ligao ICSP

Registos PORTC e TRISC


A Porta C um registo de 8 bits bidireccionais. Os bits do registo TRISC determinam a funo dos seus pinos. Todas as funes adicionais desta porta, sero explicadas mais frente.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

88

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Registos PORTD e TRISD


A Porta D um registo de 8 bits bidireccionais. Os bits do registo TRISD determinam a funo dos seus pinos.

Registos PORTE e TRISE


A Porta E um registo de 8 bits bidireccionais. Os bits do registo TRISE determinam a funo dos seus pinos. A nica excepo o pino RE3, que apenas serve de entrada, e o seu bit TRIS l sempre 1.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

89

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Similarmente s Portas A e B, trs pinos podem ser congurados como entradas analgicas. Os bits do registo ANSELH determinam se o pino vai funcionar como entrada analgica (AN), ou se como I/O digital :

RE0 = AN5 (determinado pelo bit ANS5 do registo ANSELH); RE1 = AN6 (determinado pelo bit ANS6 do registo ANSELH); e RE2 = AN7 (determinado pelo bit ANS7 do registo ANSELH).

Registos ANSEL e ANSELH


Ambos estes registos so usados para congurar os pinos como analgico, ou I/O digital.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

90

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Como faz-lo:

Para congurar um pino como entrada analgica, o bit respectivo do ANSEL, ou ANSELH, dever ser activado a 1. Para congurar o pino como I/O digital, o bit respectivo dever ser desactivado (0).

O estado dos bits ANSEL, no tem qualquer efeito nas funes de sada digitais. O resultado de qualquer tentativa de leitura de um pino congurado como entrada analgica, 0.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

91

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Portas I/O - Entrada/Sada

Quando se projecta um sistema, escolher a porta atravs da qual o microcontrolador vai comunicar com os perifricos circundantes. Se se pretender usar apenas I/O digitais, pode escolher-se qualquer das portas. Se se pretender usar algumas das entradas analgicas, dever escolher-se as portas apropriadas que suportam essa congurao, AN0-AN13;

Qualquer pino pode ser congurado como entrada ou sada, excepto o RE3 apenas como entrada. Os bits dos TRISA, TRISB, TRISC, TRISD e TRISE, determinam como os respectivos pinos das PORTA, PORTB, PORTC, PORTD e PORTE se vo comportar;

Se se usarem quaisquer entradas analgicas, activar o bit respectivo no ANSEL e ANSELH, no incio do programa;

Se se usarem interruptores ou botes-de-presso, devero ser ligados Porta B, porque esta tm resistncias de pull-up. O uso destas resistncias habilitado pelo bit RBPU no OPTION_REG, e onde a activao de resistncias individualmente possivel nos bits do WPUB; e

normalmente necessrio reagir, assim que os pinos de entrada mudam de estado lgico. No entanto, no necessrio escrever um programa para mudar o estado lgico dos pinos. mais simples ligar estas entradas aos pinos da PORTB, e habilitar a interrupo a cada mudana de estado lgico. Os bits dos registos IOCOB e INTCON servem para tal.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

92

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Temporizadores
Os temporizadores deste PIC, podem ser descritos sucintamente. H apenas trs temporizadores/contadores totalmente independentes, mas dados como TMR0, TMR1 e TMR2. Mas no to simples quanto isso.

Temporizador TMR0
O temporizador TMR0 permite uma panplia de aplicaes prticas. bastante conveniente, e simples, de usar, para gerar pulsos de durao arbitrria, medio do tempo, ou para contar pulsos externos. Isto tudo quase sem limitaes.

O TMR0 um temporizador/contador de 8 bits, com as seguintes funcionalidades:

Temporizador/contador de 8 bit; Divisor de 8 bit, partilhado com o Watchdog; Fonte de relgio interna, ou externa, programavel; Interrupo por m de contagem (255 -> 0); Seleco do anco do relgio externo.

A gura abaixo representa o TMR0 com todos os bits que determinam a sua operao. Estes bits so armazenados no registo OPTION_REG.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

93

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Temporizador TMR0

Registo OPTION_REG

RBPU - Bit de habilitao dos Pull-ups da PORTB 0 - Os pinos da PORTB podem ser ligados a resistncias de Pull-up 1 - As resistncias de pull-up esto desactivadas

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

94

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

INTEDG - Bit de seleco do anco da Interrupo 0 - Interrupo no anco descendente no pino INT 1 - Interrupo no anco ascendente no pino INT

T0CS - Bit de seleco do relgio do TMR0 0 - Relgio interno (Fosc/4) 1 - Relgio atravs dos pulsos no pino RA4

T0SE - Bit de seleco do anco de incrementao do TMR0 0 - Incrementa no anco ascendente no pino RA4 1 - Incrementa no anco descendente no pino RA4

PSA - Bit de atribuio do Divisor 0 - Divisor atribuido ao TMR0 1 - Divisor atribuido ao Watchdog

PS2, PS1, PS0 - Bit de seleco da taxa de diviso A taxa de diviso ajustada, combinando estes trs bits. Como se pode ver na tabela abaixo, a mesma combinao dos bits, atribui diferentes taxas para o TMR0 e para o Watchdog, respectivamente. PS2 0 0 0 0 1 1 1 1 PS1 0 0 1 1 0 0 1 1 PS0 0 1 0 1 0 1 0 1 TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128

A funo do bit PSA, descrita nas duas guras abaixo:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

95

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Funo do bit PSA = 0

Funo do bit PSA = 1

Como se v, o estado lgico do bit PSA determina qual a atribuio do divisor: se para o TMR0, se para o Watchdog.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

96

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Tambm, de valor acrescentar:

Quando o divisor atribuido ao TMR0, qualquer escrita no mesmo vai tambm limpar o divisor;

Quando o divisor atribuido ao Watchdog, a instruo CLRWDT vai limpar ambos o divisor e o WDT;

Escrever para o registo TMR0, usado como temporizador, no d o incio de qualquer contagem, mas sim aps dois ciclos de relgio. Ento necessrio ajustar o valor escrito no registo TMR0;

Quando o microcontrolador posto em modo Sleep, o oscilador desligado. O overow (m de contagem, 255->0) no pode acontecer, pois no h pulsos para contar. por esta razo que, a interrupo por overow do TMR0, no pode acordar o microcontrolador;

Quando usado como contador de pulsos externos, sem divisor, a durao mnima do pulso, ou pausa, dever ser de 2 Tosc + 20ns. Tosc o periodo do oscilador interno;

Quando usado como contador de pulsos externos, com divisor, a durao mnima do pulso, ou pausa, dever ser de 10ns;

O registo, do divisor de 8 bits, no est disponivel ao programador, o que signica que no pode ser directamente lido/escrito;

Aquando da mudana da atribuio do divisor, do TMR0 para o Watchdog, a seguinte sequncia de instrues dever ser feita, de maneira a evitar um Reset:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

97

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

BANKSEL TMR0 CLRWDT CLRF BSF CLRWDT MOVLW ANDWF IORLW MOVWF b11111000 OPTION_REG,W b00000101 OPTION_REG TMR0 BANKSEL OPTION_REG OPTION_REG,PSA ;PRESCALER IS ASSIGNED TO THE WDT ;CLEAR WDT ;SELECT BITS PS2,PS1,PS0 AND CLEAR ;THEM BY INSTRUCTION LOGICAL AND ;BITS PS2, PS1, AND PS0 SET ;PRESCALER RATE TO 1:32 ;CLEAR WDT ;CLEAR TMR0 AND PRESCALER

Da mesma forma, aquando da mudana da atribuio do divisor, do Watchdog para o TMR0, a seguinte sequncia de instrues dever ser feita:

BANKSEL TMR0 CLRWDT BANKSEL OPTION_REG MOVLW ANDWF IORLW MOVWF b11110000 OPTION_REG,W b00000011 OPTION_REG ;SELECT ONLY BITS PSA,PS2,PS1,PS0 ;CLEAR THEM AFTERWARDS BY INSTRUCTION ;LOGICAL AND ;PRESCALER RATE IS 1:16 ;CLEAR WDT AND PRESCALER

De maneira a usar o TMR0 convenientemente, necessrio:

Seleccionar o modo: O modo do TMR0 escolhido com o bit T0CS do OPTION_REG: 0=temporizador, 1=contador; Quando usado, o divisor dever ser atribuido ao TMR0, desactivando o bit PSA do OPTION_REG. A

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

98

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

taxa do divisor atribuida pelos bits PS2-PS0 do mesmo registo; e Quando se usa a interrupo, os bits GIE e TMR0IE do INTCON, devero ser activados.

Para medir tempo: Limpar o valor do TMR0, ou escrever um valor conhecido; O tempo decorrido (em microsegundos, quando se usa um cristal de 4MHz) medido lendo o TMR0; e A ag TMR0IF do registo INTCON, automativamente activada, a cada vez que h um overow do TMR0. Se activada, gerada uma interrupo.

Para contar pulsos: A polaridade dos pulsos a contar no pino Ra4, seleccionada pelo bit T0SE do OPTION_REG: 0=anco ascendente, 1=anco descendente; e O nmero de pulsos pode ser lido do registo TMR0. O divisor, e interrupo, so usados da mesma maneira do medidor de tempo.

Temporizador TMR1
O mdulo TMR1 um temporizador/contador de 16 bit, o que signica que tem dois registos, TMR1L e TMR1H. Pode contar at 65535 pulsos num s ciclo, ou seja, antes do contador retornar a zero (overow).

Temporizador TMR1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

99

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Similarmente ao TMR0, estes registos podem ser lidos/escritos a qualquer momento. Em caso de overow, uma interrupo gerada.

O TMR1 pode funcionar em um de dois modos bsicos: como temporizador, ou como contador. No entanto, ao contrrio do TMR0, cada um destes mdulos tem funoes adicionais.

Partes do registo T1CON, controlam o funcionamento do TMR1.

Panormica do Temporizador TMR1

Divisor do TMR1
O TMR1 tem um divisor separado, o que permite divises por 1, 2, 4 ou 8, da entrada de relgio. No se pode ler/escrever directamente o divisor. No entanto, o contador do divisor automaticamente limpo aquando de uma escrita nos registos TMR1H ou TMR1L.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

100

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Oscilador do TMR1
Os pinos RC0/T1OSO e RC1/T1OSI so usados para registar os pulsos dos perifricos externos, mas tambm tem uma funcionalidade acrescida. Como se pode ver pela gura abaixo, so simultaneamente congurados como entradas, pino RC1, e como sada, pino RC0, do oscilador adicional de baixa potncia de quartzo.

Este circuito adicional, principalmente desenhado para funcionar a baixas frequncias (at 200KHz), mais precisamente, para ser usado com cristais de quartzo de 32.768 KHz. Estes cristais so usados nos relgios de quartzo, pois simples de obter pulsos de um segundo, simplesmente dividindo a frequncia.

Como este oscilador no depende do relgio interno, pode funcionar quando no modo de Sleep. activado pelo bit T1OSCEN do registo T1CON. O programador deve certicar-se que aguarda alguns milisegundos, para garantir um bom arranque deste oscilador.

A tabela abaixo, mostra os valores recomendados para os condensadores do cristal de quartzo. Estes valores no tem necessriamente de ser exactos. Oscillator LP LP LP
Oscilador do TMR1

Frequency 32 kHz 100 kHz 200 kHz

C1 33 pF 15 pF 15 pF

C2 33 pF 15 pF 15 pF

Gate do TMR1
A origem da gate do TMR1 (interruptor que liga ou desliga), controlado por software para ser o pino TG1 ou a sada do comparador C2. Esta gate permite ao TMR1 contar eventos de estado lgico no pino TG1, ou eventos analgicos usando a sada do comparador C2. Ver gura a baixo. De maneira a medir a durao de um

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

101

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

sinal, suciente ligar esta gate, e contar os pulsos que vo passando pela mesma.

TMR1 em modo de Temporizador


De maneira a seleccionar este modo, necessrio limpar o bit TMR1CS. Depois disto, o registo de 16 bits vai ser incrementado a cada pulso que chegar do oscilador interno. Se um cristal de 4MHz estiver a ser usado, vai haver uma incrementao a casa microsegundo.

Neste modo, o bit T1SYNC no afecta o temporizador, porque o mesmo est a contar pulsos do relgio interno. Como toda a electrnica usa estes pulsos, no h necessidade de sincronizao.

TMR1 em modo de Temporizador

O relgio oscilador do microcontrolador no funciona durante o modo Sleep. Devido a isto, o Overow do TMR1 no causa nenhuma interrupo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

102

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Oscilador do TMR1
O consumo energtico do microcontrolador reduzido, ao seu nvel mnimo, quando no modo Sleep. O objectivo parar o oscilador. De qualquer forma, simples colocar o TMR1 neste modo - escrevendo uma instruo de SLEEP no programa. Surge o problema de como acordar o microcontrolador, porque apenas uma interrupo o pode fazer. Como o microcontrolador dorme, uma interrupo tem que ser gerada por electrnica externa.

Oscilador do TMR1

De modo a resolver esta situao, um oscilador de baixo consumo a quartzo, que funciona quando no modo Sleep, foi desenhado dentro do PIC. Aquilo que dantes era externo ao microcontrolador, est agora embutido no silcio e destinado ao TMR1. O oscilador ligado, activando o bit T1OSCEN do registo T1CON. Seguidamente, o bit TMR1CS usado para indicar que o TMR1 usa pulsos desse oscilador.

O sinal deste oscilador de quartzo sincronizado, com o relgio do microcontrolador, desactivando o bit T1SYNC. Neste caso, o TMR1 no pode trabalhar no modo Sleep. Simplesmente porque o circuito de sincronizao usa o relgio do microcontrolador; e

A interrupo por Overow do TMR1 pode ser habilitada. Estas interrupes vo ocorrer no modo de Sleep.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

103

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

TMR1 em modo de Contador


O TMR1 inica o seu funcionamento como contador, activando o bit TMR1CS. Signica que, o TMR1, incrementado a cada anco ascendente do pino T1CKI. Se o bit de controlo T1SYNC estiver desactivado, os pulsos externos vo ser sincronizados. Por outras palavras, o TMR1 sincronizado com o relgio de sistema do microcontrolador, o que o torna um Contador Sncrono.

Quando o microcontrolador, funcionando desta maneira, posto em Sleep, os registos TMR1H e TMR1L no so incrementados, mesmo havendo pulsos externos na entrada T1CKI. Como o relgio do sistema no funciona quando em Sleep, no h relgio para sincronizao. No entanto, o divisor mantm o seu funcionamento, pois apenas um divisor de frequncia.

TMR1 em modo Contador

Este contador regista estados lgicos 1 na sua entrada. importante compreender que, pelo menos, um anco descendente tem que ser registado, antes do primeiro anco ascendente. Ver gura abaixo. A seta mostra quando o TMR1 incrementa.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

104

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Registo T1CON

T1GINV - Bit de inverso da Gate do TMR1, serve de inverso do estado lgico do pino T1G ou da sada do comparador C2 (C2OUT). Permite que o TMR1 incrementa, tanto quando recebe pulsos de anco ascendente, como de anco descendente. 1 - TMR1 incrementa a cada anco ascendente; e 0 - TMR1 incrementa a cada anco descendente.

TMR1GE - Bit que habilita a Gate do TMR1, que determina se a gate do pino T1G, ou a sada do comparador C2, vai estar activa, ou no. Este bit s funcional, se o bit TMR1ON estiver activo. De outra maneira, o TMR1GE ignorado. 1 - TMR1 est ligado, apenas se a Gate estiver desligada; e 0 - A gate no afecta o funcionamento do TMR1

T1CKPS1, T1CKPS0 - Bits de seleco do divisor de frequncia da entrada de relgio do TMR1 T1CKPS1 0 0 1 1 T1CKPS0 0 1 0 1 Prescaler Rate 1:1 1:2 1:4 1:8

T1OSCEN - Bit que habilita o Oscilador de Baixa Potncia 1 - Oscilador de baixa potncia est activo como relgio do TMR1; e 0 - Oscilador de baixa potncia est desligado.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

105

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

T1SYNC - Bit de sincronizao do relgio externo do TMR1, habilita a sincronizao dos pulsos de entrada no T1CKI ou pelo oscilador de baixa potncia. Quando conta pulsos do oscilador interno (TMR1CS=0), este bit ignorado. 1 - No sincroniza a entrada externa de relgio; e 0 - Sincroniza a entrada externa de relgio.

TMR1CS - Bit de seleco da fonte de relgio do TMR1 1 - Conta pulsos do pino T1CKI, no anco ascendente; e 0 - Conta pulsos pelo relgio interno do microcontrolador.

TMR1ON - Bit que habilita o TMR1 1 - Liga o TMR1; e 0 - Desliga o TMR1.

De forma usar o TMR1 correctamente, necessrio o seguinte:

Como no possivel desligar o divisor, a sua taxa de diviso ajustada pelos bits T1CKPS1 e T1CKPS0, do registo T1CON;

O modo dever ser escolhido pelo bit TMR1CS: 0=clock interno, 1=pulsos externos; Activando o bit T1OSCEN, o TMR1 ligado, e os registos TMR1H e TMR1L so incrementados a cada pulso do cristal externo. A contagem pra quando este bit desactivado;

O divisor limpo, quando se limpa ou escreve nos registos contadores TMR1H e TMR1L; e Quando os registos TMR1H e TMR1L excedem o seu valor, a ag TMR1IF activada, e a contagem comea do zero.

Temporizador TMR2
O temporizador TMR2 um mdulo temporizador que funciona de uma maneira especca, e controlado por bits do registo T2CON.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

106

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Temporizador TMR2

Os pulsos do oscilador interno, passam primeiro pelo divisor, em que a taxa pode ser alterada pelos bits T2CKPS1 e T2CKPS0. A sada do divisor ento usada para incrementar o registo do TMR2, comeando de 0x00. Os valores do TMR2 e PR2, so constantemente comparados, e o TMR2 constantemente incrementado at que o seu valor coincida com o de PR2. Quando ambos coincidem, o TMR2 automaticamente posto a 0x00. O ps-divisor incrementando, e a sua sada usada para gerar uma interrupo, se a mesma estiver habilitada.

Ambos os registos TMR2 e PR2 so possiveis de ler e escrever. A contagem interrompida a qualquer momento, desactivando o bit TMR2ON, o que contribui para a poupana de energia.

Como opo extra, o momento do Reset do TMR2 pode, tambm, ser usado para determinar a velocidade de comunicaes sncronas srie.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

107

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

Registo T2CON

TOUTPS3 - TOUTPS0 - Bits de seleco da taxa de diviso do ps-divisor do TMR2: 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 Postscaler Rate 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

TMR2ON - Bit que liga o TMR2 1 - TMR2 est ligado; 0 - TMR2 est desligado.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

108

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Temporizadores

T2CKPS1, T2CKPS0 - Bits de seleco da taxa de diviso do divisor do TMR2 T2CKPS1 0 0 1 T2CKPS0 0 1 x Prescaler Rate 1:1 1:4 1:16

Quando se usa o TMR2, no devero ser esquecidos alguns detalhes que tem a ver com os seus registos:

Quando do Power-on, o registo PR2 tem o valor de 0xFF; Ambos o divisor e ps-divisor, so limpos quando se escreve para o TMR2; Ambos o divisor e ps-divisor, so limpos quando se escreve para o T2CON; Em qualquer Reset, ambos o divisor e ps-divisor so limpos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

109

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Mdulos CCP
Capture/Compare/PWM - Captura/Compara/PWM
O mdulo CCP um perifrico que permite, ao programador, controlar e medir o tempo de diversos eventos.

Modo de Captura - permite a medio do tempo de durao de um evento. Este circuito monitoriza o estado do TMR1, que constantemente muda de valor.

Modo de Comparao - compara valores entre os registos do TMR1 e CCPR. Tambm permite, ao programador, gerar um sinal quando um determinado tempo j expirou.

Modo de PWM - Pulse Width Modulation = Modulao por Largura de Impulsos - gera sinais de frequncia e Duty-Cycle variaveis.

O PIC 16F887 tem dois destes mdulos: CCP1 e CCP2.

Ambos so idnticos nas suas funes, com a excepo das funcionalidades avanadas do CCP1.

Mdulo CCP1
Uma parte importante deste circuito, o registo CCPR1 de 16 bits, que consiste nos registos CCPR1L e CCPR1H. usado para capturar, ou comparar com o TMR1 (TMR1H and TMR1L).

Mdulo CCP1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

110

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

No modo de comparao, se habilitado por software, o Reset do temporizador TMR1 pode ocorrer com coincidncia de valores. Alm disto, o mdulo CCP1 pode gerar sinais PWM, de frequncia e duty-cycle variaveis.

Os bits do registo CCP1CON, controlam o mdulo CCP1.

Modo de Captura com CCP1


Neste modo, o TMR1 copiado para o CCP1, nas seguintes situaes:

Cada anco descendente no pino RC2/CCP1; Cada anco ascendente no pino RC2/CCP1; Cada 4 anco ascendente no pino RC2/CCP1; Cada 16 anco ascendente no pino RC2/CCP1.

A combinao dos quatro bits (CCP1M3 - CCP1M0) do registo de controlo, determina destas situaes quais vo disparar a transferncia dos 16 bits. Tambm, o pino RC2/CCP1 dever estar congurado como entrada, e o TMR1 dever funcionar como temporizador ou contador sncrono.

CCP1 em modo de Captura

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

111

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

A ag CCP1IF activada quando a captura feita. Se tal acontecer, e se o bit PIE estiver activado, ento uma interrupo gerada.

Quando o modo de captura mudado, interrupes de captura no desejaveis podero ser geradas. De maneira a evitar esta situao, ambos os bits CCP1IE e CCP1IF devero ser desactivados, antes de fazer qualquer mudana.

Interrupes no desejaveis tambm podero ser geradas, ao mudar de um divisor de captura para outro. Para evitar esta situao, o mdulo CCP1 deve ser temporriamente desligado, antes de mudar de divisor.

recomendada a seguinte sequncia de comandos:

BANKSEL CCP1CON CLRF MOVLW MOVWF CCP1CON XX CCP1CON ;CONTROL REGISTER IS CLEARED ;CCP1 MODULE IS OFF ;NEW PRESCALER MODE IS SELECTED ;NEW VALUE IS LOADED TO THE CONTROL REGISTER ;CCP1 MODULE IS SIMULTANEOUSLY SWITCHED ON

Modo de Comparao com CCP1


Neste modo, o valor do CCP1 constantemente comparado com o valor do TMR1. Quando os valores coincidem, o estado lgico da sada RC2/CCP1 pode alterar, o que vai depender do estado dos bits CCP1M3 - CCP1M0. A ag CCP1IF , tambm, simultaneamente activada.

Para congurar o mdulo CCP1 para funcionar deste modo, duas condies devem ser verdadeiras:

- O Pino RC2/CCP1 dever ser congurado como sada; - O temporizador TMR1 dever ser sicronizado com o clock interno.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

112

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

CCP1 em modo de Comparao

Modo de PWM com CCP1


Sinais com frequncia e duty-cycle variavel, tem uma grande aplicao em automao. Um exemplo tpico um circuito de controlo de potncia, que est na gura abaixo. Se um estado lgico 0 representa o interruptordesligado, e um estado lgico 1 representa o interruptor-ligado, a energia que a carga consome, directamente proporcional durao do pulso. Esta relao chamada de Duty-Cycle, ou ciclo-activo.

CCP1 em modo de PWM

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

113

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Outro exemplo muito comum, o uso de sinais PWM para gerar sinais ou formas de onda arbitrrias, como por exemplo uma onda sinusoidal.

CCP1 em modo de PWM, com ltragem

Dispositivos que funcionam desta maneira, so frequentemente usados como reguladores comutados, que controlam o funcionamento de motores: velocidade, acelerao, desacelerao, etc.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

114

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Mdulo PWM

A gura acima, mostra o diagrama de blocos do mdulo CCP1 congurado no modo de PWM. De maneira a gerar pulsos de forma arbitrria no pino de sada, necessrio determinar dois valores: a frequncia do pulso e a sua durao.

Modo PWM

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

115

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Periodo do PWM
O periodo (T) do pulso de sada especicado pelo registo PR2 do TMR2. O periodo do PWM pode ser calculado pela seguinte equao:

PWM Periodo (T) = (PR2 +1) * 4Tosc * Valor Divisor TMR2

Se o periodo do PWM fr conhecido, facil de calcular a frequncia, pois esta o inverso do periodo -> F = 1 / T.

Duty-Cycle do PWM
O Duty-Cycle do PWM congurado usando 10 bits: oito MSbs (bits mais signicativos) do registo CCP1RL e dois adicionais LSbs (bits menos signicativos) do registo CCP1CON (DC1B1 e DC1B0). O resultado um nmero de 10 bits, presente na frmula:

Duty-Cycle = Largura do Pulso = (CCPR1L,DC1B1,DC1B0) * Tosc * Valor Divisor TMR2

A tabela seguinte, mostra como gerar sinais PWM de frequncia variavel, se se usar um cristal quartzo de 20MHz (Tosc=50ns) Frequency [KHz] TMR2 Prescaler PR2 Register 1.22 16 FFh 4.88 4 FFh 19.53 1 FFh 78.12 1 3Fh 156.3 1 1Fh 208.3 1 17h

A lembrar:

O pino de sada ser constantemente activado, caso a Largura do Pulso seja maior que o periodo do PWM;

Nesta aplicao, o ps-divisor do TMR2 no pode ser usado para gerar periodos maiores de PWM.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

116

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Resoluo do PWM
Um sinal de PWM no mais que uma sequncia de pulsos, com largura do pulso variavel. Para uma determinada frequncia (nmero de pulsos por segundo), h um nmero limitado de combinaes de larguras de impulso. Este nmero chamado de resoluo, e medido em bits. Por exemplo, uma resoluo de 10 bits, resulta em 1024 larguras de impulso, onde uma resoluo de 8 bits, resulta em 256 larguras de impulso. Relativamente a este microcontrolador, a resoluo especicada pelo PR2. O valor mximo obtido escrevendo 0xFF.

Frequncias e resoluo do PWM, com Fosc de 20MHz: PWM Frequency Timer Prescale PR2 Value Maximum Resolution 1.22kHz 16 FFh 10 4.88kHz 4 FFh 10 19.53kHz 1 FFh 10 78.12kHz 1 3Fh 8 156.3kHz 1 1Fh 7 208.3kHz 1 17h 6

Frequncias e resoluo do PWM, com Fosc de 8MHz: PWM Frequency Timer Prescale PR2 Value Maximum Resolution 1.22kHz 16 65h 8 4.90kHz 4 65h 8 19.61kHz 1 65h 8 76,92kHz 1 19h 6 153.85kHz 1 0Ch 5 200.0kHz 1 09h 5

Registos CCP1CON

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

117

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

P1M1, P1M0 - bits de congurao da sada de PWM - em todos os modos, excepto no PWM, o pino P1A a entrada do mdulo de Captura/Comparao. Os pinos P1B, P1C e P1D so I/O da Porta D. No modo de PWM, estes bits afectam o mdulo CCP1, como mostra a tabela abaixo: P1M1 0 P1M0 0 Mode PWM com sada nica Pino P1A, sada de sinal modulado, Pinos P1B, P1C e P1D so I/O da porta D Congurao em Ponte completa 0 1 Pino P1D, sada de sinal modulado Pino P1A est activo Pinos P1B e P1C esto inactivos Congurao em Meia Ponte 1 0 Pinos P1A e P1B, sada modulada de sinal Pinos P1C e P1D so I/O da porta D Congurao em Ponte completa Reversa 1 1 Pino P1B, sada de sinal modulado Pino P1C est activo Pinos P1A e P1D esto inactivos

DC1B1, DC1B0 - MSbs do Duty-Cycle do PWM - so apenas usados no modo de PWM, em que representam os dois bits menos signicativos de um nmero de 10 bit. Este nmero determina a Largura de Impulso do sinal PWM. Os restantes 8 bits, esto armazenados no registo CCP1RL.

CCP1M3-CCP1M0 - bits de seleco do modo de CCP1 :

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

118

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

CCP1M3 0 0 0 0 0 0 0 0 1

CCP1M2 0 0 0 0 1 1 1 1 0

CCP1M1 0 0 1 1 0 0 1 1 0

CCP1M0 0 1 0 1 0 1 0 1 0

Mode Mdulo desligado No usado Modo de Comparao bit CCP1IF activado quando coincide No usado Modo de Captura A cada anco descendente no pino CCP1 Modo de Captura A cada anco ascendente no pino CCP1 Modo de Captura A cada 4 anco ascendente no pino CCP1 Modo de Captura A cada 16 anco ascendente no pino CCP1 Modo de Comparao Sada e bit CCP1IF so activados quando coincide Modo de Comparao Sada desactivada e bit CCP1IF activado quando coincide Modo de Comparao Chamada de interrupo e bit CCP1IF activado quando coincide Modo de Comparao bit CCP1IF activado e registos de temporizadores 1 ou 2 so limpos Modo de PWM Pinos P1A e P1C so activos a 1 Pinos P1B e P1D so activos a 1 Modo de PWM Pinos P1A e P1C so activos a 1 Pinos P1B e P1D so activos a 0 Modo de PWM Pinos P1A e P1C so activos a 0 Pinos P1B e P1D so activos a 1 Modo de PWM Pinos P1A e P1C so activos a 0 Pinos P1B e P1D so activos a 0

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

119

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Mdulo CCP2
Excluindo a diferena de nomes de registos e bits, este mdulo uma boa cpia do CCP1, em modo normal. H apenas uma diferena entre ambos, quando o CCP2 opera no modo de Comparao.

Essa diferena centra-se no sinal de Reset do TMR1. Nomeadamente, se o conversor A/D est ligado, no momento em que os valores de TMR1 e CCPR2 coincidem, o sinal de Reset do TMR1 vai automaticamente iniciar uma converso A/D.

Mdulo CCP2

Similarmente ao mdulo anterior, este circuito controlador pelos bits do registo CCP2CON.

Registo CCP2CON
DC2B1, DC2B0 - MSbs do Duty-Cycle do PWM - so apenas usados no modo de PWM, em que representam os dois bits menos signicativos de um nmero de 10 bit. Este nmero determina a Largura de Impulso do sinal PWM. Os restantes 8 bits, esto armazenados no registo CCP2RL.

CCP2M3-CCP2M0 - bits de seleco do modo de CCP2

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

120

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

CCP2M3 0 0 0 0 0 0 0 0 1

CCP2M2 0 0 0 0 1 1 1 1 0

CCP2M1 0 0 1 1 0 0 1 1 0

CCP2M0 0 1 0 1 0 1 0 1 0

Mode Mdulo desligado No usado No usado No usado No usado Modo de Captura A cada anco descendente no pino CCP2 Modo de Captura A cada anco ascendente no pino CCP2 Modo de Captura A cada 4 anco ascendente no pino CCP2 Modo de Captura A cada 16 anco ascendente no pino CCP2 Modo de Comparao Sada e bit CCP2IF so activados quando coincide Modo de Comparao Sada desactivada e bit CCP2IF activado quando coincide Modo de Comparao Chamada de interrupo e bit CCP2IF activado quando coincide e pino CCP2 no afectado Modo de Comparao bit CCP2IF activado, registos do TMR1 so lim-

pos, ADC arranca se o ADC estiver ligado quando coincide Modo de PWM

Congurao do mdulo CCP1, para funcionamento em PWM


De maneira a congurar o mdulo CCP para funcionamento em PWM, os seguintes passos devem ter-se em conta:

Congurar o pino CCP1 como entrada;

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

121

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos CCP

Ajustar o periodo do PWM, carregando o registo PR2; Congurar o mdulo CCP, para o modo de PWM, combinando bits do registo CCP1CON; Ajustar o Duty-Cycle do PWM, carregando o registo CCP1RL, e os bits DC1B1-DC1B0 do CCP1CON;

Para congurar e ligar o TMR2: Limpar a Flag de interrupo TMR2IF, no registo PIR1; Ajustar o divisor do TMR2, carregando os bits T2CKPS1 e T2CKPS0 do registo T2CON; Ligar o TMR2, activando o bit TMR2ON no T2CON;

Habilitar os pinos de sada do PWM, depois de um cclo de PWM ter passado; Esperar pelo m de contagem do TMR2 (overow), bit TMR2IF do registo PIR1 activado; Congurar o respectivo pino como sada, no registo TRISx.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

122

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Mdulos de Comunicao Srie


O mdulo EUSART - Enhanced Universal Synchronous Asynchronous Receiver Transmitter - Receptor/ Transmissor Sncrono/Assncrono Srie Avanado, um perifrico interno de comunicaes I/O srie. Tambm conhecido como SCI - Serial Communications Interface - Interface de Comunicaes Srie.

Contm todos os geradores de relgio, shift-registers e registos de dados necessrios para fazer uma emisso, ou recepo, de dados srie, independentemente da execuo do programa principal. Como o seu nome indica, aparte do uso do relgio para sincronizao, este mdulo tambm pode estabelecer comunicaes assncronas, o que o torna insubstituivel em algumas aplicaes.

Como exemplo, no caso de ser dicil, ou impossivel, de disponibilizar canais especiais de Relgio e Dados, ex.: controlo remoto por rdio ou infravermelhos, o mdulo EUSART uma soluo bastante conveniente.

O sistema EUSART, dentro do PIC16F887, tem as seguintes caractersticas:

Transmisso/Recepo Assncrona em Full-Duplex (envia e recebe ao mesmo tempo); Tamanho de dados conguravel entre 8 ou 9 bits; Deteco de endereo no modo de 9 bits; Deteco de erro, de registo de entrada j cheio; Comunicao Hall-Duplex (ou envia, ou recebe) no modo Sncrono Mestre, ou Escravo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

123

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Modo Assncrono da EUSART


A EUSART transmite e recebe dados, usando um formato normalizado de non-return-to-zero (NRZ), ou no-retorna-ao-zero. Como de pode ver na gura abaixo, este modo no usa sinal de relgio, enquanto os dados esto a ser transferidos:

EUSART em modo Assncrono

Cada pacote de dados transferido da seguinte maneira:

Quando parado, o pino de sada est no estado lgico 1; Cada transmisso de dados comea com um bit START, que sempre zero (0); Cada pacote de dados tem 8 ou 9 bits de tamanho, onde o LSB sempre o primeiro a ser transferido; Cada transmisso de dados termina com um bit de STOP, que tem sempre estado lgico (1).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

124

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Transmissor Assncrono da EUSART

Transmissor Assncrono da EUSART

De maneira a possibilitar a transmisso de dados com o mdulo EUSART, necessrio congur-lo para trabalhar como transmissor. Ou seja, necessrio denir o estado dos seguintes bits:

TXEN = 1 - O transmissor da EUSART est ligado, activando este bit no registo TXSTA;

SYNC = 0 - A EUSART est congurada para funcionar em modo assncrono, desactivando este bit do registo TXSTA;

SPEN = 1 - Activando este bit do registo RCSTA, a EUSART activada e o pino TX/CK automaticamente congurado como sada. Se este bit simultaneamente usado para alguma funo analgica, esta deve ser desactivada, limpando o bit correspondente no registo ANSEL.

O cerne do transmissor EUSART, o shift-register TSR, que no directamente acessivel pelo utilizador. De maneira a iniciar a transmisso, o mdulo deve estar ligado, activando o bit TXEN. Os dados a enviar, devem ser escritos no registo TXREG, o que vai causar a seguinte sequncia de eventos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

125

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

O byte imediatamente transferido para o shift-register TSR; O registo TXREG mantm-se vazio, o que indicado pela ag TXIF do PIR1. Se o bit TXIE do registo PIE1 estiver activo, uma interrupo gerada. De qualquer modo, quer a interrupo esteja activa, ou no, esta ag sempre activada. Tambm, no pode ser apagada pelo sotware, mas apagada quando se escreve para o TXREG;

A electrnica empurra os dados para o pino TX, ao mesmo ritmo do relgio interno: START bit ... dados ... STOP bit;

Quando o ltimo bit abandona o TSR, o bit TRMT do registo TXSTA automaticamente activado; Se, entretanto, o TXREG recebeu um novo caracter, todo o procedimento repetido imediatamente ao STOP bit do caracter anteriormente transmitido.

O envio de dados de 9 bits, habilitado activando o bit TX9 do TXSTA. O bit TX9D do TXSTA o nono MSB. Quando da transferncia, o TX9D dever ser escrito, antes de escrever para o TXREG. Todos os noves bits de dados sero transmitidos, assim que a escrita no TXREG estiver completa.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

126

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Receptor Assncrono da EUSART

Receptor Assncrono da EUSART

Para activar a recepo de dados, necessrio fazer o seguinte:

CREN = 1 - O receptor da EUSART ligado, activando este bit no registo RCSTA;

SYNC = 0 - A EUSART est congurada para funcionar em modo assncrono, desactivando este bit do registo TXSTA;

SPEN = 1 - Activando este bit do registo RCSTA, a EUSART activada e o pino TX/CK automaticamente congurado como sada. Se este bit simultaneamente usado para alguma funo analgica, esta deve ser desactivada, limpando o bit correspondente no registo ANSEL.

Quando estes passos forem concluidos, e o START bit detectado, os dados so transferidos para o shift-register RSR pelo pino RX. Quando o STOP bit fr recebido, a seguinte ocorre:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

127

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Os dados so automaticamente transferidos para o RCREG, se vazio; A ag RCIF activada, e uma interrupo, se estiver habilitada pelo bit RCIE no PIE1, ocorre. De igual forma ao transmissor, a ag limpa apenas quando se l do RCREG. No esquecer que uma memria de recepo de dois bytes, o que permite receber dois caracteres simultaneamente;

Se o RCREG estiver ocupado, com os dois bytes e o shift-register detectar um STOP bit, o bit the Overow OERR vai ser activado. Neste caso, os dados que chegaram so perdidos, e o bit OERR dever ser limpo pelo software. Tal feito desactivando e activando o bit CREN. NOTA: no possivel receber novos dados, enquanto o bit OERR estiver activo;

Se o STOP bit for zero, o bit FERR do RCSTA activado, indicando erro na recepo; Para receber dados com 9 bits, necessrio activar o bit RX9 no RCSTA.

Deteco de Erros na Recepo H dois tipos de erros que o microcontrolador pode detectar automaticamente. O primeiro chamado de erro de Framing, e ocorre quando o receptor no detecta o STOP bit no tempo certo. Este erro indicado pelo bit FERR do RCSTA. Se este bit estiver activado, signica que a ltima recepo de dados pode estar incorrecta. importante lembrar:

Um erro de Framing no gera uma interrupo por si prprio; Se este bit estiver activo, os ltimos dados tem erros; Um erro de Framing, no impossibilita a recepo de dados; O bit FERR limpo, lendo os dados recebidos; O bit FERR no pode ser limpo por software. Se necessrio, pode ser limpo, desactivando o bit SPEN do RCSTA. Vai simultaneamente causar Reset de todo o sistema EUSART.

Outro tipo de erro, chamado de Overrun. A memria de receoo pode conter dois caracteres. Um erro overrun vai ser gerado se o terceiro caracter recebido. Simplesmente no h espao para outro byte, e um error inevitavel. Quando esta situao acontece, o bit OERR do RCSTA activado. As consequncias so as seguintes:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

128

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Os dados j recebidos, e armazenados na memria de recepo, podem ser normalmente lidos; Nenhum byte adicional vai ser recebido, enquanto o bit OERR no for desactivado; Este bit no directamente acessivel. Para o limpar, necessrio desactivar o bit CREN do RCSTA, ou fazendo um Reset ao mdulo EUSART, limpando o bit SPEN do TCSTA.

Recepo de dados de 9 bits Alm de receber dados de 8 bits, o sistema EUSART suporta recepo de dados com 9 bits. No lado transmissor, o nono bit est agarrado ao byte original, mesmo antes do STOP bit. No lado receptor, quando o bit RX9 do RCSTA est activo, o nono bit vai ser automaticamente escrito no bit RX9D, do mesmo registo. Quando este byte recebido, o programador deve ter em ateno em como o vai ler. O nono bit dever ser lido antes de ler os restantes 8 bits, pois se no o zer, o nono bit ser automaticamente limpo.

Recepo de dados a 9 bits

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

129

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Deteco de endereos Quando o bit ADDEN do registo RCSTA est activo, o mdulo EUSART est habilitado a receber dados de 9 bits, onde todos os dados de 8 bits sero ignorados. Embora parea uma restrio, este modo permite a comunicao srie entre vrios microcontroladores. O principio de operao simples. O Mestre envia 9 bits, que representa o endereo de um microcontrolador. Todos os microcontroladores Escravos que partilham a linha de transmisso, recebem estes dados. Todos os escravos devero ter o bit ADDEN activado, para permitir a deteco de endereo.

Depois da recepo, cada Escravo verica se esse endereo o seu. O software, depois de conrmar o endereo, dever desactivar a deteco de endereo, limpando o bit ADDEN. O dispositivo Mestre continua o envio de dados de 8 bits. Todos os dados passando pela linha de transmisso, vo ser recebidos e reconhecidos apenas pelo Escravo j correctamente endereado. Aps receber o ltimo byte, o Escravo dever activar o bit ADDEN. de maneira a poder detectar outra vez os endereos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

130

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Registo TXSTA

CSRC - Bit de seleco da origem do relgio. apenas usado no modo sncrono. 1 - modo Mestre. Clock gerado internamente pelo gerador de Baud Rate; 0 - modo Escravo. Clock gerado por uma fonte externa.

TX9 - Bit de activao de transmisso de 9 bits 1 - Transmisso a 9 bits 0 - Transmisso a 8 bits

TXEN - Bit de activao da Transmisso 1 - Transmisso activa 0 - Transmisso desligada

SYNC - Bit de seleco do modo da EUSART 1 - EUSART funciona no modo sncrono 0 - EUSART funciona no modo assncrono

SENDB - Bit de envio de caracter de break. Apenas usado em modo assncrono, e apenas no caso de descobrir o standard do barramento LIN 1 - O envio do caracter Break activado 0 - O envio do caracter Break terminou

BRGH - Bit de seleco de High Baud Rate (alta velocidade de relgio) no modo assncrono. No afecta a EUSART no modo sncrono.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

131

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

1 - EUSART funciona em alta velocidade 0 - EUSART funciona em baixa velocidade

TRMT - Bit de estado do Shift-Register de Transmisso 1 - Registo TSR est vazio 0 - Registo TSR est cheio

TX9D - Nono bit de dados transmitidos. Pode ser usado para endereo ou para bit de paridade.

Registo RCSTA

SPEN - Bit de activao da porta Srie 1 - Porta Srie activa. Os pinos RX/DT e TX/CK so automaticamente congurados como entrada e sada, respectivamente 0 - Porta Srie desactivada

RX9 - Bit de activao da Recepo de 9 bits 1 - Recepo de 9 bits 0 - Recepo de 8 bits

SREN - Bit de activao de Recepo singular. Usado apenas em modo sncrono, quando o microcontrolador funciona como Mestre 1 - Recepo singular activada 0 - Recepo singular desactivada

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

132

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

CREN - Bit de activao de Recepo contnua Modo Assncrono: 1 - Recepo contnua activada 0 - Recepo contnua desactivada Modo Sncrono 1 - Recepo contnua activada, at o bit CREN ser limpo 0 - Recepo contnua desactivada

ADDEN - Bit de activao de Deteco de Endereo 1 - Activa a deteco de endereo, com recepo a 9 bits 0 - Desactiva a deteco de endereo, e o nono bit pode ser usado como bit de paridade

FERR - Bit de erro de Framing 1 - Na recepo, erro de Framing detectado 0 - Sem erro de Framing

OERR - Bit de erro de Overrun 1 - Na recepo, erro de Overrun detectado 0 - Sem erro de Overrun

RX9D - O nono bit dos dados recebidos, pode ser usado com endereo, ou bit de paridade

BRG - Baud Rate Generator - Gerador de Relgio para a EUSART


Se se olhar atentamente para o diagrama do receptor/transmissor assncrono da EUSART, em ambos os casos, pode ver-se que o sinal de relgio do temporizador local BRG, usado para a sincronizao. A mesma fonte de relgio usada no modo sncrono.

Este temporizador consiste em dois registos de 8 bits, num total de 16 bits.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

133

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Gerador de Baud Rate da EUSART

Um nmero escrito para estes dois registos, determina o Baud Rate - Velocidade da porta Srie. Alm do mais, ambos o bit BRGH do TXSTA e o bit BRGH16 do BAUDCTL, inuenciam a frequncia de relgio.

A frmula usada para calcular o Baud Rate, dada pela tabela abaixo: Bits SYNC 0 0 0 0 1 1 BRG1G 0 0 1 1 0 1 BRGH 0 1 0 1 x x

BRG / EUSART Mode 8-bit / assncrono 8-bit / assncrono 16-bit / assncrono 16-bit / assncrono 16-bit / assncrono 16-bit / assncrono

Baud Rate Formula Fosc / [64 (n + 1)] Fosc / [16 (n + 1)] Fosc / [16 (n + 1)] Fosc / [4 (n + 1)] Fosc / [4 (n + 1)] Fosc / [4 (n + 1)]

As tabelas seguintes, contem valores que devem ser escritos no registo SPBRG, e nos bits SYNC, BRGH e BRGH16, de maneira a obter Baud Rates padronizadas.

As frmulas usadas para determinar o Baurd Rate, so:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

134

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

135

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

136

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Registo BAUDCTL

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

137

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

ABDOVF - Flag de Overow da deteco de Auto-Baud-Rate, apenas usado no modo assncrono, durante a deteco do baud rate 1 - Temporizador Auto Baud Rate chegou ao m 0 - Temporizador Auto Baud Rate no chegou ao m

RCIDL - Flag de Recepo parada, apenas usado no modo assncrono 1 - A recepo est parada 0 - O START bit foi recebido, e a recepo est em progresso.

SCKP - Bit de seleco da polaridade do Relgio Sncrono Modo Assncrono: 1 - Dados invertidos na transmisso no pino RC6/TX/CK 0 - Dados no invertidos na transmisso no pino RC6/TX/CK Modo Sncrono: 1 - Sincronizao no anco ascendente do relgio 0 - Sncronizao no anco descendente do relgio

WUE - Bit que habilita o Wake-up (acordar) pela EUSART 1 - O receptor aguarda por um anco descendente no pino RC7/RX/DT, para acordar o microcontrolador do modo Sleep 0 - O receptor funciona normalmente

ABDEN - Bit de habilitao de Deteco Automtica do Baud Rate, apenas em modo assncrono 1 - Modo de deteco automtica do baud rate est ligado. Este bit automaticamente limpo aquando da deteco do baud rate 0 - Modo de deteco automtica do baud rate est desligado

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

138

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Resumidamente:
Enviar dados pela EUSART em modo assncrono: O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL, e pelos registos SPBRGH eSPBRG; O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a ligar a porta srie; Na transmisso de 9 bits, o bit TX9 do TXSTA dever ser activado; A transmisso de dados habilitada, activando o bit TXEN do TXSTA. O bit TXIF do PIR1 automaticamente activado; Se for necessrio haver um interrupo, o bit TXIE do PIE1, e os GIE e PEIE do INTCON devero ser activados; Na transmisso de 9 bits, o valor do nono bit dever ser escrito no bit TX9D do TXSTA; A transmisso inicia quando se escreve no registo TXREG;

Receber dados pela EURSAR em modo assncrono: O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL, e pelos registos SPBRGH eSPBRG; O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a ligar a porta srie; Se for necessrio haver uma interrupo, o bit RCIE do PIE1, e os GIE e PEIE do INTCON devero ser activados; Na recepo de 9 bits, o bit RX9 do RCSTA dever ser activado; A recepo de dados dever ser habilitada, activando o bit CREN do RXSTA; O registo RCSTA dever ser lido, para tirar a informao de possiveis erros que ocorreram durante a transmissso. Na recepo a 9 bits, o nono bit estar armazenado neste registo; O byte recebido e armazenado no registo RCREG, dever ser lido.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

139

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Activar o modo de Deteco de Endereo: O baud rate dever ser ajustado, pelos bits BRGH do registo TXSTA, e BRG16 do registo BAUDCTL, e pelos registos SPBRGH e SPBRG; O bit SYNC do TXSTA dever ser limpo, e o bit SPEN do RCSTA dever ser activado, de maneira a ligar a porta srie; Se for necessrio haver uma interrupo, o bit RCIE do PIE1, e os GIE e PEIE do INTCON devero ser activados; O bit RX9 do RCSTA dever ser activado; O bit ADDEN do RCSTA dever ser activado, o que habilita que um caracter recebido, seja interpretado como endereo; A recepo de dados dever ser habilitada, activando o bit CREN do RXSTA; Imediatamente aps os 9 bits serem recebidos, o bit RCIF do PIR1 automaticamente activado. Se habilitada, uma interrupo gerada; O registo RCSTA dever ser lido, para tirar a informao de possiveis erros que ocorreram durante a transmissso. Na recepo a 9 bits, o nono bit estar armazenado neste registo; Os 8 bits recebidos e armazenados no registo RCREG, devero ser lidos. Agora deve ser feita a vericao do endereo. Se coincidirem, necessrio limpar o bit ADDEN do RCSTA, o que possibilita a continuidade da recepo em 8 bits.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

140

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Modo Sncrono da EUSART


O mdulo MSSP - Master Snchronous Serial Port, Porta Srie Sncrona Mestre, bastante til, porque ao mesmo tempo um dos mais complexos circuitos dentro do microcontrolador. Ele permite comunicaes de alta velocidade entre o microcontrolador e perifricos externos, usando algumas linhas de I/O. comum us-lo para ligar a ecrns LCD, conversores A/D, EEPROMs srie, shift-registers, entre outros.

A principal funcionalidade deste tipo de comunicaes a de ser sncrona, e ptimo para sistemas onde h um s Mestre, e um ou mais Escravos. O dispositivo Mestre tem os circuitos necessrios para a gerao do Baud Rate, e fornece o Relgio para todos os dispositivos do sistema. Os dispositivos Escravos, podem dessa maneira, eliminar o gerador de Relgio interno.

O mdulo MSSP funciona das seguintes maneiras:

Modo SPI, Serial Peripheral Interface Modo I2C, Inter-Integrated Circuit

Mdulo MSSP

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

141

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Como se pode ver na gura, um mdulo MSSP representa metade do hardware necessrio para estabelecer uma comunicao srie, enquanto que a outra metade est presente no dispositivo com que se vai trocar a informao. Apesar dos mdulos serem iguais em ambos os lados, os seus modos so essencialmente diferentes, dependendo se operam como Mestre ou Escravo:

Se o microcontrolador a ser programado, controla outros dispositivos, ento vai funcionar como Mestre. Um mdulo denido como tal, vai gerar o relgio quando necessrio, e apenas quando informao enviada/recebida.

Depende do Mestre, se a ligao estabelecida, ou no. Se o microcontrolador a ser programado, parte de um sistema perifrico, ento vai funcionar como dispositivo Escravo. Ento, ter sempre de aguardar os pedidos por parte do Mestre.

Modo SPI
O modo de SPI permite o envio/recepo simultnea, de dados de 8 bits, usando 3 linhas I/O;

SDO - Sada de dados srie - linha de transmisso; SDI - Entrada de dados srie - linha de recepo; SCK - Relgio srie - linha de sncronizao.

Em conjunto com esta linha, se o microcontrolador trocar informao com vrios perifricos, a quarta linha, SS, tambm pode ser usada. Ver gura abaixo.

SS - Seleco de Escravo - um pino adicional usado para seleco de dispositivo. Est apenas activo se o microcontrolador est em modo Escravo.

Quando opera em modo SPI, o mdulo MSSP usa um total de 4 registos:

SSPSTAT - registo de estado;

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

142

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

SSPCON - registo de controlo; SSPBUF - registo de armazenamento de dados; SSPSR - shift register (no disponivel directamente)

Os primeiros trs registos so possiveis de escrever/ler, e podem ser alterado a qualquer momento, enquanto que o quarto registo, como no est disponivel, usado para converter os dados para formato srie.

Modo SPI

Como pode ser visto na gura abaixo, o cerne do mdulo SPI consiste em, dois registos ligados aos pinos para receber, transmitir e sincronizar.

Modo SPI

O Shift Register, SSPRS, directamente ligado aos pinos do microcontrolador, e usado para transmisso de dados em formato srie. O SSPRS tem a sua entrada e sada, e desloca os dados para dentro/fora do dispositivo. Por outras palavras, cada bit que aparece na entrada (linha de recepo) simultaneamente empurra outro bit para a sada (linha de transmisso).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

143

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

O registo SSPBUF, um bloco de memria para temporariamente armazenar a informao escrita no SSPRS, at que os dados recebidos estejam prontos. Aps a recepo dos 8 bits de dados, esse byte deslocado para o SSPBUF. Esta dupla memria dos dados recebidos, SSPBUF, permite ao prximo byte ser recebido, antes de ler os dados acabados de receber. Qualquer escrita no SSPBUF durante a transmisso/recepo de dados, ignorada.

Nomeadamente, se as conguraes do modo forem esquecidas, a transferncia de dados SPI signica que apenas se escreve e l deste registo. Enquanto que o funcionamento do mdulo em si, automaticamente feito por hardware.

Resumidamente: Antes de inicializar o SPI, necessrio especicar certos pontos:

Modo Mestre, o pino SCK a sada de relgio; Modo Escravo, o pino SCK a entrada de relgio; Fase do bit de entrada, no meio ou no m do ciclo de relgio, bit SMP; Flanco do relgio, bit CKE; Baud Rate, s no modo Mestre; Modo de seleco de Escravo, no modo Escravo apenas.

Passo 1 O byte a transmitir, deve ser escrito para a memria temporria SSPBUF. Imediatamente depois, se o mdulo SPI opera em modo Mestre, o microcontrolador vai automaticamente fazer os passos 2, 3 e 4. Se o mdulo SPI opera como Escravo, o microcontrolador no vai fazer nenhum destes passos, at que o pino SCK detectar um sinal de relgio.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

144

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Passo 2 Este byte agora deslocado para o registo SSPSR, e a memria temporria SSPBUF no limpa.

Passo 3 Sincronizado com o relgio de entrada, este byte empurrado para o pino de sada, sendo o MSB primeiro, enquanto o registo simultaneamente preenchido com bits do pino de entrada. No modo Mestre, o microcontrolador gera o relgio, enquanto o Escravo usa o relgio externo SCK.

Passo 4 O registo SSPSR est preenchido, quando os 8 bits de dados forem recebidos. indicado activando os bits BF e SSPIF. O byte recebido automaticamente movido do SSPSR para o SSPBUF. Como a transferncia feita automaticamente, o programa principal normalmente executado, enquanto a transferncia est em progresso. Nesse caso, a funo do bit SSPIF gerar uma interrupo, quando a transmisso est completa.

Passo 5 Finalmente, o byte armazenado no SSPBUF est pronto a ser usado, e movido para qualquer registo disponivel.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

145

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Modo I2C
O modo I2C especialmente til quando, o microcontrolador e um circuito integrado com o qual o micro dever trocar informao, estiverem montados no mesmo sistema. Esta forma de transmisso de dados comum a outros microcontroladores, ou circuitos integrados especializados, tais como memrias, sensores de temperatura, expansores de porta, relgios em tempo-real, etc.

Similarmente ao SPI, a transferncia de dados por I2C sncrona e bidireccional. Desta vez, apenas dois pinos so usados para a transferncia de dados. Estes so o SDA, dados srie, e o SCL, relgio srie. O programador deve congurar estes pinos como entradas/sadas, atravs dos bits do TRISC.

Provavelmente no directamente perceptivel, mas observando regras particulares (protocolos), este modo possibilita que 122 dispositivos diferentes estajam simultaneamente ligados, usando apenas dois pinos I/O. Funciona da seguinte maneira; o relgio necessrio para sincronizar a operao de ambos os dispositivos, sempre gerado pelo Mestre. A frequncia de relgio mais habitual de 100KHz, mas no h limite no caso de frequncia mnima.

Quando o Mestre e Escravo esto sincronizados com o relgio, toda a troca de dados sempre iniciada pelo Mestre. Assim que o mdulo MSSP est activo, ca a aguardar uma condio de Start. Primeiro, o Mestre envia o bit de Start, depois o endereo de 7 bits do Escravo, e nalmente o bit que especica se vai ler ou escrever no Escravo. A seguir ao bit de Start, os oito bits so enviados para o registo SSPSR. Todos os Escravos partilham a linha de transmisso, e vo simultaneamente receber o primeiro byte, mas apenas um deles tem o endereo coincidente.

Congurao Mestre e Escravo


ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

146

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Depois do primeiro byte ter sido enviado, o Mestre entra em modo de recepo, e aguarda o ACK - Acknowledge (conrmao) do Escravo com o endereo coindicente. Se o Escravo envia um ACK lgico 1, a transferncia vai continuar at o Mestre enviar o bit de Stop.

Esta uma simples explicao de como dois dispositivos comunicam. Se necessrio, este microcontrolador capaz de controlar situaes mais complicadas, onde 1024 dispositivos diferentes, partilhados por diferentes Mestres, esto ligados.

Transferncia de Dados

A gura em baixo, mostra o diagrama de blocos do mdulo MSSP no modo I2C:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

147

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Diagrama de blocos do mdulo MSSP, em modo I2C

O mdulo usa estes registos, para trabalhar em I2C.

SSPCON - registo de controlo 1 SSPCON2 - registo de controlo 2 SSPSTAT - registo de estado SSPBUF - registo de memria temporria para transmisso/recepo SSPSR - registo Shift-Register (no directamente acessvel) SSPADD - registo de endereo SSPMSK - registo de mscara.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

148

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Registo SSPSTAT

SMP - Bit de amostragem Modo SPI Mestre, este bit indica a fase dos dados 1 - O estado lgico lido no m do ciclo de relgio, 0 - O estado lgico lido no meio do ciclo de relgio.

Modo SPI Escravo. Este bit deve estar limpo, quando se usa SPI Escravo Modo I2C, Mestre ou Escravo 1 - Slew Rate - Controlo de interferncias desligado, para velocidades de 100KHz; 0 - Slew Rate - Controlo de interferncias ligado, para velocidades de 400KHz ou maiores.

CKE - Bit de seleco do anco de relgio CKP=0: 1 - Os dados so transmitidos no anco ascendente; 0 - Os dados so transmitidos no anco descendente. CKP=1: 1 - Os dados so transmitidos no anco descendente. 0 - Os dados so transmitidos no anco ascendente;

D/A - bit de Dados/Endereo, usado no modo I2C apenas 1 - Indica que o ltimo byte recebido ou transmitido, foi de dados; 0 - Indica que o ltimo byte recebido ou transmitido, foi de endereo.

P - O bit de Stop, usado no modo I2C apenas 1 - O Stop bit foi detectado;

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

149

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

0 - O Stop bit no foi detectado;

S - Bit de Start, usado no modo I2C apenas 1 - O bit de Start foi detectado; 0 - O bit de Start no foi detectado;

R/W - Bit de Escrita/Leitura, usado em I2C apenas. Este bit guarda a informao R/W a seguir ao endereo. S vlido desde a coincidncia de endereo, at ao prximo bit de Start, Stop ou no-ACK. I2C Escravo: 1 - Ler dados; 0 - Escrever dados. I2C Mestre: 1 - Transmisso em progresso; 0 - Transmisso parada.

UA - Bit de refrescamento do endereo. usado no modo de 10 bits de I2C. 1 - Indica que necessrio fazer o refrescamento do endereo no registo SSPADD; 0 - O endereo no SSPADD est correcto, e no precisa de ser refrescado.

BF - Bit de estado do Buer - memria intermdia temporria Durante a recepo em SPI ou I2C: 1 - Recepo completa. O SSPBUF est completo; 0 - Recepo no completa. O SSPBUF est vazio. Durante a transmisso em SPI ou I2C: 1 - Transmisso de dados em andamento (no inclui os bits ACK e STOP); 0 - Transmisso de dados completa (no inclui os bits ACK e STOP).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

150

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Registo SSPCON

WCOL - bit de deteco de Coliso de Escrita 1 - Coliso detectada. Uma escrita para o SSPBUF foi tentada, enquanto que a condio I2C no era vlida para uma transmisso se iniciar; 0 - No houve coliso.

SSPOV - Bit indicador de Overow de Recepo 1 - Um novo byte foi recebido, enquanto o SSPSR continha o byte anterior. Como no h espao para a recepo dos dados, um destes dois bytes deve ser limpo. Neste caso, o byte dentro do SSPSR perdido; 0 - Dados srie correctamente recebidos.

SSPEN - Bit que habilita a porta srie sncrona, e inicializa o mdulo MSSP: No modo SPI: 1 - Liga mdulo MSSP e congura os pinos SCK, SDO, SDI e SS, para a porta srie; 0 - Desliga mdulo MSSP e congura estes pinos como portas I/O. No modo I2C: 1 - Liga mdulo MSSP e congura os pinos SDA e SCL, para a porta srie; 0 - Desliga mdulo MSSP e congura estes pinos como portas I/O.

CKP - Bit de seleco da polaridade do Relgio, no usado em I2C Mestre No modo SPI: 1 - Modo de descanso para o relgio, nvel lgico alto; 0 - Modo de descanso para o relgio, nvel lgico baixo. No modo I2C Escravo:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

151

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

1 - Habilita o relgio; 0 - Mantm o relgio a estado lgico 0, para dar mais tempo estabilizao dos dados.

SSPM3-SSPM0 - Bits de seleco da porta srie Sncrona. O modo denido por estes trs bits: SSPM3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 SSPM2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 SSPM1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 SSPM0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Mode SPI Mestre, clock = Fosc/4 SPI Mestre, clock = Fosc/16 SPI Mestre, clock = Fosc/64 SPI Mestre, clock = (sada TMR)/2 SPI Escravo, pino SS de controlo ligado SPI Escravo, pino SS de controlo desligado, SS pode ser usado como pino I/O IC Escravo, endereo de 7-bit usado IC Escravo, endereo de 10-bit usado IC Mestre, clock = Fosc / [4(SSPAD+1)] Mscara usada no modo IC Escravo No usado Modo controlado IC Mestre No usado No usado IC Escravo, endereo de 7-bit usado, bits START e STOP activam a interrupo IC Escravo, endereo de 10-bit usado, bits START e STOP activam a interrupo

Registo SSPCON2

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

152

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

GCEN - Bit de habilitao de Chamada Geral No modo I2C Escravo apenas: 1 - Habilita uma interrupo, quando uma chamada geral de endereo 0x000 recebida no SSPSR; 0 - Chamada geral de endereo desligado.

ACKSTAT - Bit de estado de ACKnowledge - conrmao No modo I2C Mestre transmisso apenas: 1 - ACK no foi recebido do Escravo; 0 - ACK foi recebido do Escravo.

ACKDT - Bit de ACKnowledge No modo I2C Mestre recepo apenas: 1 - No houve ACK; 0 - Houve ACK.

ACKEN - Bit de habilitao de ACKnowledge No modo I2C Mestre recepo apenas: 1 - Inicia condio ACK nos pinos SDA e SCL, e transmite bit ACKDT. automaticamente limpo por hardware; 0 - Condio ACK no iniciada.

RCEN - Bit habilitao da Recepo No modo I2C Mestre apenas: 1 - Possibilita a recepo no modo I2C; 0 - Recepo desligada.

PEN - Bit de habilitao da condio de STOP No modo I2C Mestre apenas: 1 - Inicia uma condio de STOP nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo por hardware; 0 - Condio de STOP no iniciada.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

153

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

RSEN - Bit de habilitao da condio de Repetio de START No modo I2C Mestre apenas: 1 - Inicia uma condio de START nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo por hardware; 0 - A repetio de START no iniciada.

SEN - Bit de habilitao de condio de START ligada/prolongada (Enabled/Stretch) No modo I2C Mestre apenas: 1 - Inicia uma condio de START nos pinos SDA e SCL. Seguidamente, este bit automaticamente limpo por hardware; 0 - A condio de START no iniciada.

I2C em modo Mestre


O caso mais comum quando o microcontrolador funciona como Mestre, e os perifricos como Escravos. Esta a razo de apenas se falar aqui deste modo. Tambm se vai considerar que o endereo de 7 bits, e o sistema electrnico s tem um microcontrolador, ou um s mestre.

De maneira a ligar o mdulo MSSP neste modo, necessrio fazer o seguinte:

Congurar o Baud Rate, registo SSPADD; Congurar o Slew Rate - Controlo de interferncias, bit SMP no registo SSPSTAT; Seleccionar o modo, registo SSPCON.

Depois destes passo feitos, e do mdulo ter sido ligado pelo bit SSPEN do SSPCON, dever esperar-se pela electrnica interna indicar que est pronta para transmisso: bit SSPIF do registo PIR1 activado.

Este bit dever ser limpo por software, e seguidamente o microcontrolador est pronto a iniciar uma comunicao com os perifricos.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

154

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

I2C em modo Mestre

Transmisso de dados no modo I2C Mestre Cada condio de relgio no pino SDA, iniciado com estado lgico 0, que aparece aps ligar o bit SEN do SSPCON2. Mesmo depois de ligar, o microcontrolador aguarda um momento antes de iniciar a comunicao. a chamada Condio de Start, durante a qual h estabilizao interna da electrnica. Se todas as condies satisfazerem, o bit SSPIF do PIR1 activado, e a transferncia de dados iniciada, assim que o registo SSPBUF for carregado com um byte. Como s um mximo de 112 dispositivos podem partilhar a mesma linha de transmisso, o primeiro byte enviado contm o endereo de apenas um Escravo. Cada componente tem o seu endereo escrito no prprio datasheet. O oitavo bit deste primeiro byte, especica se o Mestre vai enviar ou receber dados. Neste caso vai-se receber informao, e o oitavo bit dever ser lgico 0.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

155

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Quando o endereo coincide, o microcontrolador tem de esperar pelo bit de ACK. O Escravo conrma o endereo, limpando o bit ACKSTAT do SSPCON2. Se houver coincidncia de endereo, todos os bytes sero enviados da mesma forma.

A transmisso de dados termina activando o bit SEN do SSPCON2. A condio de STOP ocorre, o que possibilita o pino SDA a receber a condio: Start - Endereo - ACK - Dados ACK ..... Dados - ACK - Stop.

Recepo de dados no modo I2C Mestre A preparao para a recepo de dados, similar de transmisso de dados, com a excepo de que, o ltimo bit do byte de endereo, lgico 1. Especica que o Mestre espera receber informao do Escravo endereado. O seguinte vai ocorrer:

Depois da preparao interna terminar e do bit START ser activado, o Escravo d incio ao envio de um byte de cada vez. Estes bytes so armazenados no registo SSPSR. Cada byte carregado para o SSPBUF, de onde pode ser lido. Ao ler este registo, o bit ACK automaticamente enviado, signicando que o Mestre est pronto para receber novo byte.

No nal, a recepo de dados termina activando o bit STOP:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

156

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Recepo de dados no modo I2C Mestre

Start - Endereo - ACK - Dados - ACK .... Dados - ACK - Stop.

desta maneira que o ACK enviado ao Escravo.

Gerador de Baud Rate De maneira a sincronizar as comunicaes, todos os eventos no pino SDA devem ser sncronizados com o relgio gerado no Mestre. Este relgio gerado por um simples oscilador, em que a frequncia depende do oscilador principal do microcontrolador, do valor escrito no registo SSPADD e do modo corrente de SPI e I2C.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

157

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

A frequncia de relgio dos modos descritos neste manual, dependem do cristal de quartzo e do registo SSPADD. A frmula usada para a calcular est na gura abaixo:

Gerador de Baud Rate

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

158

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Quando o microcontrolador comunica com os perifricos, pode acontecer que a transferncia de dados falha por alguma razo. Neste caso, recomendada a vericao do estado de alguns bit, que podem ajudar a claricar o problema. Na prtica, o estado destes bits vericado atravs da execuo de uma subrotina, depois da transmisso/recepo de um byte.

WCOL - SPCON,7 - Se se tentar escrever um novo byte para o SSPBUF, enquanto estiver em progresso uma transmisso/recepo, o bit WCOL vai ser activado e o contedo do SSPBUF mantm-se inalterado. A escrita no ocorre e, depois disto, o WCOL dever ser limpo por software.

BF - SSPSTAT,0 - No modo de transmisso, este bit activado quando o CPU escreve para o SSPBUF, e mantm-se activo enquanto o byte deslocado para fora do registo SSPSR. No modo de recepo, este bit activado quando um byte carregado para o SSPBUF. limpo quando o SSPBUF lido.

SSPOC - SSPCON,6 - No modo de recepo, este bit activado quando um novo byte recebido pelo SSPSR, quando o byte anterior ainda no foi lido do SSPBUF.

Pinos SDA e SCL - Quando o mdulo SSP est activo, estes pinos transformam-se em sadas Open Drain (Dreno Comum). Signica que, estes pinos, devem ser ligados a resistncias de Pull-Up (entre o pino e o terminal positivo da alimentao).

Resistncias de sada para os Drenos Abertos dos Transistores internos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

159

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulos de Comunicao Srie

Resumidamente: De maneira a estabelecer uma comunicao srie no modo I2C, o seguinte tem que ser tomado em conta:

Ajustar o modo e enviar o endereo:

O valor que determina o Baud Rate, deve ser escrito para o registo SSPADD Slew Rate - Controlo de interferncias, deve ser desligado, limpando o bit SMP do registo SSPSTAT De modo a escolher modo Mestre, o valor binrio 1000 dever ser escrito nos bits SSPM3-SSPM0 do registo SSPCON

O bit SEN do registo SSPCON2 dever ser activado - Condio START O bit SSPIF automaticamente activado no m do START, quando o mdulo est pronto a funcionar. Dever ser limpo por software

O endereo do Escravo dever ser escrito para o SSPBUF Quando o byte enviado, o bit SSPIF automaticamente activado quando o ACK recebido do Escravo.

Transmisso de dados:

Os dados a enviar, devero ser carregados no SSPBUF Quando o byte enviado, o bit SSPIF automaticamente activado quando o ACK recebido do Escravo De maneira a informar o Escravo que a transmisso est completa, uma condio de STOP dever ser iniciada, activando o bit PEN no SSCON.

Recepo de dados:

De maneira a ligar a recepo de dados, o bit RSEN do SSPCON2 dever ser activado O bit SSPIF assinala a recepo de um byte. Quando o byte lido do SSPBUF, o bit ACKEN do SSPCON2 dever ser activado, de maneira a enviar o bit de ACK

De maneira a informar o Escravo que a transmisso est completa, uma condio de STOP dever ser iniciada, activando o bit PEN no SSCON.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

160

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Mdulos Analgicos
Alm de uma variedade de linhas digitais de I/O, este PIC tem ainda vrias entradas analgicas. Estas, possibilitam ao microcontrolador reconhecer, no s os estados lgicos 0 e 1, bem como fazer a medio precisa da sua tenso e converte-la para um valor digital. Todo o procedimento acontece no mdulo conversor A/D, que tem as seguintes caractersticas:

O conversor gera um resultado binrio de 10 bits, usando o mtodo de aproximao sucessiva (SAR), e armazena o resultado nos registos ADRESL e ADRESH;

Disponibiliza 14 entradas analgicas; O conversor possibilita a converso de um sinal analgico, para um nmero binrio de 10 bits; Escolhendo tenses diferentes para o Vref- e Vref+, a resoluo mnima, ou qualidade de converso, pode ser ajustada necessidade do projecto.

Registos e Modo do ADC - Conversor A/D


Apesar do uso de um ADC parecer deveras complicado, na prtica bastante simples. Mais simples do que usar temporizadores e comunicaes srie.

O mdulo est sob o controlo dos bits de quatro registos:

ADRESH - Byte alto do resultado da converso ADRESL - Byte baixo do resultado da converso ADCON0 - Registo de controlo 0 ADCON1 - Registo de controlo 1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

161

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registos e modo do Conversor A/D

Registos ADRESH e ADRESL


Quando se converte um sinal analgico, o resultado dos 10 bits vai ser guardado em dois registos. De maneira a lidar com este valor mais facilmente, o mesmo pode aparecer em dois formatos: justicado esquerda, ou justicado direita. O bit ADFM do registo ADCON1 determina o formato de converso. No caso de o ADC no ser usado, estes registos podem ser usado para quaisquer ns.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

162

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registos ADRESL e ADRESH

Requisitos da Aquisio A/D


Para o ADC ter a exactido especicada, necessrio que haja um certo atraso entre a escolha da entrada analgica, e a medio. Este atraso chama-se Tempo de Aquisio, e depende apenas da impedncia da fonte de sinal. H uma equao para o clculo exacto deste atraso, que no pior dos casos de 20 microsegundos. Momentaneamente, aps escolher a entrada analgica, e antes de iniciar a converso, necessrio esperar 20 microsegundos para que a converso seja o mais exacta possvel.

Periodo do ADC
O tempo necessrio para completar a converso de um-bit, denido como TAD. O TAD necessrio de pelo menos 1.6 microsegundos. Uma converso completa de 10 bits demora cerca de 11 TAD. No entanto, como ambos o relgio e a fonte de converso so congurados por software, uma das combinaes disponiveis dos bits ADCS1 e ADCS0, dever ser escolhida antes da medio analgica. Estes bits esto no registo ADCON0.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

163

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Origem Relgio ADC Fosc/2 Fosc/8 Fosc/32 Frc

ADCS1 0 0 1 1

ADCS0 0 1 0 1

Frequncia do micro (Fosc) 20MHz 100 nS 400 nS 1.6 uS 2 - 6 uS 8MHz 250 nS 1 uS 4 uS 2 - 6 uS 4MHz 500 nS 2 uS 8 uS 2 - 6 uS 1MHz 2 uS 8 uS 32 uS 2 - 6 uS

Perodo de Relgio do ADC

Qualquer mudana na frequncia de relgio do sistema, vai afectar o relgio do ADC, o que poder afectar o resultado do ADC. Os valores nas clulas com fundo cinza, esto fora do recomendando.

Como usar o Conversor A/D


De maneira a possibilitar o ADC a funcionar sem problemas, bem como a evitar resultados inesperados, necessrio considerar o seguinte:

O ADC no distingue entre tenses analgicas ou digitais. De maneira a evitar erros na medio, ou estragos no chip, os pinos devem ser congurados como entradas analgicas, antes de iniciar a converso. Os bits usados para este m, esto nos registos TRIS e ANSEL.

Quando a porta com entradas analgicas CH0-CH13 lida, os bits correspondentes vo estar a lgico 0 A medio de tenso no conversor, baseada na comparao da tenso de entrada, com uma escala interna que tem 1024 posies. O nvel mais baixo da escala o Vref-, e o nvel mais alto o Vref+. A gura abaixo mostra os nveis possiveis para cada um deles.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

164

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Como usar o ADC

Registo ADCON0

ADCS1-ADCS0 - Bits de seleco do Relgio de Converso do ADC, usado para sincronizao interna do ADC. Tambm afecta a durao da converso. ADCS1 0 0 1 1 ADCS2 0 1 0 1 Clock Fosc/2 Fosc/8 Fosc/32 RC *

* Relgio gerado por oscilador interno no microcontrolador

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

165

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

CHS3-CHS0 - Bits de seleco do Canal analgico, escolhem qual o canal analgico a converter. CHS3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 CHS2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 CHS1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 CHS0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Channel Pin 0 RA0/AN0 1 RA1/AN1 2 RA2/AN2 3 RA3/AN3 4 RA5/AN4 5 RE0/AN5 6 RE1/AN6 7 RE2/AN7 8 RB2/AN8 9 RB3/AN9 10 RB1/AN10 11 RB4/AN11 12 RB0/AN12 13 RB5/AN13 CVref Vref = 0.6V

Bits de escolha do Canal Analgico

GO/DONE - Bit de Estado da Converso A/D 1 - Converso A/D est em curso 0 - Converso A/D est completa. Este bit automaticamente limpo por hardware, quando a converso A/D termina.

ADON - Bit que liga/desliga o Conversor A/D 1 - Conversor A/D ligado 0 - Conversor A/D desligado

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

166

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registo ADCON1

ADFM - Bit de seleco do Formato do Resultado A/D 1 - Resultado justicado direita. Os seis bits mais signicantes do ADRESH no so usados 0 - Resultado justicado esquerda. Os seis bits menos signicantes do ADRESL no so usados

VCFG1 - Bit da Tenso de Referncia, escolhe a fonte de tenso para o pino Vref1 - Tenso externa aplicada no pino Vref0 - Tenso de alimentao interna, Vss, usada como Vref-

VCFG0 - Bit da Tenso de Referncia, escolhe a fonte de tenso para o pino Vref+ 1 - Tenso externa aplicada no pino Vref+ 0 - Tenso de alimentao interna, Vdd, usada como Vref+

Resumidamente:
De forma a medir uma tenso com o ADC, o seguinte dever ser feito:

Congurar a porta escrever lgico 1 no bit correspondente do registo TRIS, para congurar como entrada escrever lgico 1 no bit correspondente do registo ANSEL, para congurar como entrada analgica

Congurar mdulo ADC Congurar a referncia de tenso no ADCON1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

167

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Escolher o relgio de converso para o ADC, no ADCON0 Escolher um dos canais de entrada CH0-CH13, no ADCON0 Escolher o formato dos dados, pelo bit ADFM no ADCON1 Ligar o ADC, activando o bit ADON no ADCON0

Congurar a interrupo ADC (opcional) Limpar o bit ADIF Activar os bits ADIE, PEIE e GIE

Aguardar pelo tempo de aquisio, 20 microsegundos

Iniciar a converso, activando o bit GO/DONE no ADCON0

Aguardar para que a converso A/D termine necessrio vericar por software, se o bit GO/DONE j est limpo, ou esperar pela interrupo do ADC

Ler os resultados do ADC, nos registos ADRESL e ADRESH.

Comparador Analgico
Em conjunto com o ADC, existe outro mdulo que s recentemente comeou a ser introduzido dentro de microcontroladores. Como natural encontrar-se estes componenetes em quaisquer circuitos electrnicos, dois comparadores de alta qualidade, com electrnica adicional, esto integrados no microcontrolador, e ligados aos seus pinos.

Como funciona o comparador? Basicamente, o comparador analgico um amplicador que compara a magnitude de tenses s suas duas entradas. Observando as suas funcionalidades fsicas, tem duas entradas e uma sada. Dependendo de qual entrada tem uma tenso maior (valor analgico), um sinal lgico 0 ou 1 (valor digital) ir estar na sua sada:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

168

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Comparador Analgico

Quando a tenso no Vin- maior que a tenso em Vin+, a sada do comparador est ao lgico 0; Quando a tenso no Vin+ maior que a tenso em Vin-, a sada do comparador est ao lgico 1.

Este microcontrolador tem dois destes comparadores, em que as entradas esto ligadas aos pinos I/O RA0RA3, e onde as sadas esto ligadas aos pinos RA4 e RA5. Tambm est disponivel um referencial de tenso interno, dentro do microcontrolador.

Os comparadores so controlados pelos bits dos seguintes registos:

CM1CON0 controla o comparador C1; CM2CON0 controla o comparador C2; CM2CON1 controla o comparador C2.

Fonte de Tenso de Referncia interna


Para gerar esta tenso de referncia, fontes externas ou interna podem ser usadas. Aps escolher a fonte da tenso, o Vref derivado desta, por intermdio de uma rede por escada, baseada em 16 resistncia que formam um divisor de tenso. A fonte de tenso escolhida para ambas as pontas deste divisor, pelo bit VRSS do registo VRCON.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

169

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

A tenso a tirar do divisor de tenso resistivo, escolhida pelos bits VR0-VR3, e usada como tenso de referncia. Ver gura abaixo.

Mdulo Fonte de Tenso de Referncia

A referncia de tenso do comparador tem duas gamas, com 16 nveis em cada. A escolha da gama controlada pelo bit VRR do registo VRCON. E a tenso de referncia pode ser disponibilizada na sada do pino RA2/ AN2.

Esta operao realizada pelo registo VRCON.

Comparadores e funcionamento com Interrupes


O bit ag CMIF do registo PIR, activada a cada mudana de estado lgico da sada do comparador. As mesmas mudanas tambm podem gerar uma interrupo, se os seguintes bits estiverem activos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

170

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Bit CMIE do registo PIE Bit PEIE do registo INTCON Bit GIE do registo INTCON

Se a interrupo estiver habilitada, qualquer mudana na sada do comparador, vai acordar o microcontrolador do modo de Sleep, se estiver nesse modo.

Registo CM1CON0

Os bits deste registo, so os que controlam o Comparador C1. Afectam principalmente a congurao das entradas. Para entender melhor, observar a gura abaixo, que mostra apenas uma parte da electrnica afectada pelos bits deste registo.

Diagrama interno do Comparador C1


ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

171

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

C1ON - Bit que activa o Comparador C1 1 - Comparador C1 est ligado 0 - Comparador C1 est desligado

C1OUT - Este o bit de sada do comparador C1 Se C1POL=1 (sada do comparador invertida) 1 - A tenso analgica em C1Vin+ menor que a tenso em C1Vin0 - A tenso analgica em C1Vin+ maior que a tenso em C1VinSe C1POL=0 (sada do comparador no-invertida) 1 - A tenso analgica em C1Vin+ maior que a tenso em C1Vin0 - A tenso analgica em C1Vin+ menor que a tenso em C1Vin-

C1OE - Bit de activao da sada do Comparador C1 1 - A sada do comparador C1 est ligada ao pino C1OUT (obrigatoriedade: C1ON=1 e o bit TRIS=0) 0 - A sada do comparador C1 interna

C1POL - Bit de seleco da Polaridade da sada do Comparador C1, permite a inverso do estado da sada 1 - A sada do comparador C1 invertida 0 - A sada do comparador C1 no-invertida

C1R - Bit de seleco da Referncia do Comparador C1 1 - A entrada no-inversora C1Vin+ ligada tenso de referncia C1Vref 0 - A entrada no-inversora C1Vin+ ligada ao pino C1IN+

C1CH1 e C1CH0 - Bits de seleco de canais do Comparador C1 C1CH1 0 0 1 1 C1CH0 0 1 0 1 Entrada do Comparador C1VinEntrada C1Vin- est ligada ao pino C12IN0Entrada C1Vin- est ligada ao pino C12IN1Entrada C1Vin- est ligada ao pino C12IN2Entrada C1Vin- est ligada ao pino C12IN3-

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

172

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registo CM2CON0

Os bits deste registo, so os que controlam o Comparador C2. Similarmente ao caso anterior, a gura abaixo mostra um esquema simplicado do circuito afectado por estes bits.

Diagrama interno do Comparador C2

C2ON - Bit que activa o Comparador C2 1 - Comparador C2 est ligado 0 - Comparador C2 est desligado

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

173

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

C2OUT - Este o bit de sada do comparador C2 Se C2POL=1 (sada do comparador invertida) 1 - A tenso analgica em C2Vin+ menor que a tenso em C2Vin0 - A tenso analgica em C2Vin+ maior que a tenso em C2VinSe C2POL=0 (sada do comparador no-invertida) 1 - A tenso analgica em C2Vin+ maior que a tenso em C2Vin0 - A tenso analgica em C2Vin+ menor que a tenso em C2Vin-

C2OE - Bit de activao da sada do Comparador C2 1 - A sada do comparador C2 est ligada ao pino C2OUT (obrigatoriedade: C2ON=1 e o bit TRIS=0) 0 - A sada do comparador C2 interna

C2POL - Bit de seleco da Polaridade da sada do Comparador C2, permite a inverso do estado da sada 1 - A sada do comparador C2 invertida 0 - A sada do comparador C2 no-invertida

C2R - Bit de seleco da Referncia do Comparador C2 1 - A entrada no-inversora C2Vin+ ligada tenso de referncia C2Vref 0 - A entrada no-inversora C2Vin+ ligada ao pino C2IN+

C2CH1 e C2CH0 - Bits de seleco de canais do Comparador C2 C2CH1 0 0 1 1 C2CH0 0 1 0 1 Entrada do Comparador C2VinEntrada C2Vin- est ligada ao pino C12IN0Entrada C2Vin- est ligada ao pino C12IN1Entrada C2Vin- est ligada ao pino C12IN2Entrada C2Vin- est ligada ao pino C12IN3-

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

174

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registo CM2CON1

MC1OUT - Cpia do bit C1OUT

MC2OUT - Cpia do bit C2OUT

C1RSEL - Bit de seleco da Referncia do Comparador C1 1 - A tenso de referncia CVref programavel, usada como referncia para Comparador C1 0 - A tenso de referncia xa 0.6V, usada como referncia para Comparador C1

C2RSEL - Bit de seleco da Referncia do Comparador C2 1 - A tenso de referncia CVref programavel, usada como referncia para Comparador C2 0 - A tenso de referncia xa 0.6V, usada como referncia para Comparador C2

T1GSS - Bit de seleco da Gate do Temporizador TMR1 1 - A gate do TMR1 T1G 0 - A gate do TMR1 o comparador SYNCC2OUT

C2SYNC - Bit de sincronizao da sada do Comparador C2 1 - A sada do comparador C2 sincronizada no anco descendente do relgio do TMR1 0 - A sada do comparador C2 assncrona

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

175

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Registo VRCON

VREN - Bit de habilitao da tenso de referncia do Comparador C1 1 - A tenso de referncia CVref est ligada 0 - A tenso de referncia CVref est desligada

VROE - Bit de habilitao da tenso de referncia do Comparador C2 1 - A tenso de referncia CVref est ligada ao pino 0 - A tenso de referncia CVref no est ligada ao pino

VRR - Bit de seleco da gama da Tenso de Referncia CVref 1 - A tenso de referncia est seleccionada para a gama baixa 0 - A tenso de referncia est seleccionada para a gama alta

VRSS - Bit de seleco da gama Vref do Comparador 1 - A tenso de referncia est na gama de Vref+ a Vref0 - A tenso de referncia est na gama de Vdd a Vss (tenso de alimentao)

VR3-VR0 - Seleco dos valores CVref para Tenso de Referncia Se VRR = 1 (gama baixa), a tenso de referncia calcula-se pela frmula: CVref = ([VR3:VR0]/24)Vdd Se VRR = 0 (gama alta), a tenso de referncia calcula-se pela frmula: CVref = Vdd/4 + ([VR3:VR0]/ 32)Vdd

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

176

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Mdulo Analgico

Em resumo :
De forma a convenientemente usar os Comparadores internos, necessrio o seguinte:

1 - Congurar o mdulo: De modo a escolher o modo apropriado, os bits dos registos CM1CON0 e CM2CON0 devem ser congurados. A interrupo de ser desligada, quando da mudana de modos.

2 - Congurar a tenso de referncia interna Vref (se usada). No registo VRCON necessrio: Escolher uma das duas gamas de tenso, pelo bit VRR Congurar a tenso de referncia Vref, pelos bits VR3-VR0 Activar o bit VROE se necessrio Activar a tenso de referncia Vref, activando o bit VREN

Frmulas usadas para calcular a tenso de referncia:

VRR = 1 (gama baixa) CVref = ([VR3:VR0]/24)VLADDER

VRR = 0 (gama alta) CVref = (VLADDER/4) + ([VR3:VR0]VLADDER/32)

Vladder = Vdd ou ([Vref+] - [Vref-]) ou Vref+

3 - O arranque: Activar interrupo, activando os bits CMIE (registo PIE), PEIE e GIE (no registo INTCON) Ler os bits C1OUT e C2OUT do registo CMCON Ler a Flag CMIF do registo PIR. Depois de activada, dever ser limpa por software.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

177

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Outros circuitos internos


Oscilador, EEPROM e Reset
Como se pode ver pela gura abaixo, o relgio pode ser gerado por um de dois osciladores internos:

Dois oscliadores internos

Um Oscilador Externo instalado na proximidade do microcontrolador, e ligado aos pinos OSC1 e OSC2. chamado de externo, porque consiste em electrnica externa que gera o sinal de relgio e a estabilizao de frequncia, tal como um cristal de quartzo, ressoador cermico ou resistncia-condensador.

O modo do oscilador escolhido por bits que so enviados durante a programao fsica, numa chamada Palavra de Congurao, ou Fusveis.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

178

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

O oscilador interno, consiste em dois osciladores internos separados:

O HFINTOSC um oscilador interno de alta-frequncia, que funciona a 8MHz. O microcontrolador pode usar a fonte de relgio a essa velocidade, ou dividi-la com um divisor.

O LFINTOSC um oscilador interno de baixa-frequncia, que funciona a 31KHz. O seu relgio usado para o Watch-dog e temporizadores Power-up, mas pode tambm ser usado como fonte de relgio para todo o microcontrolador.

O relgio do sistema pode ser escolhido entre externo e interno, atravs do bit SCS - System Clock Select, do registo OSCCON.

Registo OSCCON
O registo OSCCON controla o relgio de sistema, e as opes de seleco da frequncia. Contm os seguintes bit:

Bits de seleco de frequncia, IRCF2-IRCF0 Bits de estado da frequncia, HTS e LTS Bits de controlo do relgio do sistema, OSTA e SCS

IRCF2-IRCF0 - Bits de seleco da Frequncia do Oscilador Interno. A combinao destes bits determina a taxa de diviso. A frequncia de relgio do oscilador interno tambm determinada desta forma.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

179

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

IRCF2 1 1 1 1 0 0 0 0

IRCF1 1 1 0 0 1 1 0 0

IRCF0 1 0 1 0 1 0 1 0

Frequency 8 MHz 4 MHz 2 MHz 1 MHz 500 kHz 250 kHz 125 kHz 31 kHz

OSC. HFINTOSC HFINTOSC HFINTOSC HFINTOSC HFINTOSC HFINTOSC HFINTOSC LFINTOSC

OSTS - Bits de estado do Start-up Time-out do Oscilador. Indica que fonte de relgio est, no momento, em uso. apenas de leitura. 1 - Oscilador externo em uso 0 - Um dos osciladores internos est em uso (HFINTOSC ou LFINTOSC)

HTS - bit de estado do HFINTOSC (125KHz - 8MHz). Indica se o oscilador de alta-frequncia est a funcionar com estabilidade 1 - HFINTOSC est estavel 0 - HFINTOSC est instavel

LTS - bit de estado do LFINTOSC (31KHz). Indica se o oscilador de baixa-frequncia est a funcionar com estabilidade 1 - LFINTOSC est estavel 0 - LFINTOSC est instavel

SCS - Bit de seleco do Relgio do Sistema. Determina qual o oscilador a usar como fonte de relgio 1 - O oscilador interno usado como fonte de relgio do sistema 0 - O oscilador externo usado como fonte de relgio do sistema

O modo do oscilador escolhido por bits que so enviados durante a programao fsica, numa chamada Palavra de Congurao, ou Fusveis.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

180

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Modos de Relgio Externo


De maneira a habilitar o oscilador externo a funcionar a diferentes velocidades, e a usar diferentes componentes para a estabilizao da frequncia, este pode ser congurado por um de vrios modos.

A seleco do modo pode ser incluida junto com o software, no momento da escrita, ou ento pode ser ajustada no software de programao no PC.

Durante a programao, os bytes da Palavra de Congurao - Fusiveis, so escritos na memria ROM do microcontrolador, e guardados em registos especiais, que no esto disponiveis para o o programador. com base nestes bits, que o microcontrolador sabe o que fazer.

Congurao dos Fusiveis do PIC

Modo EC - Oscilador Externo


O modo de relgio externo, EC, usa o relgio do sistema congurado para oscilador externo. A frequncia deste relgio ilimitada (0-20MHz).

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

181

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Este modo tem as seguintes vantagens:

A fonte de relgio externo ligada ao pino OSC1, e o pino OSC2 est disponivel para I/O geral possivel sincronizar o funcionamento do microcontrolador, com o resto da electrnica Neste modo, o microcontrolador arranca o funcionamento assim que o sistema energizado Se se parar o relgio externo temporariamente, o microcontrolador congela o funcionamento, deixando todos os dados intactos. Assim que se restabelecer o relgio, o microcontrolador resume o funcionamento, do ponto de onde parou, como se nada tivesse acontecido

Oscilador Externo em modo EC

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

182

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Modo LP, XT ou HS - Oscilador Externo

Dois tipos diferentes de cristais de quartzo

Os modos LP, XT e HS, suportam o uso do oscilador interno, para congurar a fonte de relgio. A frequncia desta fonte determinada por cristais de quartzo, ou ressoadores cermicos, ligados aos pinos OSC1 e OSC2.

Dependendo do tipo de cristal usado, escolher um dos seguintes modos:

Modo LP (Low Power - Baixa Potncia) - usado apenas para cristais de quartzo de baixa-frequncia. Este modo foi desenhado para acolher cristais de 32.768KHz, normalmente usados para relgios de quartzo. So simples de reconhecer, pela sua forma cilndrica, e o consumo de corrente a mais baixa de todos os modos.

Modo XT - usado para cristais de quartzo de frequncias at os 8MHz. O consumo de corrente mediano.

Modo HS (High Speed - Alta Velocidade) - usado para cristais quartzo de frequncias acima dos 8MHz. O consumo de corrente o mais elevado.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

183

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Esquema elctrico do Oscilador Externo, e de alguns componentes adicionais

Ressoador Cermico no modo XT ou HS

Ressoador cermico

Os ressoador cermicos tem caractersticas bastante similares aos cristais de quartzo. Por isso so ligados da mesma maneira. Mas tem a vantagem de serem muito menos onerosos, no tendo to boa estabilidade de frequncia como os cristais. So usados para frequncias de relgio entre os 100KHz e os 20MHz.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

184

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Modo RC e RCIO - Oscilador Externo


H certamente muitas vantagens em usar elementos para estabilizao de frequncia. Mas, por vezes, so perfeitamente desnecessrios. suciente que o oscilador funcione a uma frequncia no denida, e a soluo mais simples e menos onerosa, usar uma resistncia-condensador para fazer o oscilador funcionar. H dois modos:

Modo RC: Neste modo, o circuito RC ligado ao pino OSC1, como se mostra na gura. O pino OSC2 tem na sua sada, a frequncia do oscilador RC, dividido por 4. Este sinal pode ser usado para calibrao, sincronizao ou outros.

Modo RCIO:

Similar ao anterior, com a diferena de que o pino OSC2 usado como um I/O geral

Em ambos os casos, recomendado usar componentes como mostram nas guras. A frequncia deste oscilador calculada pela frmula f = 1 / T , onde:

f = Frequncia [Hertz] T = R*C = constante de tempo [segundos] R = Resistncia [Ohm] C = Capacidade [Farad]

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

185

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Modos de Relgio Interno


O oscilador interno consiste em dois osciladores separados, que podem ser escolhidos como fonte de relgio do sistema:

O oscilador HFINTOSC calibrado de fbrica, e oscila a 8MHz. Esta frequncia pode ser ajustada pelo programador, usado bits do registo OSCTUNE.

O oscilador LFINTOSC no calibrado de fbrica, e oscila a 31KHz.

Da mesma forma que o oscilador externo, o interno tambm pode funcionar em vrios modos. O modo seleccionado da mesma maneira que o oscilador externo - pelos bits da Palavra de Congurao - Fusiveis.

Modo INTOSC - Oscilador Interno

Neste modo, o pino OSC1 est disponivel para I/O geral, enquanto que o pino OSC2 tem disponivel a frequncia de onscilao interna dividida por 4.

Modo INTOSCIO - Oscilador Interno

Neste modo, ambos os pinos OSC1 e OSC2 esto disponiveis para I/O.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

186

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Congurao do Oscilador Interno


O oscilador interno consiste em dois circuitos separados.

1. O oscilador interno de alta-frequncia HFINTOSC, est ligado a um divisor de frequncia. calibrado de fbrica, e funciona a 8MHz. Usando o divisor, este oscilador pode ter na sua sada, uma de sete frequncias, que podem ser escolhidas pelos bits IRCF2-IRCF0 do registo OSCCON.

O HFINTOSC ligado, escolhendo uma de sete frequncias (entre 125KHz e 8MHz), e activando o bit SCS do OSCCON. Como se pode ver pela gura abaixo, toda a congurao realizada pelos bits do registo OSCCON.

Conguraes do Oscilador Interno

2. O oscilador interno de baixa-frequncia LFINTOSC, funciona a 31KHz e no vem calibrado de fbrica. activado, escolhendo esta frequncias (bits no OSCCON), e activando o bit SCS do mesmo registo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

187

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Modo de Arranque de Relgio a Duas-Velocidades


O Modo de Arranque de Relgio a Duas-Velocidades, usado para dar poupanas energticas adicionais, quando o microcontrolador funciona em modo Sleep.

Quando congurado no modo LP, XT ou HS, o oscilador externo vai estar desligado quando em Sleep, de maneira a reduzir o consumo mdio energtico do microcontrolador.

Quando as condies para acordar esto reunidas, o microcontrolador no vai retomar o servio automaticamente, porque tem que aguardar que o sinal de relgio que estavel. Este atraso de exactamente 1024 pulsos. Depois destes, o microcontrolador procede com a execuo do programa.

O problema que, quase sempre, so apenas umas poucas instrues executadas, antes de o microcontrolador entrar em Sleep. Signica que, na maior parte do tempo, a energia desperdiada. Este problema solucionado, usando o oscilador interno para a execuo do programa, enquanto os 1024 pulsos so contados. Seguidamente, e assim que o oscilador externo car estvel, vai automaticamente tomar o lugar principal. Todo o processo habilitado, activando o bit IESO nos Fusiveis.

Fail-Safe Clock Monitor - FSCM - Monitor contra falhas de Relgio

O FSCM monitoriza o funcionamento do oscilador externo, e permite, ao microcontrolador, continuar a execuo do programa, mesmo que o oscilador externo falhe por alguma razo. Neste caso, o oscilador interno assume a operao.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

188

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Monitor de Relgio contra falhas

O FSCM detecta a falha do oscilador, comparando as fontes de relgio Interna e Externa. Caso o oscilador esterno demore mais de 2 milisegundos a chegar aos pinos do microcontrolador, a fonte de relgio mudada automaticamente para o oscilador interno, que continua a operao, controlado pelos bits do OSCCON. Quando o bit OSFIE do registo PIE2 estiver activo, uma interrupo gerada. O relgio de sistema continuar a ser o interno, at que o oscilador externo retome o funcionamento. A transio feita automaticamente.

Este mdulo activado, pela congurao do bit FCMEN nos Fusiveis, aquando da programao fsica do microcontrolador.

Registo OSCTUNE
Quaisquer modicaes no registo OSCTUNE, afectam a frequncia HFINTOSC, mas no a LFINTOSC. Tambm, no h indicao durante a operao, de que houve mudana.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

189

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

TUN4-TUN0 - Bits de Sintonizao da Frequncia. Pela combinao destes cinco bit, a frequncia do oscilador de 8MHz varia. Desta maneira, as frequncias obtidas pelo divisor, tambm mudam. TUN4 0 0 0 . . 0 0 1 . . 1 1 1 TUN3 1 1 1 . . 0 0 1 . . 0 0 0 TUN2 1 1 1 . . 0 0 1 . . 0 0 0 TUN1 1 1 0 . . 0 0 1 . . 1 0 0 TUN0 1 0 1 . . 1 0 1 . . 0 1 0 Mnima Calibrado Frequncia Mxima

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

190

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Memria EEPROM
A EEPROM no pertence, nem memria do programa (ROM FLASH), nem memria de dados (RAM), mas sim a um grupo especial. Mesmo estas posies de memria no sendo facil e rapidamente acessiveis como os outros registos, so de grande importncia pois, os dados da EEPROM, so permanentemente gravados. Os dados da EEPROM podem ser alterados a qualquer momento. Devido a estas excepcionais qualidades, cada byte de EEPROM valioso.

O PIC estudado neste manual tem 256 posies de EEPROM, controlados pelos bits dos seguintes registos:

EECON1 - registo de controlo EECON2 - registo de controlo EEDAT - grava dados prontos para ler/escrever EEADR - grava endereo a ser acedido

No entanto, o EECON2 no um registo verdadeiro, pois no existe sicamente. apenas usado na sequncia de escrita.

Os registos EEDATH e EEADRH, pertencem ao mesmo grupo de registos usados durante a escrita/leitura da EEPROM. Ambos so udados, tambm, para escrita/leitura da memria do programa (ROM FLASH). Como esta considerada uma zona de risco, pois no queremos inadvertidamente apagar o programa do microcontrolador, ca o aviso.

Registo EECON1

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

191

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

EEPGD - Bit de seleco de acesso memria de Programa ou EEPROM de Dados 1 - Acede memria de Programa, ROM FLASH 0 - Acede memria de Dados, EEPROM

WRERR - Flag de error na EEPROM 1 - A operao de escrita foi prematuramente terminada e um erro ocorreu 0 - A operao de escrita terminada

WREN - Bit de habilitao da escrita da EEPROM 1 - Escrita na EEPROM permitida 0 - Escrita na EEPROM proibida

WR - Bit de controlo da Escrita 1 - D incio escrita na EEPROM 0 - Escrita para a EEPROM est completa

RD - Bit de controlo da Leitura 1 - D incio leitura da EEPROM 0 - Leitura da EEPROM desactivada

Leitura da EEPROM
De modo a se poder ler da EEPROM, o seguinte procedimento dever ser executado:

1. Escrever um endereo (0x00 a 0xFF) no registo EEADR 2. Seleccionar o acesso EEPROM, pelo bit EEPGD no registo EECON1 3. Para ler a posio, activar o bit RD no mesmo registo 4. Os dados so armazenados no registo EEDAT, e prontos a serem usados.

O seguinte exemplo mostra a leitura da EEPROM:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

192

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

BSF BCF MOVF BSF BCF BSF BCF MOVF

STATUS,RP1 STATUS,RP0 ADDRESS,W STATUS,RP0 EECON1,RD STATUS,RP0 EEDATA,W

; ; Access bank 2 ; Move address to the W register ; Write address ; Access bank 3 ; Read data ; Access bank 2 ; Data is stored in the W register

MOVWF EEADR

EECON1,EEPGD ; Select EEPROM

Escrita da EEPROM
De modo a escrever na EEPROM, deve escrever-se o endereo no registo EEADR, e depois o byte de dados no registo EEDAT. Seguidamente necessrio fazer uma sequncia de segurana, para iniciar a escrita de cada byte. As interrupes devem ser desligadas durante esta sequncia.

O seguinte exemplo mostra a escrita na EEPROM:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

193

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

BSF BSF GOTO BCF MOVF MOVF BSF BCF BSF BCF

STATUS,RP1 STATUS,RP0 ; Wait for the previous write to complete ; ; Bank 2 ; Move address to W ; Write address ; Move data to W ; Write data ; Bank 3 ; Write to EEPROM enabled ; All interrupts disabled ; Required sequence start $-1 STATUS,RP0 ADDRESS,W DATA,W STATUS,RP0 EECON1,WREN INCON,GIE

BTFSC EECON,WR1

MOVWF EEADR MOVWF EEDATA

EECON1,EEPGD ; Select EEPROM

MOVLW 55h MOVWF EECON2 MOVLW AAh MOVWF EECON2 BSF BSF BCF EECON1,WR INTCON,GIE EECON1,WREN

; Required sequence end ; Interrupts enabled ; Write to EEPROM disabled

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

194

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Reset! Black-out, Brown-out ou Ruidos?


No Reset, o microcontrolador imediatamente pra o funcionamento, e limpa os seus registos.

O sinal de Reset pode ser gerado externamente a qualquer momento, pelo nivel lgizo 0 no pino MCLR. Se necessrio, tambm pode ser gerado pela electrnica interna. O Power-on gera sempre um Reset. Nomeadamente, devido a vrios eventos que acontecem quando a fonte de alimentao est ligada (maus contactos de interruptores, arcos elctricos, tenso a subir vagarosamente, estabilizao gradual da frequncia de relgio, etc), necessrio forar um atraso de tempo, antes do microcontrolador iniciar o funcionamento. Dois temporizadores internos - PWRT e OST, esto encarregados deste servio. O primeiro pode ser ligado/ desligado durante a execuo do programa.

Funciona da seguinte maneira:

Quando a fonte de alimentao alcana os 1.2-1.7V, o circuito de Power-up pe o microcontrolador em Reset, por aproximadamente 72 milisegundos. Imediatamente a este temporizador ter terminado, outro sinal de Reset gerado pelo Oscilador de Start-up, que aguarda 1024 periodos do oscilador de quartzo. Quando este atraso termina, marcado a T Reset na gura, e o pino MCLR estiver a lgico 1, o microcontrolador d incio execuo da primeira instruo do programa. Atraso de Incio do Oscilador

H, ainda, mais dois Resets, que podem ocorrer durante o funcionamento, bem como no momento em que a energia desligada.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

195

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Reset por Black-out - Falha de Energia Sbita

O Reset de Black-out acontece quando a energia de alimentao desligada. Nesse caso, o microcontrolador no tem tempo para realizar nenhuma funo imprevisivel, simplesmente porque a tenso cai abruptamente abaixo do seu valor mnimo. Por outras palavras, no possivel fazer nada quando esta situao acontece. Perda de Energia Sbita

Reset por Brown-out - Descida de Tenso Lenta e Gradual

Quando a tenso de alimentao desce lentamente, tpico de sistemas alimentados a baterias, a electrnica interna gradualmente pra o seu funcionamento, e o chamado reset por brown-out acontece. Neste caso, antes do microcontrolador parar a execuo do programa, h uma grave perigo de que, circuitos que trabalhem a uma tenso superior, comecem a trabalhar de forma descontrolada. Esta problemtica, tambm, pode causar alteraes fatais no programa em si, porque est gravado na memria FLASH. Perda de Energia Gradual

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

196

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Outros Circuitos Internos

Ruidos

Este um tipo especial de Reset por Brown-out, que ocorre em ambientes industriais, quando a fonte de alimentao oscila por um momento, e deixa cair o seu valor abaixo do nvel mnimo. Mesmo que curtos, estes ruidos na linha de alimentao, podem causar problemas no funcionamento do dispositivo. Rudos

Pino de MCLR
Um nvel lgico 0 no pino MCLR, faz um Reset imediato. recomendado que seja ligado como mostra a gura abaixo. A funo dos componentes adicionais, a de conseguir suster um estado lgico 1 puro, durante o funcionamento normal.

De maneira a evitar qualquer erro que possa acontecer com um Reset por Brown-out, este microcontrolador tem incluido um sistema de defesa. um circuito simples, mas ecaz, que reage de cada vez que a tenso de alimentao desce abaixo de 4V, e se matm assim por mais de 100 microsegundos. Nesse caso, este circuito gera um sinal de Reset e, desde esse momento, todo o microcontrolador funciona como se tivesse sido acabado de ligar.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

197

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Conjunto de Instrues
J dissemos que um microcontrolador no como qualquer outro circuito integrado. Quando saem da cadeia de produo, a maioria dos circuitos integrados, esto prontos para serem introduzidos nos dispositivos, o que no o caso dos microcontroladores.

Para que um microcontrolador cumpra a sua tarefa, ns temos que lhe dizer exactamente o que fazer. Por outras palavras, ns temos que escrever o programa que o microcontrolador vai executar. Neste captulo iremos descrever as instrues que constituem o assembler, ou seja, a linguagem de baixo nvel para os microcontroladores PIC.

Conjunto de Instrues da Famlia PIC16Fxx de Microcontroladores


O conjunto completo compreende 35 instrues, e mostra-se na tabela que se segue. Uma razo para este pequeno nmero de instrues, resulta, principalmente do facto de estarmos a falar de um microcontrolador RISC, cujas instrues foram optimizadas tendo em vista a rapidez de funcionamento, simplicidade de arquitectura e compactao de cdigo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

198

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

*1 - Se o porto de entrada/sada for o operando origem, lido o estado dos pinos do microcontrolador. *2 - Se esta instruo for executada no registo TMR0 e se d=1, o divisor atribudo a esse temporizador automaticamente limpo. *3 - Se o PC for modicado, ou se resultado do teste for verdadeiro, a instruo executada em dois ciclos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

199

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Transferncia de dados
A transferncia de dados num microcontrolador, ocorre entre o registo de trabalho W e um registo f que representa um qualquer local de memria na RAM interna (quer se trate de um registo especial ou de um registo de uso genrico).

As primeiras trs instrues (observar a tabela anterior), referem-se escrita de uma constante no registo W (MOVLW uma abreviatura para MOVa Literal para W), cpia de um dado do registo W para o registo f , e cpia de um dado de um registo f para o registo W (ou nele prprio, caso em que apenas a ag do zero afectada). A instruo CLRF, escreve a constante 0 no registo f , e CLRW escreve a constante 0 no registo W. A instruo SWAPF troca o nibble (conjunto de 4 bits) mais signicativo, com o nibble menos signicativo de um registo, passando o primeiro a ser o menos signicativo, e o outro o mais signicativo do registo.

Lgicas e aritmticas
De todas as operaes aritmticas possveis, os microcontroladores PIC, tal como a grande maioria dos outros microcontroladores, apenas suportam a subtraco e a adio. Os bits ou ags C, DC e Z, so afectados conforme o resultado da adio ou da subtraco, com uma nica excepo: uma vez que a subtraco executada como uma adio com um nmero negativo, a ag C (Carry), comporta-se inversamente no que diz respeito subtraco. Por outras palavras, posta a 1 se a operao possvel, e posta a 0 se um nmero maior tiver que ser subtrado de outro mais pequeno.

A lgica dentro do PIC tem a capacidade de executar as operaes AND, OR, EX-OR, complemento (COMF) e rotaes (RLF e RRF). Estas duas ltimas instrues, rodam o contedo do registo, atravs desse registo e da ag C, em uma casa para a esquerda (na direco do bit 7), ou para a direita (na direco do bit 0). O bit que sai do registo escrito na ag C e o contedo anterior desta ag, escrito no bit situado do lado oposto no registo. Ver imagem com exemplo.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

200

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Rotao pelo Bit de Carry

Operaes com bits


As instrues BCF e BSF, pem a 0 ou a 1 qualquer bit de qualquer local da memria. Apesar de parecer uma operao simples, ela executada do seguinte modo, o CPU primeiro l o byte completo, altera o valor de um bit e, a seguir, escreve o byte completo no mesmo stio.

Controlo de Execuo de um Programa


As instrues GOTO, CALL e RETURN so executadas do mesmo modo que em todos os outros microcontroladores. A diferena que a pilha (stack) independente da RAM interna, e limitada a oito nveis. A instruo RETLW k idntica instruo RETURN, excepto que, ao regressar de uma subrotina, escrita no registo W uma constante denida pelo operando k da instruo. Esta instruo, permite implementar facilmente listagens (tambm chamadas tabelas de look-up).

Esta tabela pode apresentar-se como um subprograma, que consiste numa srie de instrues RETLW k, onde as constantes k so membros da tabela.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

201

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Main call

movlw 2 Lookup

;escreve nmero 2 para o acumulador ;salta para a tabela

Lookup addwf PCL,f ;adiciona acumulador ao contador de programa PCL retlw retlw retlw ... ... retlw kn k0 k1 k2 ;retorno da subrotina (acumulador contem k0) ;... ;... ;... ;... ;retorno da subrotina (acumulador contem kn)

1. Escreve-se a posio de um membro da nossa tabela no registo W e, usando a instruo CALL, chama-se o subprograma que contm a tabela. 2. A primeira linha do subprograma, ADDWF PCL,f, adiciona a posio na tabela (que est escrita em W) ao endereo do incio da tabela (que est no registo PCL), assim, obtm-se o endereo real do dado da tabela na memria de programa. 3. Quando se regressa do subprograma, ter-se- no registo W, o contedo do membro da tabela endereado. 4. No exemplo anterior, a constante k2 estar no registo W, aps o retorno do subprograma.

RETFIE (RETurn From Interrupt Interrupt Enable, ou regresso da rotina de interrupo com as interrupes habilitadas) um regresso da rotina de interrupo, e difere de RETURN apenas em que, automaticamente, pe a 1 o bit GIE (Global Interrupt Enable - habilitao global das interrupes).

Quando a interrupo comea, este bit automaticamente reposto a 0. Tambm, quando a interrupo tem incio, somente o valor do contador de programa posto no cimo da pilha.

O PIC no tem capacidade automtica de armazenamento dos registos de estado. Ou seja, os registos de trabalho do microcontrolador devem ser guardados assim que se entra na rotina de interrupo, para que mais tarde, mesmo antes de sar, se reponham estes registos de trabalho.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

202

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Os saltos condicionais esto sintetizados em duas instrues: BTFSC e BTFSS. Consoante o estado lgico do bit do registo f que est a ser testado, a instruo seguinte no programa , ou no, executada.

Perodo de execuo da instruo

Todas as instrues so executadas num nico ciclo, excepto as instrues de ramicao condicional se a condio for verdadeira, ou se o contedo do contador de programa for alterado pela instruo. Nestes casos, a execuo requer dois ciclos de instruo, e o segundo ciclo executado como sendo um NOP (Nenhuma Operao). Quatro oscilaes de clock, perfazem um ciclo de instruo. Se estivermos a usar um oscilador com 4MHz de frequncia, o tempo normal de execuo de uma instruo ser de 1 microsegundo e, no caso de uma ramicao condicional, de 2 microsegundos.

Listagem das instrues

f - qualquer local de memria num microcontrolador W - registo de trabalho b - posio de bit no registo f d - registo de destino label - grupo de oito caracteres que marca o incio de uma parte do programa (rtulo) TOS - cimo da pilha [] - opcional <> - grupo de bits num registo

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

203

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

MOVLW - Escrever constante no registo W Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1: Exemplo 2: [rtulo] MOVLW k A constante de 8-bits k vai para o registo W. k -> ( W ) 0 <= k <= 255 1 1 MOVLW 0x5A Depois da instruo: W= 0x5A MOVLW REGISTAR Antes da instruo: W = 0x10 e REGISTAR = 0x40 Depois da instruo: W = 0x40

MOVWF

Copiar W para f [rtulo] MOVWF f O contedo do registo W copiado para o registo f W -> ( f ) 0 <= k <= 127 1 1 MOVWF OPTION_REG Antes da instruo: OPTION_REG = 0x20 W = 0x40 Depois da instruo: OPTION_REG = 0x40 W = 0x40 MOVWF INDF Antes da instruo: W = 0x17 FSR = 0xC2 Contedo do endereo 0xC2 = 0x00 Depois da instruo: W = 0x17 FSR = 0xC2 Contedo do endereo 0xC2 = 0x17

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

204

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

MOVF Sintaxe: Descrio:

Copiar f para d [rtulo] MOVF f, d O contedo do registo f guardado no local determinado pelo operando d Se d = 0, o destino o registo W Se d = 1, o destino o prprio registo f A opo d = 1, usada para testar o contedo do registo f, porque a execuo desta instruo afecta a ag Z do registo STATUS. f -> ( d ) 0 <= k <= 127, d E [0, 1] Z 1 1 MOVF FSR, 0 Antes da instruo: FSR = 0xC2 W = 0x00 Depois da instruo: W = 0xC2 Z=0 MOVF INDF, 0 Antes da instruo: W = 0x17 FSR = 0xC2 contedo do endereo 0xC2 = 0x00 Depois da instruo: W = 0x00 FSR = 0xC2 contedo do endereo 0xC2 = 0x00 Z=1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

CLRW Sintaxe: Descrio:

Escrever 0 em W [rtulo] CLRW O contedo do registo W passa para 0 e a ag Z do registo STATUS toma o valor 1. 0 -> ( W ) Z 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

205

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo:

CLRW Antes da instruo: W = 0x55 Depois da instruo: W = 0x00 Z=1

CLRF Sintaxe: Descrio:

Escrever 0 em f [rtulo] CLRF f O contedo do registo f passa para 0 e a ag Z do registo STATUS toma o valor 1. 0 -> f 0 <= k <= 127 Z 1 1 CLRF STATUS Antes da instruo: STATUS = 0xC2 Depois da instruo: STATUS = 0x00 Z=1 CLRF INDF Antes da instruo: FSR = 0xC2 contedo do endereo 0xC2 = 0x33 Depois da instruo: FSR = 0xC2 contedo do endereo 0xC2 = 0x00 Z=1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

SWAPF Sintaxe: Descrio:

Copiar o contedo de f para d, trocando a posio dos 4 primeiros bits com a dos 4 ltimos [rtulo] SWAPF f, d Os 4 bits + signicativos e os 4 bits signicativos de f, trocam de posies. Se d = 0, o resultado guardado no registo W Se d = 1, o resultado guardado no registo f f <0:3>-> d <4:7>, f <4:7>-> d <0:3>, 0 <= k <= 127, d E [0, 1] 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

206

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 1:

Exemplo 2:

SWAPF REG, 0 Antes da instruo: Depois da instruo: W = 0x3F SWAPF REG, 1 Antes da instruo: Depois da instruo:

REG = 0xF3 REG = 0xF3

REG = 0xF3 REG = 0x3F

ADDLW Sintaxe: Descrio:

Adicionar W a uma constante [rtulo] ADDLW k O contedo do registo W, adicionado constante de 8-bits k e o resultado guardado no registo W. ( W ) + k -> W 0 <= k <= 255 C, DC, Z 1 1 ADDLW 0x15 Antes da instruo: W= 0x10 Depois da instruo: W= 0x25 ADDLW REG Antes da instruo: W = 0x10 REG = 0x37 Depois da instruo: W = 0x47

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

ADDWF Sintaxe: Descrio:

Adicionar W a f [rtulo] ADDWF f, d Adicionar os contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f (W) + ( f ) -> d, d E [0, 1] 0 <= k <= 127 C, DC, Z 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

207

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 1:

Exemplo 2:

ADDWF FSR, 0 Antes da instruo: W = 0x17 FSR = 0xC2 Depois da instruo: W = 0xD9 FSR = 0xC2 ADDWF INDF,0 Antes da instruo: W = 0x17 FSR = 0xC2 contedo do endereo 0xC2 = 0x20 Depois da instruo: W = 0x37 FSR = 0xC2 Contedo do endereo 0xC2 = 0x20

SUBLW Sintaxe: Descrio:

Subtrair W a uma constante [rtulo] SUBLW k O contedo do registo W, subtrado constante k e, o resultado, guardado no registo W. k - ( W ) -> W 0 <= k <= 255 C, DC, Z 1 1 SUBLW 0x03 Antes da instruo: W= 0x01, C = x, Z = x Depois da instruo: W= 0x02, C = 1, Z = 0 Antes da instruo: W= 0x03, C = x, Z = x Depois da instruo: W= 0x00, C = 1, Z = 1 Antes da instruo: W= 0x04, C = x, Z = x Depois da instruo: W= 0xFF, C = 0, Z = 0 SUBLW REG Antes da instruo: W = 0x10 REG = 0x37 Depois da instruo: W = 0x27 C=1 Resultado > 0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Resultado > 0 Resultado = 0 Resultado < 0

Exemplo 2:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

208

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

SUBWF Sintaxe: Descrio:

Subtrair W a f [rtulo] SUBWF f, d O contedo do registo W subtrado ao contedo do registo f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f ( f ) - (W) -> d 0 <= k <= 127, d E [0, 1] C, DC, Z 1 1 SUBWF REG, 1 Antes da instruo: REG= 3, W= 2, C = x, Z = x Depois da instruo: REG= 1, W= 2, C = 1, Z = 0 Resultado >0 Antes da instruo: REG= 2, W= 2, C = x, Z = x Depois da instruo: REG=0, W= 2, C = 1, Z = 1 =0 Antes da instruo: REG=1, W= 2, C = x, Z = x Depois da instruo: REG= 0xFF, W=2, C = 0, Z = 0 <0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

Resultado

Resultado

ANDLW Sintaxe: Descrio:

Fazer o E lgico de W com uma constante [rtulo] ANDLW k executado o E lgico do contedo do registo W, com a constante k O resultado guardado no registo W. ( W ) .AND. k -> W 0 <= k <= 255 Z 1 1 ANDLW 0x5F Antes da instruo: W= 0xA3 ; 0101 1111 (0x5F) ; 1010 0011 (0xA3) Depois da instruo: W= 0x03; 0000 0011 (0x03)

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

209

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 2:

ANDLW REG Antes da instruo: W = 0xA3 REG = 0x37 ; Depois da instruo: W = 0x23

1010 0011 (0xA3) 0011 0111 (0x37) ; 0010 0011 (0x23)

ANDWF Sintaxe: Descrio:

Fazer o E lgico de W com f [rtulo] ANDWF f, d Faz o E lgico dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f (W) .AND. ( f ) -> d 0 <= k <= 127, d E [0, 1] Z 1 1 ANDWF FSR, 1 Antes da instruo: W= 0x17, FSR= 0xC2; 0001 1111 (0x17) ; 1100 0010 (0xC2) Depois da instruo: W= 0x17, FSR= 0x02 ; 0000 0010 (0x02) ANDWF FSR, 0 Antes da instruo: W= 0x17, FSR= 0xC2; 0001 1111 (0x17) ; 1100 0010 (0xC2) Depois da instruo: W= 0x02, FSR= 0xC2; 0000 0010 (0x02)

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

IORLW Sintaxe: Descrio:

Fazer o OU lgico de W com uma constante [rtulo] IORLW k executado o OU lgico do contedo do registo W, com a constante de 8 bits k, o resultado guardado no registo W. ( W ) .OR. k -> W 0 <= k <= 255 Z 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

210

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 1:

Exemplo 2:

IORLW 0x35 Antes da instruo: W= 0x9A Depois da instruo: W= 0xBF Z= 0 IORLW REG Antes da instruo: W = 0x9A contedo de REG = 0x37 Depois da instruo: W = 0x9F Z=0

IORWF Sintaxe: Descrio:

Fazer o OU lgico de W com f [rtulo] IORWF f, d Faz o OU lgico dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f (W) .OR. ( f ) -> d 0 <= k <= 127, d E [0, 1] Z 1 1 IORWF REG, 0 Antes da instruo: REG= 0x13, W= 0x91 Depois da instruo: REG= 0x13, W= 0x93 Z= 0 IORWF REG, 1 Antes da instruo: REG= 0x13, W= 0x91 Depois da instruo: REG= 0x93, W= 0x91 Z= 0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

XORLW Sintaxe: Descrio: Operao: Operando: Flag:

OU- EXCLUSIVO de W com uma constante [rtulo] XORLW k executada a operao OU-Exclusivo do contedo do registo W, com a constante k. O resultado guardado no registo W. ( W ) .XOR. k -> W 0 <= k <= 255 Z

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

2 11

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Nmero de palavras: Nmero de ciclos: Exemplo 1:

1 1 XORLW 0xAF Antes da instruo:

Exemplo 2:

W= 0xB5 ; 1010 1111 (0xAF) ; 1011 0101 (0xB5) Depois da instruo: W= 0x1A; 0001 1010 (0x1A) XORLW REG Antes da instruo: W = 0xAF ; 1010 1111 (0xAF) REG = 0x37 ; 0011 0111 (0x37) Depois da instruo: W = 0x98 ; 1001 1000 (0x98) Z=0

XORWF Sintaxe: Descrio:

OU-EXCLUSIVO de W com f [rtulo] XORWF f, d Faz o OU-EXCLUSIVO dos contedos dos registos W e f Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f (W) .XOR. ( f ) -> d 0 <= k <= 127, d E [0, 1] Z 1 1 XORWF REG, 1 Antes da instruo: REG= 0xAF, W= 0xB5 ; 1010 1111 (0xAF) Depois da instruo: ; 1011 0101 (0xB5) REG= 0x1A, W= 0xB5 001 1010

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

(0x1A) XORWF REG, 0 Antes da instruo: (0xAF) Depois da instruo: (0x1A)

REG= 0xAF, W= 0xB5;

1010 1111

; 1011 0101 (0xB5) REG= 0xAF, W= 0x1A ; 0001 1010

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

212

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

INCF Sintaxe: Descrio:

Incrementar f [rtulo] INCF f, d Incrementar de uma unidade, o contedo do registo f. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f ( f ) + 1 -> d 0 <= k <= 127, d E [0, 1] Z 1 1 INCF REG, 1 Antes da instruo: REG = 0xFF Z=0 Depois da instruo: REG = 0x00 Z=1 INCF REG, 0 Antes da instruo: REG = 0x10 W=x Z=0 Depois da instruo: REG = 0x10 W = 0x11 Z=0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

DECF Sintaxe: Descrio:

Decrementar f [rtulo] DECF f, d Decrementar de uma unidade, o contedo do registo f. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f ( f ) - 1 -> d 0 <= k <= 127, d E [0, 1] Z 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

213

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 1:

Exemplo 2:

DECF REG, 1 Antes da instruo: REG = 0x01 Z=0 Depois da instruo: REG = 0x00 Z=1 DECF REG, 0 Antes da instruo: REG = 0x13 W=x Z=0 Depois da instruo: REG = 0x13 W = 0x12 Z=0

RLF Sintaxe: Descrio:

Rodar f para a esquerda atravs do Carry [rtulo] RLF f, d O contedo do registo f rodado um espao para a esquerda, atravs de C (ag do Carry). Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f ( f <n>) -> d<n+1>, f<7> -> C, C -> d<0>; 0 <= k <= 127, d E [0, 1] C 1 1 RLF REG, 0 Antes da instruo: REG = 1110 0110 C=0 Depois da instruo: REG = 1110 0110 W = 1100 1100 C=1 RLF REG, 1 Antes da instruo: REG = 1110 0110 C=0 Depois da instruo: REG = 1100 1100 C=1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

214

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

RRF Sintaxe: Descrio:

Rodar f para a direita atravs do Carry [rtulo] RRF f, d O contedo do registo f rodado um espao para a direita, atravs de C (ag do Carry). Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f ( f <n>) -> d<n-1>, f<0> -> C, C -> d<7>; 0 <= k <= 127, d E [0, 1] C 1 1 RRF REG, 0 Antes da instruo: REG = 1110 0110 W=x C=0 Depois da instruo: REG = 1110 0110 W = 0111 0011 C=0 RRF REG, 1 Antes da instruo: REG = 1110 0110 C=0 Depois da instruo: REG = 0111 0011 C=0

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

COMF Sintaxe: Descrio:

Complementar f [rtulo] COMF f, d O contedo do registo f complementado. Se d=0, o resultado guardado no registo W Se d=1, o resultado guardado no registo f () -> d 0 <= k <= 127, d E [0, 1] Z 1 1

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

215

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo 1:

Exemplo 2:

COMF REG, 0 Antes da instruo: REG= 0x13 ; 0001 0011 (0x13) Depois da instruo: REG= 0x13 ; complementar W = 0xEC ; 1110 1100 (0xEC) COMF INDF, 1 Antes da instruo: FSR= 0xC2 contedo de FSR = (FSR) = 0xAA Depois da instruo: FSR= 0xC2 contedo de FSR = (FSR) = 0x55

BCF

Pr a 0 o bit b de f [rtulo] BCF f, b Limpar (pr a 0), o bit b do registo f 0 -> f<b> 0 <= k <= 127, 0 <= b <= 7 1 1 BCF REG, 7 Antes da instruo: REG = 0xC7 ; 1100 0111 (0xC7) Depois da instruo: REG = 0x47 ; 0100 0111 (0x47) BCF INDF, 3 Antes da instruo: W = 0x17 FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x2F Depois da instruo: W = 0x17 FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x27

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

Exemplo 2:

BSF

Pr a 1 o bit b de f [rtulo] BSF f, b Pr a 1, o bit b do registo f 1 -> f<b> 0 <= k <= 127, 0 <= b <= 7 1

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

216

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Nmero de ciclos: Exemplo 1:

Exemplo 2:

1 BSF REG, 7 Antes da instruo: REG = 0x07 ; 0000 0111 (0x07) Depois da instruo: REG = 0x17 ; 1000 0111 (0x87) BSF INDF, 3 Antes da instruo: W = 0x17 FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x2F Depois da instruo: W = 0x17 FSR = 0xC2 contedo do endereo em FSR (FSR) = 0x28

BTFSC Sintaxe: Descrio:

Testar o bit b de f, saltar por cima se for = 0 [rtulo] BTFSC f, b Se o bit b do registo f for igual a zero, ignorar instruo seguinte. Se este bit b for zero, ento, durante a execuo da instruo actual, a execuo da instruo seguinte no se concretiza e executada, em vez desta, uma instruo NOP, fazendo com que a instruo actual, demore dois ciclos

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

de instruo a ser executada. Ignorar a instruo seguinte se (f<b>) = 0 0 <= k <= 127, 0 <= b <= 7 1 1 ou 2 dependendo do valor lgico do bit b LAB_01 BTFSC REG, 1; Testar o bit 1 do registo REG LAB_02 ........... ; Ignorar esta linha se for 0 LAB_03 ........... ; Executar esta linha depois da anterior, se for 1 Antes da instruo, o contador de programa contm o endereo LAB_01. Depois desta instruo, se o bit 1 do registo REG for zero, o contador de programa contm o endereo LAB_03. Se o bit 1 do registo REG for um, o contador de programa contm o endereo LAB_02.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

217

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

BTFSS Sintaxe: Descrio:

Testar o bit b de f, saltar por cima se for = 1 [rtulo] BTFSS f, b Se o bit b do registo f for igual a um, ignorar instruo seguinte. Se durante a execuo desta instruo este bit b for um, ento, a execuo da instruo seguinte no se concretiza e executada, em vez desta, uma instruo NOP, assim, a instruo actual demora dois ciclos de instruo

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

a ser executada. Ignorar a instruo seguinte se (f<b>) = 1 0 <= k <= 127, 0 <= b <= 7 1 1 ou 2 dependendo do valor lgico do bit b LAB_01 BTFSS REG, 1; Testar o bit 1 do registo REG LAB_02 ........... ; Ignorar esta linha se for 1 LAB_03 ........... ; Executar esta linha depois da anterior, se for 0 Antes da instruo, o contador de programa contm o endereo LAB_01. Depois desta instruo, se o bit 1 do registo REG for um, o contador de programa contm o endereo LAB_03. Se o bit 1 do registo REG for zero, o contador de programa contm o endereo LAB_02.

INCFSZ Sintaxe: Descrio:

Incrementar f, saltar por cima se der = 0 [rtulo] INCFSZ f, d Descrio: O contedo do registo f incrementado de uma unidade. Se d = 0, o resultado guardado no registo W. Se d = 1, o resultado guardado no registo f. Se o resultado do incremento for = 0, a instruo seguinte substituda por uma instruo NOP, fazendo com que a instruo actual, demore dois

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos:

ciclos de instruo a ser executada. (f ) + 1 -> d 0 <= k <= 127, d E [0, 1] 1 1 ou 2 dependendo do resultado

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

218

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Exemplo:

LAB_01 INCFSZ REG, 1; Incrementar o contedo de REG de uma unidade LAB_02 ........... LAB_03 ........... ; Ignorar esta linha se resultado = 0 ; Executar esta linha depois da anterior, se der

0 Contedo do contador de programa antes da instruo, PC = endereo LAB_01. Se o contedo do registo REG depois de a operao REG = REG + 1 ter sido executada, for REG = 0, o contador de programa aponta para o rtulo de endereo LAB_03. Caso contrrio, o contador de programa contm o endereo da instruo seguinte, ou seja, LAB_02.

DECFSZ Sintaxe: Descrio:

Decrementar f, saltar por cima se der = 0 [rtulo] DECFSZ f, d O contedo do registo f decrementado uma unidade. Se d = 0, o resultado guardado no registo W. Se d = 1, o resultado guardado no registo f. Se o resultado do decremento for = 0, a instruo seguinte substituda por uma instruo NOP, fazendo assim com que a instruo actual, de-

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

more dois ciclos de instruo a ser executada. (f ) - 1 -> d 0 <= k <= 127, d E [0, 1] 1 1 ou 2 dependendo do resultado LAB_01 DECFSZ REG, 1; Decrementar o contedo de REG de uma unidade LAB_02 ........... LAB_03 ........... ; Ignorar esta linha se resultado = 0 ; Executar esta linha depois da anterior, se der

0 Contedo do contador de programa antes da instruo, PC = endereo LAB_01. Se o contedo do registo REG depois de a operao REG = REG 1 ter sido executada, for REG = 0, o contador de programa aponta para o rtulo de endereo LAB_03. Caso contrrio, o contador de programa contm o endereo da instruo seguinte, ou seja, LAB_02.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

219

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

GOTO

Saltar para o endereo [rtulo] GOTO k Salto incondicional para o endereo k. k -> PC<10:0>, (PCLATH<4:3>) -> PC<12:11> 0 <= k <= 2048 1 2 LAB_00 GOTO LAB_01; Saltar para LAB_01 : LAB_01 ............ Antes da instruo: PC = endereo LAB_00 Depois da instruo: PC = endereo LAB_01

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

CALL Sintaxe: Descrio:

Chamar um programa [rtulo] CALL k Esta instruo, chama um subprograma. Primeiro, o endereo de retorno (PC+1) guardado na pilha, a seguir, o operando k de 11 bits, correspondente ao endereo de incio do subprograma, vai para o contador de

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

programa (PC). PC+1 -> Topo da pilha (TOS Top Of Stack) 0 <= k <= 2048 1 2 LAB_00 CALL LAB_02 ; Chamar a subrotina LAB_02 LAB_01 : : LAB_02 ............ Antes da instruo: PC = endereo LAB_00 TOS = x Depois da instruo: PC = endereo LAB_02 TOS = LAB_01

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

220

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

RETURN

Retorno de um subprograma [rtulo] RETURN O contedo do topo da pilha guardado no contador de programa. TOS -> Contador de programa PC 1 2 RETURN Antes da instruo: PC = x TOS = x Depois da instruo: PC = TOS TOS = TOS - 1

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

RETLW

Retorno de um subprograma com uma constante em W [rtulo] RETLW k A constante k de 8 bits, guardada no registo W. (k) -> W; TOS -> PC 0 <= k <= 255 1 2 RETLW 0x43 Antes da instruo: W = x PC = x TOS = x Depois da instruo: W = 0x43 PC = TOS TOS = TOS 1

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

221

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

RETFIE Sintaxe: Descrio:

Retorno de uma rotina de interrupo [rtulo] RETLW k Retorno de uma subrotina de atendimento de interrupo. O contedo do topo de pilha (TOS), transferido para o contador de programa (PC). Ao mesmo tempo, as interrupes so habilitadas, pois o bit GIE de habilita-

Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

o global das interrupes, posto a 1. TOS -> PC ; 1 -> GIE 1 2 RETFIE Antes da instruo: PC = x GIE = 0 Depois da instruo: PC = TOS GIE = 1

NOP

Nenhuma operao [rtulo] NOP Nenhuma operao executada, nem qualquer ag afectada. 1 1 NOP

Sintaxe: Descrio: Operao: Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

CLRWDT Sintaxe: Descrio:

Iniciar o temporizador do watchdog [rtulo] CLRWDT O temporizador do watchdog reposto a zero. O prescaler do temporizador de Watchdog tambm reposto a 0 e, tambm, os bits do registo de

Operao:

estado e so postos a um. 0 -> WDT 0 -> prescaler de WDT

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

222

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Conjunto de Instrues

Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo:

1 1 CLRWDT Antes da instruo: Contador de WDT = x Prescaler de WDT = 1:128 Depois da instruo: Contador do WDT = 0x00 Prescale do WDT = 0

SLEEP Sintaxe: Descrio:

Modo de repouso [rtulo] SLEEP O processador entra no modo de baixo consumo. O oscilador pra. O bit (Power Down) do registo Status reposto a 0. O bit (Timer Out) posto a 1. O temporizador de WDT (Watchdog) e o respectivo prescaler so

Operao:

Operando: Flag: Nmero de palavras: Nmero de ciclos: Exemplo 1:

repostos a 0. 0 -> WDT 0 -> prescaler do WDT 1 -> TO 0 -> PD 1 1 SLEEP Antes da instruo: Contador do WDT = x Prescaler do WDT = x Depois da instruo: Contador do WDT = 0x00 Prescaler do WDT = 0

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

223

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Como programar um Microcontrolador


A capacidade de comunicar, da maior importncia nesta rea. Contudo, isso s possvel se ambas as partes usarem a mesma linguagem, ou seja, se seguirem as mesmas regras para comunicarem. Isto mesmo se aplica comunicao entre os microcontroladores e o homem.

A linguagem que o microcontrolador, e o homem, usam para comunicar entre si designada por linguagem assembly. O prprio ttulo no tem um signicado profundo, trata-se de apenas um nome como por exemplo ingls ou francs. Mais precisamente, linguagem assembly apenas uma soluo transitria. Os programas escritos em linguagem assembly, devem ser traduzidos para uma linguagem de zeros e uns, de modo a que um microcontrolador a possa receber.

-> Linguagem assembly e assembler so coisas diferentes.

A primeira, representa um conjunto de regras usadas para escrever um programa para um microcontrolador, e, a outra, um programa que corre num computador pessoal que traduz a linguagem assembly para uma linguagem de zeros e uns. Um programa escrito em zeros e uns diz-se que est escrito em linguagem mquina, ou cdigo mquina.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

224

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Fisicamente, Programa representa um cheiro num disco de computador (ou na memria se estivermos a ler de um microcontrolador), e escrito de acordo com as regras do assembly, ou qualquer outra linguagem de programao de microcontroladores.

O homem pode entender a linguagem assembly, j que ela constituda por smbolos alfabticos e palavras. Ao escrever um programa, certas regras devem ser seguidas para alcanar o efeito desejado. Um Tradutor (compilador) interpreta cada instruo escrita em linguagem assembly como uma srie de zeros e uns com signicado para a lgica interna do microcontrolador.

Consideremos, por exemplo, a instruo RETURN que um microcontrolador utilizada para regressar de uma subrotina. Quando o assembler a traduz, ns obtemos uma srie de uns e zeros, correspondentes a 14 bits, que o microcontrolador sabe como interpretar.

Exemplo: RETURN 00 0000 0000 1000

O resultado desta traduo da linguagem assembly, designado por um cheiro de execuo. Muitas vezes encontramos o nome de cheiro HEX. Este nome provm de uma representao hexadecimal desse cheiro, bem como o suxo hex no ttulo, por exemplo correr.hex. Uma vez produzido, o cheiro de execuo inserido no microcontrolador atravs de um programador fsico.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

225

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Linguagem Assembly
Um programa, em Linguagem Assembly, escrito por intermdio de um processador de texto (editor), e capaz de produzir um cheiro ASCII no disco de um computador, ou em ambientes prprios como o MPLAB.

Os elementos bsicos da linguagem assembly so:

Labels (etiquetas - rtulos) Instrues Operandos Directivas Comentrios

Um Label (etiqueta/rtulo) uma designao textual (geralmente de fcil leitura) de uma linha num programa ou de uma seco de um programa para onde um microcontrolador deve saltar ou, ainda, o incio de um conjunto de linhas de um programa. Tambm pode ser usado para executar uma ramicao de um programa (tal como Goto....), o programa pode ainda conter uma condio que deve ser satisfeita, para que uma instruo Goto seja executada.

importante que uma etiqueta seja iniciada com uma letra do alfabeto, ou com um trao baixo _ (underscore). O comprimento de uma label pode ir at 32 caracteres. tambm importante que a label comece na primeira coluna.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

226

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Instrues
As instrues so especcas para cada microcontrolador, assim, se quisermos utilizar a linguagem assembly temos que estudar as instrues desse microcontrolador.

O modo como se escreve uma instruo designado por sintaxe. No exemplo que se segue, possvel reconhecer erros de escrita, dado que as instrues movlp e gotto no existem no microcontrolador PIC.

Operandos
Operandos so os elementos da instruo necessrios, para que a instruo possa ser executada. Normalmente so registos, variveis e constantes. As constantes so designadas por literais. A palavra literal signica nmero.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

227

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Comentrios
O comentrio um texto que o programador escreve no programa, am de o tornar mais claro e legvel. colocado logo a seguir a uma instruo, e deve comear com um ponto-e-vrgula ;.

Directivas
Uma directiva parecida com uma instruo mas, ao contrrio desta, independente do tipo de microcontrolador e uma caracterstica inerente prpria linguagem assembly.

As directivas servem-se de variveis, ou registos, para satisfazer determinados propsitos. Por exemplo, NIVEL, pode ser uma designao para uma varivel localizada no endereo 0x0D da memria RAM. Deste modo, a varivel que reside nesse endereo, pode ser acedida pela palavra NIVEL. muito mais fcil a um programador recordar a palavra NIVEL, que lembrar-se que o endereo 0x0D contm informao sobre o nvel.

Directiva PROCESSOR
Esta directiva deve ser escrita no incio de todos os programas. Dene o tipo de microcontrolador, para o qual o programa vai ser/est escrito. Como exemplo: Processor 16f887

Directiva EQU
Esta directiva usada para substituir um valor numrico, por um smbolo. Desta forma, a uma posio especca de memria RAM atrbuido um nome. Como exemplo: MAXIMUM EQU H25

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

228

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Isto signica que, posio de memria 0x25, atribuido o nome MAXIMUM. A cada uso da label MAXIMUM no programa, esta vai ser interpretada pelo assembler como endereo 0x25 (MAXIMUM = 0x25). Os smbolos podem ser especicados desta forma, e apenas uma vez no programa. Esta directiva usada essencialmente no nicio do mesmo.

Directiva ORG
Esta directiva especica uma posio na memria do programa, onde as instrues a seguir directiva vo ser colocadas. Como exemplo: ORG START ORG TABLE 0x100 ... ... 0x1000 ... ... Este programa comea na posio 0x100. A tabela que tem os dados, vai ser guardada na posio 0x1000. ...

Directiva END
Cada programa tem, obrigatoriamente, que ser terminado por esta directiva. Onde o compilador encontrar esta directiva, imediatamente deixa de compilar. Como exemplo: ... END ;Fim de programa

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

229

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Directiva $INCLUDE
O nome desta directiva, expressa bem o seu propsito. Durante a compilao do assembler, possibilita o programa a usar outro cheiro que est no disco do computador. Como exemplo: ... #include <p16f887.inc>

Directivas CBLOCK e ENDC


Todas as variaveis (nomes e endereos) que vo ser usados no programa, tem que ser denidos no incio do programa. Devido a esta funcionalidade, no necessrio especicar o endereo de cada variavel, mais tarde no programa. Em vez disso, apenas necessrio escrever o endereo da primeira variavel, usando a directiva CBLOCK, e listar todas as outras variaveis a seguir. O compilador automaticamente atribui, a estas variaveis, os correspondentes endereos, pela ordem como so escritas. Por m, a directiva ENDC indica o m da lista de variaveis. CBLOCK RELE STOP LEFT RIGHT ENDC ... 0x20 ; endereo 0x20 ; endereo 0x21 ; endereo 0x22 ; endereo 0x23 ; endereo 0x24

START

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

230

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Directivas IF, ENDIF e ELSE


Estas directivas so usadas, para criar os chamados blocos condicionais de um programa. Cada um destes blocos comea com uma directiva IF, e termina com a directiva ENDIF ou ELSE. Uma declarao, ou smbolo, (em parnteses), a seguir directiva IF, representa uma condio que determina qual parte do programa a ser compilada.

Se a declarao estiver correcta, ou se o valor de um smbolo igual a 1, o programa compila todas as instrues antes da directiva ELSE ou ENDIF. Se a declarao no estiver correcta, ou o valor de um smbolo igual a zero, apenas as instrues escritas depois das directivas ELSE ou ENDIF, so para compilar.

Exemplo 1: IF (VERSION>3) CALL Table_2 CALL Extension ENDIF Se o programa lanado depois da verso 3 (declarao correcta), ento, as subrotinas Table 2 e Extension so executadas. Se a declarao em parnteses falsa, (VERSION<3), as duas instrues que chamas as subrotinas so ignoradas, e no vo ser compiladas.

Exemplo 2:

Se o valor do smbolo Model igual a 1, ento as duas instrues depois da directiva IF so compiladas, bem como as instrues depois da directiva ENDIF (todas as instrues entre ELSE e ENDIF so ignoradas). De outro forma, se Model igual a 0, ento as instrues entre IF e ELSE so ignoradas, onde as instrues depois de ELSE so compiladas.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

231

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

IF

(Model) MOVFW MOVWF BUFFER MAXIMUM BUFFER1 MAXIMUM

ELSE MOVFW MOVWF ENDIF ...

Directiva BANKSEL
De maneira a aceder a um registo SFR, necessrio escolher o banco da memria RAM apropriado, usando os bits RP0 e RP1 do registo STATUS. Esta directiva usada neste caso. Como o cheiro de dados .inc contm j a lista de todos os registos, bem como o seu endereo de memria, o compilador sabe a que banco corresponde este registo. Depois de encontrar esta directiva, o compilador escolhe os bits RP0 e RP1 para o registo especicado, de forma automtica. Como exemplo: ... BANKSEL CLRF MOVLW BANKSEL MOVWF ... TRISB TRISB B01001101 PORTB PORTB

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

232

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Operadores aritmticos de assembler

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

233

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Exemplo de como escrever um Programa


O exemplo que se segue, ilustra como um programa escrito em linguagem assembly se apresenta:

Quando se escreve um programa, alm das regras fundamentais, existem princpios que, embora no obrigatrios, conveniente serem seguidos. Um deles, escrever no seu incio, o nome do programa, aquilo que o programa faz, a verso deste, a data em que foi escrito, tipo de microcontrolador para o qual foi escrito e o nome do programador.

Uma vez que estes dados no interessam ao tradutor de assembly, so escritos na forma de comentrios. Deve ter-se em ateno que um comentrio comea sempre com ponto e vrgula, e pode ser colocado na linha seguinte, ou logo a seguir instruo. Depois deste comentrio inicial ter sido escrito, devem incluir-se as directivas. Isto mostra-se no exemplo de cima.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

234

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Para que o seu funcionamento seja correcto, preciso denir vrios parmetros para o microcontrolador, tais como:

Tipo de oscilador; Se o temporizador do watchdog est ligado; e Se o circuito interno de reset est habilitado.

Tudo isto denido na directiva seguinte: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Logo que todos os elementos que precisamos tenham sido denidos, podemos comear a escrever o programa. Primeiro, necessrio denir o endereo para que o microcontrolador deve ir quando se liga a alimentao. esta a nalidade de (org 0x00). O endereo para onde um programa salta se ocorrer uma interrupo, (org 0x04). Como este um programa simples, suciente dirigir o microcontrolador para o incio de um programa com uma instruo goto Main (Main = programa principal).

As instrues encontradas em Main, seleccionam o banco 1 (BANK1) de modo a poder aceder-se ao registo TRISB, am de que o porto B seja denido como uma sada (banksel TRISB). O prximo passo seleccionar o banco de memria 0, e colocar os bits do porto B no estado lgico 1 e, assim, o programa principal ca terminado (movlw 0xFF, movwf PORTB). preciso, no entanto, um outro ciclo (loop), onde o microcontrolador possa permanecer sem que ocorram erros. Trata-se de um loop innito, que executado continuamente, enquanto a alimentao no for desligada.

Finalmente, necessrio colocar a palavra end no m de cada programa, de modo a informar o compilador de que o programa no contm mais instrues.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

235

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Ficheiros criados ao compilar um programa


Os cheiros resultantes, da compilao de um programa escrito em linguagem assembly, so os seguintes:

Ficheiro de execuo (nome_do_programa.hex) Ficheiro de erros no programa (nome_do_programa.err) Ficheiro de listagem (nome_do_programa.lst)

O primeiro cheiro contm o programa traduzido, e que vai ser introduzido no microcontrolador quando este programado. O contedo deste cheiro no d grande informao ao programador, por isso, no vai ser discutido. O segundo cheiro contm erros possveis, que foram cometidos no processo de escrita e que foram noticados pelo compilador durante a traduo. Estes erros tambm so mencionados no cheiro de listagem list. No entanto, prefervel utilizar este cheiro de erros err, em casos em que o cheiro lst muito grande e, portanto, difcil de consultar. O terceiro cheiro o mais til para o programador. Contm muita informao, tal como o posicionamento das instrues e variveis na memria e a sinalizao dos erros.

No incio de cada pgina, encontra-se informao acerca do nome do cheiro, data em que foi criado e nmero de pgina. A primeira coluna, contm o endereo da memria de programa, onde a instruo mencionada nessa linha, colocada. A segunda coluna, contm os valores de quaisquer smbolos denidos com as directivas: SET, EQU, VARIABLE, CONSTANT ou CBLOCK. A terceira coluna, tem, o cdigo da instruo que o PIC ir executar. A quarta coluna contm instrues assembler e comentrios do programador. Possveis erros so mencionados entre as linhas, a seguir linha em que o erro ocorreu.

No m do cheiro de listagem, apresentada uma tabela dos smbolos usados no programa. Uma caracterstica til do cheiro list a apresentao de um mapa da memria utilizada. Mesmo no m, existe uma estatstica dos erros, bem como a indicao da memria de programa utilizada e da disponvel.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

236

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

237

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

MPLAB
O MPLAB, um pacote de programas que correm no Windows e que tornam mais fcil escrever ou desenvolver um programa. Pode descrever-se ainda melhor, como sendo um ambiente de desenvolvimento para uma linguagem de programao normalizada, e destinado a correr num computador pessoal (PC). Anteriormente, as operaes incidiam sobre uma linha de instruo e contemplavam um grande nmero de parmetros, at que se introduziu o IDE Integrated Development Environment (Ambiente Integrado de Desenvolvimento) e as operaes tornaram-se mais fceis, usando o MPLAB. Mesmo agora, as preferncias das pessoas divergem e alguns programadores preferem ainda os editores standard e os intrpretes linha a linha. Em qualquer dos casos, o programa escrito legvel e uma ajuda bem documentada est disponvel.

Instalando o programa - MPLAB


O MPLAB compreende vrias partes:

Agrupamento de todos os cheiros do mesmo projecto, num nico projecto (Gestor de Projecto) Escrever e processar um programa (Editor de Texto) Simular o funcionamento no microcontrolador do programa que se acabou de escrever (Simulador)

Alm destes, existem sistemas de suporte para os produtos da Microchip, tais como o PICSTART Plus, ICD2 (In Circuit Debugger - Deteco de erros com o microcontrolador a funcionar) e o Pickit2.

Os requisitos mnimos para um computador que possa correr o MPLAB, so:

Computador PC com microprocessador 486 ou superior Microsoft Windows 3.1x, Windows 95 ou verses mais recente do sistema operativo Windows. Placa grca VGA 8MB de memria (32MB recomendados) 200 MB de espao no disco rgido Rato

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

238

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Antes de iniciarmos o MPLAB, temos primeiro que o instalar. A instalao o processo de copiar os cheiros do MPLAB para o disco duro do computador, a partir do cheiro de instalo disponivel do CD, ou da pgina internet do fabricante. Existe uma opo em cada nova janela que permite regressar anterior. Assim, os erros no constituem problema e, o trabalho de instalao, torna-se mais fcil. Este modo de instalao comum maioria dos programas Windows. Primeiro, aparece uma janela de boas vindas, a seguir pode-se escolher entre as opes indicadas e, no m do processo, obtm-se uma mensagem que informa de que o programa est instalado e pronto a funcionar.

Depois de clicar em Finish, a instalao do MPLAB est terminada.

Clicar no icon do MPLAB, de maneira a iniciar o programa.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

239

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

240

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

241

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Como pode ver-se, o aspecto do MPLAB o mesmo da maioria dos programas Windows. Perto da rea de trabalho existe um menu (faixa azul em cima, com as opes File, Edit, etc.), toolbar (barra com guras que preenchem pequenos quadrados), e a linha de status no fundo da janela. Assim, pretende-se seguir uma regra no Windows, que tornar tambm acessveis por baixo do menu, as opes usadas mais frequentemente no programa. Deste modo, possvel aced-las de um modo mais fcil, e tornar o nosso trabalho mais rpido. Ou seja, aquilo que est disponvel na barra de ferramentas, tambm est disponvel no menu.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

242

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

A implementao de um PROJECTO
Seguir os seguintes passos, para preparar o programa a carregar no microcontrolador:

1. Criar um Projecto 2. Escrever o Programa 3. Compilar

De maneira a criar o Projecto, necessrio clicar na opo PROJECT, e depois PROJECT WIZARD. Uma janela de boas vindas aparece.

Clicar em NEXT, e escolher o microcontrolador que se vai usar.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

243

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

No m, atribuido um nome ao projecto, que normalmente indica o objectivo, e contedo, do programa escrito. O projecto dever ser movido para a pasta pretendida.

Documentos contidos no Projecto, no tem necessriamente que ter sido escritos no MPLAB. Documentos

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

244

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

escritos por outro programa, tambm podem ser includos no Projecto.

Clicar FINISH para completar o projecto. A janela em si, j contm parmetros do Projecto.

Escrever um novo Programa


Quando um projecto criado, uma janela como a da gura abaixo, dever aparecer:

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

245

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

O prximo passo escrever um programa. Abrir um novo documento em FILE > NEW. O editor de texto do MPLAB vai abrir-se.

Gravar o documento na pasta do projecto, usando os comandos FILE > SAVE, e dar-lhe o nome pretendido.

Depois de XPTO.asm ter sido criado, dever ser incluido no projecto, fazendo clique direito na opo SOURCE FILES, na janela xxxx.MCW. A seguir, uma pequena janela dar duas opes, das quais ser seleccionada ADD FILES.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

246

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Clicando nessa opo, abre outra janela que contm as pastas dos disco rgido. Escolher a pasta do projecto, e o cheiro XPTO.asm. Ver gura abaixo.

O primeiro programa
A escrita do programa no pode ser iniciada, antes destas operaes anteriores terem sido realizadas. O programa abaixo um exemplo de como se faz:

;Program to set port B pins to logic one (1). ;Version: 1.0 Date: April 25,2007 MCU: PIC16F887 ;***** Declaration and conguration of the microcontroller ***** PROCESSOR 16f887 #include p16f887.inc __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

247

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

;***** Variable declaration ***** Cblock endc 0x20 ; First free RAM location ; No variables

;;***** Program memory structure ***** ORG goto ORG goto Main banksel clrf banksel movlw movwf Loop goto End TRISB TRISB PORTB 0xFF PORTB Loop 0x00 Main 0x04 Main ; Reset vector ; After reset jump to this location ; Interrupt vector ; No interrupt routine ; Start the program ; Select bank containing TRISB ; Port B is congured as output ; Select bank containing PORTB ; W=FF ; Move W to port B ; Jump to label Loop

O programa deve ser escrito na janela xxxx.ASM. Quando completada a escrita, o programa dever ser compilado para um cheiro executavel de formato HEX, usando a opo PROJECT > BUILD ALL, e uma nova janela vai aparecer. A ltima frase a mais importante, porque diz se a compilao foi bem sucedida, ou no. Se houver dvidas, a mensagem BUILD SUCCEEDED signica que no houve nenhum erro.

Em caso de ocorrncia de erro, necessrio fazer duplo clique em cima da linha de erro, na janela Output, que automaticamente mudada a janela, e o cursor ser posicionado na linha do programa que contm o erro.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

248

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Simulador
O simulador faz parte do ambiente do MPLAB, e que d uma maior perspectiva do funcionamento do microcontrolador. Uma simulao uma tentativa de imitar uma hipottica situao da vida real, para que possa ser estudada e compreender como funcionar.

, tambm, atravs do simulador que se faz a monitorizao das variaveis, registos e estado dos pinos das portas. Em programas complexos que usam Temporizadores, diferentes condies e pedidos, especialmente matemticas, o simulador pode ser de grande ajuda.

Tal como o microcontrolador, o simulador executa as instrues uma-a-uma, linha-por-linha, e faz o refrescamento constante do estado de todos os registos. Desta maneira, o programador simplesmente monitoriza a execuo do programa.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

249

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

No m de escrever um programa, o programador dever primeiro test-lo no simulador, antes de o usar no ambiente real.

O simulador activado clicando em DEBUGGER > SELECT TOOL > MPLAB SIM, como ilustra a gura. Como resultado, vrios cones do simulador aparecem. O seu signicado o seguinte:

Inicia a execuo do programa velocidade mxima. O simulador executa o programa velocidade mxima, at ser parado clicando no cone abaixo.

Faz pausa execuo do programa. O programa pode continuar passo-a-passo, ou velocidade mxima outra vez.

Inicia a execuo do programa velocidade congurada. A velocidade de execuo ajustada no men Debugger > Settings > Animation > Realtime Updates.

Inicia a execuo do programa passo-a-passo. As instrues so executadas uma depois da outra. Clicando no cone, possibilita a entrada nas subrotinas.

Este cone tem a mesma funo do anterior, excepto que d a possibilidade de saltar as subrotinas.

Faz Reset ao microcontrolador. Clicando neste cone, o Contador de Programa posicionado no incio do programa, e a simulao pode iniciar.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

250

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Como no ambiente real, a primeira coisa a ser feita o RESET ao microcontrolador, usando a opo DEBUGGER > RESET, ou clicando no cone respectivo. Como consequncia, uma linha verde posicionada no incio do programa, e o Contador de Programa PCL limpo para zero. Ver imagem abaixo com os SFRs.

Aparte dos SFRs, tambm se pode ver os Registos normais. Clicando em VIEW > FILE REGISTERS, uma janela onde estes esto, vai aparecer.

Se o programa tem variaveis prprias, tambm bom poder ver o seu valor. Clicando em VIEW > WATCH, aparece uma janela onde podem ser acrescentadas estas variaveis.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

251

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Como Programar um Microcontrolador

Aps todas as variaveis e registos de interesse estarem disponiveis, na rea do simulador, o processo simples. A prxima instruo pode ser passo-a-passo, ou outro tipo. As instrues passo-a-passo podem ser executadas, tambm, atravs da tecla <F7> no teclado. Normalmente, todas as funes importantes, tem j teclas atribuidas.

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

252

www.mecatronicadegaragem.blogspot.com
microcontroladores PIC Bibliografia

Bibliograa
Microchip: PIC16F886. www.microchip.com www.microchipc.com Iovine, John. PIC Microcontroller Project Book, 2000 Microchip. PICmicro - Introduction to Programming in Assembler for PIC16 Products, 701 PIC. Microchip Masters, 2003 Predko, Mike. PICmicro microcontroller Pocket Reference. 2001 MikroElektronika: http://www.mikroe.com/en/ Stevens, Fred. Getting Started with PIC microcontrollers, 1997 Katzen, Sid. The Quintessential PIC Microcontroller, 2000

ant nio s rgio se na ww w.se na en g.com :: pr ojec t os e s olu es em ele c t r n i c a + 351 .96 70 33 20 9

253

www.mecatronicadegaragem.blogspot.com microcontroladores antnio srgio sena PIC

Introduo

CONTACTOS

A ntnio Srgio Sen a, E n g.


a s e n a @ s e n a e n g.c o m

w w w. se n a e n g.c o m :: pro je c t o s e solues em electr nica in fo @ s e n a e n g.c o m +3 5 1 . 9 6 7 0 33 2 0 9 +3 5 1 . 2 3 6 2 15 2 5 6 ( fa x)

w ww. senaen g.com io sen a es em elec t r nic a antnio srg :: solu + 3 51. 9670 33 20 9 ng .co m : : s olu es em elec t r nic a e m i c r o c o n t r o l a d o r e s w ww.sen ae + 351.9 67 03 32 09

254