Escolar Documentos
Profissional Documentos
Cultura Documentos
Micro PIC
Micro PIC
Introduo
Vivemos na era da automao e, como prova disto, basta olhar para o lado e observar que os eletrodomsticos fazem quase todos os servios especializados sozinhos, assim como ocorre nos caixas eletrnicos quando desejamos sacar algum dinheiro ou nas linhas de produo das fbricas onde a automatizao tem incrementado a produo e reduzindo os custos. Esta revoluo silenciosa seria impensvel caso no fosse o desenvolvimento recente da microeletrnica e dos dispositivos digitais que possibilitam, dia a dia, a criao de transistores menores, mais rpidos e mais confiveis. Assim, possvel criar dispositivos digitais cada vez melhores e com mais funcionalidades. Entre os dispositivos digitais, um dos que mais vem chamando a ateno pela sua versatilidade, aplicabilidade e funcionalidade so os microcontroladores. Neste curso iremos abordar os conceitos bsicos do hardware e da linguagem de programao Assembly dos microcontroladores PIC, da Microchip. O Criatronics O Criatronics, Centro de Robtica, Inteligncia e Automao, foi fundado no ano de 2001 por pesquisadores da rea da Fsica e Computao. Sua rea de atuao o desenvolvimento de projetos com tecnologias avanadas e de cursos que abrangem as reas de Robtica e Automao. Pr-requisitos para o curso Este curso pode ser visto por estudantes que nunca tiveram um contato prvio com a eletrnica, porm, desejvel que o aluno j possua conhecimentos de eletrnica analgica e digital bsica sobretudo conhecimentos em circuitos RC e polarizao de transistores bipolar e mosfet.
2.
O que um Microcontrolador?
Histrico Em 1969, uma equipe de engenheiros da INTEL, sob a responsabilidade do engenheiro Marcian Hoff, recebeu a misso de construir calculadoras com um nmero reduzido de circuitos integrados. Hoff, que j tinha uma boa experincia no projeto de computadores, props uma maneira fundamentalmente diferente de construir as calculadoras. Segundo ele, era possvel construir uma mquina capaz de mudar sua funcionalidade com base em um programa armazenado em uma memria. Sendo assim, Hoff, juntamente com o engenheiro Frederico Faggin, implementaram para a INTEL o primeiro microprocessador. Desde ento os microprocessadores no pararam de evoluir. Porm, os microprocessadores no atendiam as necessidades dos engenheiros quando era necessrio um processamento em sistemas embarcados, como celulares, aparelhos de som, televiso, controle de motores, etc.
Aula 01
Pg. 1
Para suprir estas necessidades foi lanado o primeiro microcontrolador pela Texas em 1974, o TMS 1000 de 4 bits, que inclui RAM, ROM e suporte a I/O em um nico chip, permitindo o uso sem qualquer outro chip externo. Em 1977 a Intel lana o microcontrolador 8048, que possua memria de programa externa (ROM), e memria de dados interna (RAM). Em 1980 nasceu o 8051, com vrios perifricos, 4K de memria de programa e 128 bytes de memria de dados, possibilitando o uso sem a necessidade de chips externos. Tem encapsulamento de 40 pinos, tecnologia HMOS e ainda hoje largamente utilizado. Atualmente h diversos fabricantes no mercado de microcontroladores, por exemplo, a ATMEL, a Microchip, a HOLTEK e a Motorola. Aplicaes O microcontrolador um componente bastante verstil, podendo atravs de sua programao ter diversas aplicaes. O microcontrolador pode realizar desde o controle da velocidade e posio de um guindaste at o controle das lmpadas decorativas de uma rvore de Natal. Basicamente, o modo de operao do microcontrolador ir variar de acordo com a necessidade de seu cliente. Entre outras aplicaes de um microcontrolador podemos citar automao industrial, controle de telefones celulares, auto-rdios, fornos de microondas e videocassetes. Alm disso, a tendncia da eletrnica digital de se resumir a microcontroladores e a chips que concentram grandes circuitos lgicos, como os PLDs (Programmable Logic Devices). Para a maioria dos sistemas dedicados, o microcontrolador apresenta-se como a soluo mais vivel em funo do baixo custo e facilidade de uso. Logo, o microcontrolador, hoje em dia, um elemento indispensvel para o engenheiro eltrico, eletrnico ou ainda para o tcnico de nvel mdio da rea e hobbistas, em funo de sua versatilidade e da enorme aplicabilidade. Microcontrolador versus Microprocessador Um microcontrolador difere de um microprocessador em vrios aspectos. O primeiro e o mais importante a sua funcionalidade. Para que um microprocessador possa ser usado outros componentes devem-lhe ser adicionados, tais como memria e componentes externos para receber e enviar dados. Em resumo, isso significa que o microprocessador o verdadeiro corao do computador. Por outro lado, o microcontrolador foi projetado para ter tudo num s CI . Nenhum outro componente externo necessrio para suas aplicaes uma vez que todos os perifricos necessrios j esto embutidos nele. Assim, poupamos tempo e espao na construo dos dispositivos. Do ponto de vista da aplicao, a principal diferena entre o microcontrolador e o microprocessador que, para controle de sistemas embarcados, necessrio que o controlador seja dedicado a um pequeno conjunto de tarefas. O microcontrolador construdo para realizar o controle do ambiente
1
CI Circuito Integrado Dispositivo microeletrnico que consiste de transistores (podendo chegar a milhares) e outros
componentes interligados capazes de desempenhar diversas funes. Suas dimenses so extremamente reduzidas e estes componentes so fabricados em uma pastilha de material semicondutor em comum. Aula 01 Pg. 2
externo e, por isso, possui circuitos eltricos mais adequados para conectar-se com o ambiente, alm de ter um custo bem menor que o microprocessador. Essa caracterstica o torna ideal para sua utilizao em sistemas embarcados, como em detectores de fumaa, aeronaves e brinquedos, por exemplo. J o microprocessador construdo para otimizar o processamento de dados com o auxlio de diversos componentes externos, como memrias, co-processadores, dispositivos perifricos, etc., sendo sua aplicao mais voltada para tarefas que exijam a execuo de diferentes programas e um alto volume de processamento de dados, como no computador, por exemplo.
3.
A Microchip
A microchip uma empresa especializada em desenvolvimento de dispositivos para sistemas embarcados. Em sua linha de produtos podemos encontrar os microcontroladores PIC (MCUs), dsPIC controladores para sinais digitais, dispositivos de segurana KeeLoq, diversos produtos de interface analgica, memrias seriais EEPROMs, etc.
4.
Os microcontroladores PIC so considerados os que apresentam a melhor relao custo/benefcio do mercado. Sua arquitetura RISC (no entraremos em detalhes neste curso sobre os tipos de arquitetura) proporciona um set de apenas 35 instrues para a maioria dos modelos (famlia MidRange ), sendo assim um dispositivo de fcil programao. A execuo de suas instrues tambm mais rpida que outros tipos de microcontroladores que utilizam a arquitetura CISC, como o famoso e ainda muito utilizado 8051. A famlia de microcontroladores PIC bastante ampla, tendo diversos modelos com diversas funcionalidades, conforme poderemos observar na prxima aula. Nesse curso todos os projetos sero com o PIC16F84A ou PIC16F628A no encapsulamento PDIP (ver figura 1). Ao longo do curso aprenderemos as funcionalidades de cada pino deste CI (ver figura 2).
2 3
SET - Conjunto MidRange Os microcontroladores PIC esto disponveis em trs famlias: Low-End, MidRange, High-End. A famlia Low-End
tem um subset reduzido de instrues, sem tratamento de interrupes, instrues de 12 bits, menor memria RAM disponvel e sem I/O avanados, logo, esta famlia no deve ser utilizada para novas aplicaes ou para o aprendizado. A famlia High-End tem instrues de 16 bits, acesso a todos os registradores diretamente, mltiplos vetores de interrupo e no recomendado para o aprendizado. A famlia MidRange a mais comum no mercado e possui as caractersticas mais adequadas para o ensino, logo, durante o curso trabalharemos com o PIC 16F84A, pertencente da famlia MidRange. Aula 01 Pg. 3
5.
Encapsulamento e Pinagem
O PIC est disponvel no mercado em diversos encapsulamentos (inclusive SMD). Por ser mais fcil de realizar testes e prototipagens, utilizaremos o PIC no encapsulamento PDIP de 18 pinos (ver figura 1).
Pino OSC1 / CLKIN OSC2 / CLKOUT /MCRL RA0 RA1 RA2 RA3 RA4 / T0CKI RB0 / INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 Vss Vdd
Aula 01
PDIP 16 15 4 17 18 1 2 3 6 7 8 9 10 11 12 13 5 14
Descrio Entrada do oscilador / Entrada de clock externo Sada do oscilador / Sada para clock externo Master Clear Reset PortA - Porta bi-direcional de entrada e sada
pode ser selecionado como entrada de clock para o TMR0. A sada do tipo "open drain" PortB - Porta bi-direcional de entrada e sada Estas portas podem ser configuradas individualmente com pull-ups nas entradas RB0 pode tambm ser configurada como entrada para interrupo externa RB4:RB7 podem ser configurados como entrada para interrupo por mudana de nvel Referncia do Terra Alimentao positiva
Pg. 4
6.
As portas de entrada e sada so os canais de comunicao entre a central de processamento e o mundo fsico. Estas portas podem ser de sada, ou seja, podem controlar dispositivos externos como rels, chaves, LEDs, ou podem ser de entrada e receber os sinais vindo de sensores e botes. Quem ir informar que pinos sero entradas e que pinos sero sadas ser o programador atravs do software. O PIC16F84A tem 13 pinos de entrada e sada (I/O pins) que podem ser individualmente configurados como entrada ou sada a depender do software. Alguns destes pinos podem ser multiplexados com outras funes do dispositivo, como: Interrupes externas; Interrupo por mudana de estado em alguns pinos; Entrada do clock para o contador, conforme veremos melhor nas prximas aulas. Os 13 pinos de I/O esto divididos em dois blocos, com diferentes caractersticas eltricas: PortA; PortB. O PortA tem 5 pinos de I/O (RA4, RA3, RA2, RA1 e RA0) e o PortB, 8 (RB7, RB6, RB5, RB4, RB3, RB2, RB1 e RB0), totalizando 13 pinos de I/O. PortA (RA3:RA0) A figura 3 mostra o esquema eltrico dos pinos de I/O RA3:RA0. Como o foco deste curso no o hardware, no iremos nos aprofundar na eletrnica interna do PIC, porm h alguns detalhes que devem ser observados.
Aula 01
Pg. 5
Podemos observar que a sada (I/O pin) est conectado a dois transistores mosfet e a um buffer TTL
de entrada. Isto indica que a impedncia de sada destes pinos baixa quando o pino est configurado como sada. J a impedncia de entrada alta quando configurado como entrada. Na prtica isto indica que devemos ter cuidado ao configurar um pino do PIC como sada, pois, um erro na ligao eltrica pode ocasionar a queima do pino devido baixa impedncia de sada (e consequentemente alta corrente de sada do pino de I/O). PortA (RA4) Um detalhe do RA4 (figura 4) que este no tem o transistor ligando o pino RA4 ao Vdd. Com isso devemos ter ateno ao utilizar este pino como sada, pois este do tipo open drain e, sendo assim, no possvel gerar 5V neste pino sem o auxlio de componentes externos auxiliares.
6
Na prtica temos que, se ligarmos um LED deste pino ao Terra (referncia) sem qualquer circuito externo, mesmo que o PortA 4 (pino RA4) esteja configurado como sada e o programa coloque este pino em nvel lgico 1, o LED nunca acender (figura 5). A principal utilidade de se ter um pino do tipo open-drain a possibilidade de conectar vrios dispositivos open-drain em uma nica linha fsica sem o risco de queimar algum dispositivo.
MOSFET - Metal Oxide Silicon Field Effect Transistor, um transistor de efeito de campo feito de silcio dopado com xido
metlico.
5
BUFFER TTL Seguidor de tenso formado por circuitos digitais TTL que tem como principal caracterstica a utilizao de sinais
de 5 volts para nveis lgico altos. Seus circuitos integrados so constituidos basicamente de transistores bipolares, o que os torna poucos sensveis a eletricidade esttica.
6
OPEN DRAIN O terminal do dreno do transistor de sada est desconectado. A conexo do transistor de sada ao Vcc dever
RA4
R1 1k D1 LED1
Q1
Figura 5: Esquema eltrico da ligao de um LED no RA4: este LED nunca acender
PortB (RB7:RB0) Uma caracterstica interessante do PortB a possibilidade da configurao de um pull-up fraco via software quando o pino est configurado como entrada. Isto permite que, por exemplo, um boto seja ligado no PortB de uma maneira bem mais simples que no PortA. O PortB tambm capaz de drenar e suprir mais corrente que o PortA, sendo bastante utilizado para o acionamento de LEDs e displays.
7
PULL UP Resistor utilizado na entrada de circuitos digitais para definir o nvel lgico quando a entrada estiver desconectada ou
A nica diferena entre os pinos RB7:RB4, RB3:RB1 e RB0 so os tipos de interrupes que cada um deste conjunto de pinos tem. As interrupes estudadas na aula 6.
7.
O clock quem d o sinal de partida para o microcontrolador e d o ritmo de execuo dos comandos e este obtido a partir de um componente externo chamado oscilador. Se imaginarmos que um microcontrolador um relgio de sala, o nosso clock corresponderia ao pndulo. Um ciclo de instruo executado a cada 4 ciclos de clock no PIC (gerados por osciladores ou circuitos geradores de clock externos), ou seja, caso esteja utilizando um oscilador de 4MHz, haver a execuo de um ciclo de instruo a cada 1s, conforme podemos observar abaixo: Freqncia do oscilador: 4MHz; Freqncia da execuo das instrues: 4MHz / 4 = 1MHz; Perodo de execuo das instrues: 1 / 1MHz = 1s. Se estivssemos utilizando um oscilador de 20MHz, os clculos seriam: Freqncia do oscilador: 20MHz; Freqncia da execuo das instrues: 20MHz / 4 = 5MHz; Perodo de execuo das instrues: 1 / 5MHz = 0,2s (200ns). A maioria dos comandos do PIC executada com apenas um ciclo de instruo, a menos que seja necessrio um teste condicional ou modificao no PC (ver detalhes nas prximas aulas).
Aula 01
Pg. 8
8.
Osciladores
H basicamente dois tipos de osciladores para gerar o clock que utilizamos em nossos projetos: Cristais; RC. Os osciladores mais utilizados nos projetos do Criatronics so os cristais de 20MHz pela preciso necessria e rpido processamento de dados, apesar de termos mais problemas de instabilidade inicial no funcionamento sendo necessrio um maior esforo no design da PCI . O PIC 16F84A pode funcionar em 4 modos diferentes de operao no que se diz respeito aos osciladores. A escolha do modo de operao deve ser feita no software de gravao antes da gravao do PIC, como veremos no final desta aula. Os modos possveis so: LP Low Power Crystal / resonador cermico; XT Cristal / resonador cermico; HS High Speed Crystal / resonador cermico; RC Resistor/Capacitor. Configurao LP, XT ou HS utilizando cristal Neste modo o cristal conectado aos pinos OSC1 e OSC2, como mostrado na figura 8.
8
Na Tabela 2 seguem os valores recomendados para C1 e C2. Quanto maior a capacitncia, maior a estabilidade do oscilador, porm h um aumento tambm no tempo de start-up. A resistncia Rs pode ser necessria caso hajam problemas na oscilao do cristal (para maiores detalhes consultar os dados tcnicos do cristal a ser utilizado), porm, nos nossos projetos no h a necessidade de utilizar esta resistncia.
PCI Placa de Circuito Impresso pea fundamental na montagem de qualquer conjunto eletrnico. Ela costuma ter a cor verde
(mscara de solda), contudo, tambm existem nas cores azul e marrom, por exemplo. Estas placas fazem a ligao fsica entre componentes eletrnicos, por exemplo, processadores, capacitores, chips, etc. Aula 01 Pg. 9
Modo LP XT HS
Frequncia 32 kHz 200 kHz 100 kHz 2 MHz 4 MHz 4 MHz 20 MHz
Configurao LP, XT ou HS utilizando um gerador de clock externo Caso o circuito possua um gerador de clock comum para os dispositivos digitais, recomendada a utilizao da montagem conforme a figura 9.
Figura 9: Configurao para utilizao do PIC com um circuito gerador de clock externo
Configurao RC Em aplicaes onde a preciso do clock no determinante no projeto, pode-se optar por uma configurao mais simples e barata, utilizando apenas um resistor e um capacitor, conforme mostrado na Figura 10.
Cext 20pF. A freqncia de oscilao estar em funo dos valores de Rext, Cext, Vdd, Vss, tipo do capacitor e temperatura de operao. Tendo assim tantas variveis de influncia significante, fica quase impossvel manter um alto grau de preciso utilizando este tipo de oscilador.
Aula 01
Pg. 10
9.
Resets
9
Estudaremos neste tpico trs tipos de Resets que o PIC diferencia: Power-on Reset; MCRL Reset; WDT Reset. No sero vistos os resets MCRL e WDT ocorridos durante o modo SLEEP Power-on Reset Um pulso de reset gerado toda vez que o microcontrolador alimentado (a tenso em Vdd detectada entre 1.2V e 1.7V), eliminando assim a necessidade de criao de um circuito eletrnico externo mais elaborado de reset atravs do pino MCRL. Power-up timer Caso ativado antes da gravao, o power-up timer mantm o microcontrolador resetado durante 72ms aps a sua alimentao, garantindo assim que a alimentao j estar estvel quando o microcontrolador comear a executar as suas instrues. Oscillator Start-up timer Aps o Power-up timer temos ainda o Oscillator Start-up timer, que espera 1024 ciclos do oscilador para estabilizar a operao do cristal antes do incio da execuo do programa.
10
do microcontrolador.
Tempo de subida lento de Vdd Porm, se mesmo aps a ativao do Power-up o circuito ainda apresente problemas devido a um eventual tempo excessivo que o circuito de alimentao precise para suprir o CI com a tenso Vdd adequada, pode ser necessria a criao de um circuito externo para gerao de um pulso de Reset atravs do pino MCLR.
9
RESET Reinicializao do microprocessador SLEEP Modo do PIC de espera. Neste modo o PIC tem um baixo consumo de energia. Pg. 11
10
Aula 01
MCLR Reset O MCLR (Master Clear Reset) um modo de reset que pode ser facilmente acessado pelo usurio atravs do pino MCLR do PIC. O MCLR pode ser til quando necessrio reiniciar o microcontrolador atravs de um circuito externo de controle ou quando o Power-on Reset no inicializa corretamente o microcontrolador. A qualquer momento em que este pino estiver no nvel lgico 0, o circuito estar resetado. Para que as instrues sejam executadas, necessrio manter esse pino constantemente em Vdd. WDT Reset O WDT (Watchdog Timer) um oscilador RC interno ao CI que no requer nenhum componente externo para seu funcionamento. O WDT estar operando independente de qualquer oscilador externo que o PIC esteja utilizando para execuo dos comandos, ou seja, ele funciona mesmo que o oscilador principal do PIC tenha parado de funcionar. O WDT pode ser ativado no programa de gravao do CI e, quando isto feito, o circuito do WDT ir gerar um pulso de reset toda vez que o tempo do WDT for atingido (18ms para operao sem prescaler ). Em nossos projetos no utilizaremos o WDT, deixando-o sempre desabilitado.
11
11
Aula 01
As funcionalidades de cada item enumerado na figura esto relacionadas a seguir: 1. Microcontrolador PIC 16F84A; 2. Cristal de 4 MHz; 3. Buzina ligada ao RB5; 4. Leds ligados ao PortB; 5. Display de 7 segmentos ligado ao PortB; 6. Rel ligado ao RB7 com conectores de potncia; 7. Led infravermelho (IR) ligado ao RB6; 8. Botes ligados PortA e boto de reset ligado ao MCLR; 9. Sada para conector ligado PortA; 10. Sada para conector ligado ao PortB; 11. Sada para conexo da placa a um display LCD;
Aula 01 Pg. 13
12. Jumper para definio: o PortB estar ligado aos LEDs ou ao display 7-seg; 13. Jumpers para definio: o RB5 estar ligado ou no buzina; o RB6 estar ligado ou no ao LED IR; o RB7 estar ligado ou no ao rel eletromecnico; 14. Chave para definio: a placa for gravar um programa a partir do computador ou executar um programa j previamente gravado; 15. Conector para interface com o computador atravs do padro serial RS-232; 16. Conector para alimentao da placa (12 Vdc); 17. Regulador de tenso (5 Vdc).
12
MPLAB Programa onde sero desenvolvidos, compilados e simulados os projetos em Assembly. Pg. 14
Aula 01
MPLAB C30 O MPLAB IDE ser estudado com mais detalhes adiante. O MPLAB C18 e C30 so compiladores para a linguagem C, que no sero estudados nesse curso. Hardware Os principais hardwares disponveis pela Microchip para o desenvolvimento so: MPLAB ICE MPLAB ICD Estes dois dispositivos so utilizados para a simulao e emulao do programa j quando este estiver gravado no prprio PIC, ou seja, permitem verificar a execuo do programa com o hardware final (com o PIC montado na placa onde este ser aplicado).
e simuladores.
13
Debugger Programa de computador utilizado para verificar os erros de sintaxe, simular e compilar o programa. Pg. 15
Aula 01
S ento ser a hora de realizar a programao. Antes de iniciar, necessrio escolher qual a linguagem de programao que ser utilizada. Em nosso curso, aprenderemos a linguagem de baixo nvel Assembly, que diretamente convertido em linguagem de mquina. Outra opo a linguagem C para PIC, que uma linguagem de nvel mdio (mais fcil de programar, porm gera cdigos menos enxutos). A escolha da linguagem de programao dever estar em funo da complexidade do sistema, memria disponvel e eficincia do programa desejado. Criando o fluxograma (Lgica de programao) O fluxograma utiliza-se de smbolos especficos para a representao de algoritmos (seqncia de passos que devem ser executados para se alcanar um determinado objetivo). Abaixo segue uma simbologia tradicionalmente utilizada.
Processo
Deciso
Conector
Terminal
Setas de Fluxo
O fluxograma ajuda durante a programao e manutenes futuras do programa, facilitando, sobretudo, no entendimento do sistema. Esta etapa do projeto comumente desprezada por diversos programadores, porm esta prtica altamente no recomendada. Escrevendo as linhas de cdigos (Implementao) As linhas de cdigos devem ser digitadas de forma clara, seguindo fielmente o fluxograma, com rtulos (labels) e sempre que possvel, comentrios, alm de utilizar as cores disponveis no MPLAB para distinguir os diversos tipos de dados (cdigos, nmeros, comentrios, labels, etc., cada coisa de uma cor). Isto facilita bastante o entendimento quando outro programador ler seu programa, ou mesmo quando voc for fazer uma manuteno futura em seu prprio programa. Compilao do programa A compilao consiste na converso das linhas de programa digitadas pelo programador para o cdigo de mquina. Durante a compilao, o compilador tambm verifica eventuais erros de sintaxe ou inconsistncias no programa. Ateno: o compilador no verifica se a lgica empregada no programa est correta! Simulao e ajustes do programa O MPLAB j tem integrado uma ferramenta de simulao que deve ser utilizado sempre que um cdigo for escrito. O compilador no ir detectar os erros de lgica no programa, logo, a simulao necessria para verificar se seu programa est fazendo exatamente aquilo que voc queria que ele fizesse (segundo o documento de requisitos). As falhas na programao devero ser removidas neste momento.
Aula 01
Pg. 16
Gravao do programa A gravao do programa no microcontrolador o ltimo passo do processo e onde deve ser verificado se a utilizao do microcontrolador est adequada para sua aplicao final. A gravao do programa pode ocorrer de maneira integrada com a simulao caso o usurio esteja utilizando o MPLAB-ICD, onde o circuito simulado na prpria placa, on-line. Cada uma das etapas citadas pode ser bastante complexa e consumir muito mais tempo que o previsto inicialmente. Neste curso iremos abordar apenas as etapas posteriores gerao do fluxograma, uma vez que a aquisio e anlise de requisitos, planejamento e lgica de programao, cada uma, tm por si s, assuntos suficientes para novos cursos.
Aula 01
Pg. 17
16. Memrias
A memria um componente do microcontrolador indispensvel, responsvel pelo armazenamento de todos os dados do sistema (quando o sistema no possui memrias auxiliares). Os microcontroladores, em sua maioria, possuem uma pequena quantidade de memria construda internamente no dispositivo. Fazendo uma analogia a um supermercado, os dados so armazenados em prateleiras com endereos especficos. Quando o processador quer saber o que tem em certa prateleira, ele acessa o endereo da prateleira e rapidamente tem acesso ao dado l disponvel. Junto com o endereo, o processador tambm envia um sinal informando se quer apenas ler (read) o que est l naquele endereo ou se ele quer deixar algum dado escrito naquele endereo (write). imPortAnte ressaltar ainda que no PIC a memria dividida em regies com diferentes finalidades. Por exemplo, uma das regies pode ser alocada somente para armazenar o programa a ser executado pelo processador, por isso chamada memria de programa. Outra regio alocada para armazenar temporariamente os dados enquanto o programa est sendo executado, por isso chamada memria de dados. Temos ainda a regio chamada de pilha (do ingls, stack) e a regio de memria EEPROM, conforme veremos a seguir.
exemplo, os dados existentes nos endereos 0020h, 0420h, 0820h, 0C20h, 1020h, 1420h, 1820h e 1C20h so os mesmos. Logo, no h a necessidade de tentar enderear a partir do endereo 03FFh. O endereo inicial de processamento o 0000h, ou seja, aps um Reset (inclusive o Power-on Reset) o microcontrolador ir executar a instruo gravada no endereo 0000h. O vetor interrupo14 o 0004h (conforme veremos aplicao nas prximas aulas).
14
Aula 02
A memria de dados est dividida em dois bancos de memria (Bank0 e Bank1). Deveremos indicar no software qual o banco que estamos trabalhando antes de operar com os registradores, conforme veremos nas prximas aulas. Os SFRs podem ser divididos em dois blocos: Registradores para controle das funes essenciais; Registradores para controle das funes dos perifricos. So nos registradores para controle das funes essenciais que so definidos, por exemplo, quais os pinos do PIC sero entrada, quais sero sada, se houve ou no a ocorrncia de um zero aps a ltima operao matemtica, se houve a ocorrncia de um reset, se as interrupes esto ativadas, etc. So nos registradores para controle das funes dos perifricos que configuramos, por exemplo, os parmetros de uma converso analgico/digital, os parmetros para gerao do PWM automtico, os parmetros para transferncia de dados atravs dos protocolos disponveis pelo PIC (SPI, USART, etc). Nos exemplos de programas aprenderemos aos poucos como trabalhar com os SFRs.
Aula 02 Pg. 20
15
IC Inter-Integrated Circuit um barramento serial inventado pela Philips que usado para conectar dispositivos perifricos
Mdulo Timer2 O mdulo Timer2 um timer de 8 bits com prescaler e postscaler. Este timer pode ser utilizado como base de tempo para a gerao de PWM no mdulo CCP (visto no prximo item). Este mdulo tambm pode ser acessado para leitura e escrita pelo usurio. Mdulo CCP O Mdulo CCP (Capture / Compare / PWM) contm um registrador de 16 bits que pode operar como: Registrador de captura de 16bits (captura o valor do Timer1 quando um evento ocorrer no pino CCP1 do PIC); Registrador comparador de 16bits (compara o valor do mdulo com o valor do Timer1); Modo PWM (Produz um sinal PWM com resoluo de 10bits). Mdulo MSSP O mdulo MSSP (Mster Synchrounous Serial Port) um mdulo de interface serial, muito til para comunicao com outros perifricos ou outros microcontroladores. O mdulo MSSP pode operar em um desses dois modos: SPI (Serial Peripheral Interface) ; I2C (Inter-Integrated Circuit). Mdulo USART O Mdulo USART (Addressable Universal Synchronous Receiver Transmitter) um dos dois mdulos de transmisso serial que diversos modelos de PICs possuem e tambm um dos mais utilizados, principalmente quando h a interface com o computador atravs do PortA serial. Mdulo Conversor Analgico/Digital (A/D) Quando utilizado o modo A/D do PIC, o pino de entrada fica conectado a um Sample and Hold17, e este conectado a entrada do conversor A/D. O processo ento ir converter o sinal analgico em um sinal digital de 10bits. Em PIC de 28 pinos h geralmente 5 entradas analgicas multiplexadas. Em PICs maiores, h 8 entradas multiplexadas. Mdulo Comparador Em alguns modelos de PICs h um comparador analgico, gerando uma sada digital. A tenso de referncia do comparador pode ser definida via software ou segundo uma tenso externa.
16
16
SPI - Serial Peripheral Interface Bus padro amplamente utilizado para controle de dispositivos perifricos. Um subconjunto do
Sample and Hold Dispositivo utilizado para realizar a interface entre o mundo real (e seus sinais analgicos) e um conversor
analgico digital. O objetivo capturar rapidamente o sinal analgico para ser convertido posteriormente lentamente pelo A/D. Aula 02 Pg. 22
Memria de dados: 224 Bytes Memria EEPROM: 128 Bytes Timers/WDT: 2 Timer de 8bits, 1 Timer de 16bits e 1 WDT Comparadores analgicos: 2 Mdulo CCP: 1 Oscilador mximo: Cristal 20MHz 28 Pinos PIC16F873 Nmero de pinos: 28 Nmero de pinos de I/O: 22 Memria de programa: 4096 Words Memria de dados: 192 Bytes Memria EEPROM: 128 Bytes Timers/WDT: 2 Timer de 8bits, 1 Timer de 16bits e 1 WDT Conversores A/D: 5 (resoluo de 10bits) Mdulo CCP: 2 Interfaces: MSSP, USART Oscilador mximo: Cristal 20MHz 40 Pinos PIC16F877 Nmero de pinos: 40 Nmero de pinos de I/O: 33 Memria de programa: 8192 Words Memria de dados: 384 Bytes Memria EEPROM: 256 Bytes Timers/WDT: 2 Timer de 8bits, 1 Timer de 16bits e 1 WDT Conversores A/D: 8 (resoluo de 10bits) Comparadores: 2 Interfaces: AUSART, MI2C, SPI Oscilador mximo: Cristal 20MHz
Aula 02
Pg. 24
Aula 02
Pg. 25
Binrio 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Por exemplo, para converter o nmero binrio 010111100101100 em hexadecimal devemos dividir o nmero em partes de 4 dgitos (0010 1111 0010 1100), incluindo zeros esquerda do nmero binrio quando necessrio, e em seguida converter em hexadecimal dgito por dgito, ficando 2F2Ch. O h no final do nmero somente para indicar que o nmero est no formato hexadecimal. A operao de transformao inversa realizada da mesma maneira. No MPLAB utilizamos as seguintes sintaxes para escrevermos os nmeros: Binrio: B10010100 Decimal: .148 Hexadecimal: 0X94 Mas no vamos nos preocupar muito com os sistemas de numerao no momento, pois, o MPLAB trabalha com os trs sistemas apresentados (decimal, binrio e hexadecimal) de forma que podemos escolher sempre qual dos sistemas utilizar.
Para definir o RA2 como uma entrada, basta armazenar em TrisA,2 (bit 2 do registrador TrisA) o valor 1. Caso eu quisesse que o RA2 fosse uma sada, bastaria armazenar em TrisA,2 o valor 0. Para qualquer bit do TrisA ou TrisB, 1 significar que o PortA associada uma entrada e 0 que o PortA uma sada. Para facilitar a memorizao, podemos relacionar 1 com Input (entrada) e 0 com Output (sada). Lembramos que o RA4 (PortA,4), quando configurado como sada, funciona com o dreno aberto, como vimos na aula 01. Vimos ainda que todos os pinos do PortB (RB7:RB0), quando configurados como entrada, podem ter em cada pino individualmente um fraco pull-up habilitado via software. PortA e PortB muito simples mudar o nvel lgico de umo PortA no PIC, quando esta est configurada como sada. Assim como tambm bastante simples ler o nvel lgico nos pinos do PIC quando este pino est configurado como entrada. Para que meu RB2 esteja no nvel lgico 1, se ele estiver configurado como sada (TrisB,2 = 0), basta gravar o bit 1 na posio PortB,2. Para que ele retorne ao nvel lgico 0, basta gravar o bit 0 na posio PortB,2. Estas operaes de escrita no PortA utilizada, por exemplo, para o acionamento de um rel, LED ou uma buzina. Mas se eu quiser ler o RB5, que est configurado como entrada (TrisB,5 = 1), basta ler o bit 5 do registrador PortB (PortB,5). As operaes de leitura do PortA podem servir, por exemplo, para verificar o status de um sensor de proximidade.
Sintaxe: MOVLW k Obs.: k deve estar entre 0 e 255 pois W de 8bits. Exemplo:
MOVLW .120
MOVWF Move (copia) o valor do registrador W para o registrador f Sintaxe: MOVWF f Exemplo:
MOVWF PORTB
A seguir apresentamos um exemplo para mover (copiar) um valor literal para um registrador f qualquer.
MOVLW MOVWF B11001010 STATUS
Neste exemplo, o nmero binrio 11001010 ser copiado no registrador STATUS. Como pode-se ver, para se copiar um nmero literal k em um registrador f necessrio que antes este nmero k seja copiado para o W e s ento movido para o registrador f. Outro exemplo Se quisermos configurar o RB4 e o RB7 como entradas e os demais pinos do PortB como sada, devemos realizar a seguinte seqncia de instrues:
MOVLW MOVWF B10010000 TRISB
Aula 02
Pg. 28
Na seqncia de instrues acima o PIC ir testar a entrada RA1. Se o pino estiver em 1, o PIC ir colocar a sada RB2 em 1 tambm e, logo em seguida, colocar o RB2 em 0. Caso o RA1 esteja em 0, a sada RB2 ir para 0 sem executar o comando BSF (que ser pulado pelo PIC). BTFSS Sintaxe: BTFSS f,b Se o bit b do registrador f for 1, a prxima instruo ser descartada (pulada). Se o bit b do registrador f for 0, a prxima instruo ser executada. Exemplo:
BTFSS BSF BCF PortA,1 PortB,2 PortB,2
Na seqncia de instrues anterior o PIC ir testar a entrada RA1. Se o pino estiver em 0, o PIC ir colocar a sada RB2 em 1 tambm e, logo em seguida, colocar o RB2 em 0. Caso o RA1 esteja em 1, a sada RB2 ir para 0 sem executar o comando BSF (que ser pulado pelo PIC).
29. Labels
Os labels so rtulos (como o nome diz em ingls) que marcam algumas posies da memria de programa. Esses rtulos auxiliam bastante o trabalho do programador uma vez que quando for necessrio realizar um desvio no programa no ser necessrio que o programador saiba o endereo do destino (conforme veremos no comando GOTO). Exemplo: supondo a existncia de LEDs ligados aos pinos RA2, RA3 e RA4, poderamos ter no programa
LIGA_LEDS BSF PORTA,2 BSF PORTA,3 BSF PORTA,4 ... DESLIGA_LEDS BCF PORTA,2 Aula 02 Pg. 29
Neste exemplo o PIC ir pular incondicionalmente para o bloco de instrues logo abaixo do rtulo LIGA_LEDS.
GOTO $+2
31. Comentrios
Como poderemos perceber no modelo, os comentrios devem ser inseridos no programa aps um ;. Exemplo:
MOVLW TMR0 ;Carrega o Timer 0 com o valor de W
A importncia do comentrio extrema uma vez que muito difcil, s vezes, impossvel, analisar um programa em Assembly feito por terceiro, ou pela prpria pessoa, quando o cdigo um pouco mais complexo. Quanto mais comentrio tiver o programa, mais fcil ser o entendimento do programa e as manutenes futuras.
Aula 02
Pg. 30
Aula 02
Pg. 31
;******************************************************************** ;* DEFINIO DAS VARIVEIS * ;******************************************************************** CBLOCK 0X0C W_TEMP STATUS_TEMP CONTADOR_A CONTADOR_B FLAG ENDC ;ENDEREO INICIAL DA MEMRIA DE USO GERAL ;REGISTRO TEMPORRIO PARA ARMAZENAMENTO DE ; W E STATUS DURANTE A INTERRUPO ;REGISTRADOR AUXILIAR PARA GERAO ; DE DELAYS ;REGISTRADOR PARA DEFINIO DE FLAGS INTERNOS ;FIM DO BLOCO DE VARIVEIS
;******************************************************************** ;* DEFINIO DOS FLAGS INTERNOS DO SISTEMA * ;******************************************************************** ;******************************************************************** ;* DEFINIO DAS CONSTANTES * ;******************************************************************** ;******************************************************************** ;* DEFINIO DAS ENTRADAS * ;******************************************************************** ;******************************************************************** ;* DEFINIO DAS SADAS * ;******************************************************************** ;******************************************************************** ;* VETOR RESET DO SISTEMA * ;******************************************************************** ORG 0X00 GOTO INICIO ;ENDEREO INICIAL DE PROCESSAMENTO
Aula 02
Pg. 32
;******************************************************************** ;* VETOR INTERRUPO DO SISTEMA * ;******************************************************************** ORG 0X04 ;ENDEREO INICIAL PADRO DA INTERRUPO ;* ARMAZENAMENTO DE W E STATUS MOVWF W_TEMP ;ARMAZENA W MOVF STATUS,W MOVWF STATUS_TEMP ;ARMAZENA STATUS ;* IDENTIFICAO DA INTERRUPO OCORRIDA BTFSC INTCON,2 ;TESTA SE OCORREU A INTERRUPO PELO GOTO INT_TMR0 ; ESTOURO DO TMR0 BTFSC INTCON,1 ;TESTA SE OCORREU A INTERRUPO PEL0 GOTO INT_RB0 ; RB0 GOTO INT_RB ;CASO NEGATIVO, OCORREU INTERRUPO POR ; MUDANA DE PINO EM RB7:RB4 ;* ROTINA PARA TRATAMENTO DA INTERRUPO POR ESTOURO DO TMR0 INT_TMR0 ;* FIM DO TRATAMENTO DA INTERRUPO POR ESTOURO DO TMR0 BCF INTCON,2 ;LIMPA O FLAG DE IDENTIFICAO DA INTERRUPO GOTO FIM_INT ;* ROTINA PARA TRATAMENTO DA INTERRUPO PELO RB0 INT_RB0 ;* FIM DO TRATAMENTO DA INTERRUPO PELO RB0 BCF INTCON,1 ;LIMPA O FLAG DE IDENTIFICAO DA INTERRUPO GOTO FIM_INT ;* ROTINA PARA TRATAMENTO DA INTERRUPO POR MUDANA EM RB7:RB4 INT_RB
;* FIM DO TRATAMENTO DA INTERRUPO POR MUDANA EM RB7:RB4 BCF INTCON,0 ;LIMPA O FLAG DE IDENTIFICAO DA INTERRUPO GOTO FIM_INT ;* RECUPERAO DE W E STATUS FIM_INT MOVF STATUS_TEMP,W MOVWF STATUS MOVF W_TEMP,W RETFIE E RETORNO DA FUNO ;RECUPERA O STATUS ANTERIOR INTERRUPO ;RECUPERA O W ANTERIOR INTERRUPO ;RETORNA DA INTERRUPO
;******************************************************************** ;* SUB-ROTINAS DE DELAY * ;******************************************************************** ;* ROTINA DE DELAY UTILIZANDO BASE DE TEMPO EXTERNA DELAY MOVWF TMR0 ;O VALOR DE W PASSADO TMR0 BCF INTCON,2 BTFSS INTCON,2 ;O DELAY SER IGUAL GOTO $-1 ; D=(256-W)*1/PRESCALE*(BASE DE TEMPO) BCF INTCON,2 ;PARA OPTION,PS2:PS0=0, TEMOS PRESCALE=1:2 RETURN ;* ROTINA DE DELAY INTERNA ;N CICLOS DO DELAY (ND) CASO N HAJA INTERRUPES DURANTE A EXECUO ; DESTA SUB-ROTINA: ND = 3*CONTADOR_A*CONTADOR_B+4*CONTADOR_A+4 ;TEMPO DE EXECUO DA SUB-ROTINA (TE): TE = 4*ND/FREQUENCIA DELAY_INT MOVWF CONTADOR_A MOVLW .12 MOVWF CONTADOR_B DECFSZ CONTADOR_B,F GOTO $-1 DECFSZ CONTADOR_A,F GOTO $-5 RETURN ;INICIALIZA O CONTADOR_A COM O VALOR DE W ;INICIALIZA O CONTADOR_B ;DECREMENTA O CONTADOR_B, CASO CONTADOR_B=0 ; O SISTEMA DECREMENTAR O CONTADOR_A ; E RECARREGAR O CONTADOR_B, AT QUE ; CONTADOR_A SEJA IGUAL A 0
Aula 02
Pg. 33
;******************************************************************** ;* INICIO DO PROGRAMA * ;******************************************************************** INICIO BANK1 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BANK0 B'11111111' TRISA B'11111111' TRISB B'00100000' OPTION_REG B'10000000' ; INTCON ;ALTERA PARA O BANCO 1 ;ENTRADAS NO PORTA: ;SADAS NO PORTA: ;ENTRADAS NO PORTB: ;SADAS NO PORTB: ; ;DEFINIO DE CONFIGURAES GERAIS DO PIC ;DEFINIO DE CONFIGURAES DE INTERRUPES ;ALTERA PARA O BANCO 0
;OPES DEFINIDAS (OPTION_REG): ; BIT 5 - CLOCK DE INCREMENTO DO TMR0 EXTERNO (RA4) ;INTERRUPES DEFINIDAS ; BIT 5 - HABILITA ; BIT 4 - HABILITA ; BIT 3 - HABILITA (INTCON): INTERRUPO POR OVERFLOW EM TMR0 INTERRUPO EXTERNA POR RB0 INTERRUPO POR MUDANA EM RB7:RB4
;******************************************************************** ; INICIALIZAO DAS VARIVEIS * ;******************************************************************** CLRF PORTA CLRF PORTB ;LIMPA AS SADAS DE PORTA E DE PORTB
;******************************************************************** ;* ROTINA PRINCIPAL * ;******************************************************************** MAIN GOTO MAIN ;******************************************************************** ;* FIM DO PROGRAMA * ;******************************************************************** END ;INSTRUO OBRIGATRIA - FIM DO PROGRAMA
Aula 02
Pg. 34
Criao do Fluxograma
Observamos que o sistema estar sempre verificando se o boto est pressionado ou no. Se estiver pressionado, o sistema ligar o LED. Se no estiver, o sistema desligar o LED. imPortAnte observar que, como a execuo das instrues muito rpida, o usurio no ir perceber que o sistema fica testando o boto para s depois tomar uma deciso de ligar ou no o LED. Para termos uma idia da velocidade de processamento do microcontrolador, se utilizarmos um oscilador de 4MHz este programa ir verificar se o boto est pressionado 167.000 vezes a cada segundo. Implementao
;******************************************************************** ;* CRIATRONICS - CENTRO DE ROBTICA, INTELIGNCIA E AUTOMAO * ;* CURSO DE MICROCONTROLADORES PIC I - INSTRUTORES: YGO BATISTA * ;* KOSME LUSTOSA * ;* ALUNO: YGO NETO BATISTA DATA: 20/08/2005 * ;******************************************************************** ;******************************************************************** ;* DESCRIO DO PROGRAMA: * ;* O SISTEMA IR ACIONAR O LED LIGADO AO RB5 SEMPRE QUE O BOTO * ;* LIGADO AO RA2 ESTIVER PRESSIONADO (NVEL LGICO 1) * ;******************************************************************** ;******************************************************************** ;* DECLARAO DO ARQUIVO DE DEFINIO PADRO DA MICROCHIP * ;******************************************************************** #INCLUDE <P16F84.INC> ;******************************************************************** ;* VETOR RESET DO SISTEMA * ;******************************************************************** ORG 0X00 INICIO BSF STATUS,RP0 MOVLW B'11111111' MOVWF TRISA MOVLW B'11011111' MOVWF TRISB BCF STATUS,RP0 ;ALTERA PARA O BANCO 1 ;ENTRADAS NO PORTA: TODAS ;SADAS NO PORTA: ;ENTRADAS NO PORTB: RB7:RB6,RB4:RB0 ;SADAS NO PORTB: RB5 ;ALTERA PARA O BANCO 0 ;ENDEREO INICIAL DE PROCESSAMENTO
Aula 02
Pg. 35
;******************************************************************** ;* ROTINA PRINCIPAL * ;******************************************************************** MAIN BTFSS PORTA,2 GOTO DESL GOTO LIGA DESL BCF PORTB,5 GOTO MAIN LIGA BSF PORTB,5 GOTO MAIN ;LABEL DA ROTINA PRINCIPAL ;TESTA O BOTO ;SE FOR 0 - DESVIA PARA DESL ;SE FOR 1 - DESVIA PARA LIGA ;LABEL DESL ;DESLIGA O LED ;RETORNA PARA O INCIO DO PROGRAMA ;LABEL LIGA ;LIGA O LED ;RETORNA PARA O INCIO DO PROGRAMA
Aula 02
Pg. 36
Neste exemplo definimos W_TEMP, STATUS_TEMP, CONTADOR_A, CONTADOR_B, FLAG e TAMANHO_PE como registradores para uso geral e estes podem ser escritos ou lidos pelo programa a qualquer momento. A linha CBLOCK 0X0C indica que o primeiro registrador da lista (no exemplo, W_TEMP) ser armazenado no endereo 0Ch da memria de dados. Os demais registradores em seguida listados sero armazenados nos endereos imediatamente aps o endereo 0Ch. O comando ENDC indica o fim do bloco de definies das variveis.
Aula 03 Pg. 37
36. Delays
Os sensores e atuadores dos seres humanos, como a viso, por exemplo, no so to rpidos quanto o microcontrolador. Logo, se o microcontrolador quiser escrever num display de LCD uma mensagem, ele tem que deixar a mensagem no display durante um tempo suficientemente grande para que haja a compreenso pelos humanos do que est escrito no display antes que o microcontrolador mude para uma outra mensagem. Por isso que necessrio o microcontrolador esperar um tempo (delay) antes de mudar de mensagem. O mesmo ocorre com teclados. Quando ns teclamos, por mais rpido que seja o digitador, os nossos dedos pressionam cada tecla por alguns milsimos de segundos (vamos supor 100ms). Logo, o computador ou microcontrolador tem que esperar um pouco (delay) para poder ler novamente o teclado e saber qual a nova tecla que o usurio est pressionando. Lembramos que enquanto o microcontrolador estiver alimentado e o oscilador estiver funcionando, este estar sempre executando algum comando. O microcontrolador no pode simplesmente parar de executar o programa por algum tempo (a exceo do modo sleep, que no estudaremos neste curso). Para a criao deste primeiro tipo de delay que apresentaremos necessrio fazer com que o microcontrolador fique executando algum comando repetidas vezes s para gastar o tempo desejado. Implementao Antes de explicarmos melhor o programa necessrio conhecermos melhor uma nova instruo do PIC.
O registrador PACIENTES ser decrementado em uma unidade e o resultado armazenado no prprio registrador PACIENTES (PACIENTES = PACIENTES - 1). Se aps o decremento PACIENTES for diferente de zero ento o programa vai para INICIO. Caso contrrio, se PACIENTES for zero, o programa vai para LIGA_SOM.
Aula 03 Pg. 38
Implementao do delay
DELAY_INT MOVWF CONTADOR_A MOVLW .12 MOVWF CONTADOR_B DECFSZ CONTADOR_B,F GOTO $-1 DECFSZ CONTADOR_A,F GOTO $-5 RETURN ;INICIALIZA O CONTADOR_A COM O VALOR DE W ;INICIALIZA O CONTADOR_B ;DECREMENTA O CONTADOR_B, CASO CONTADOR_B=0 ; O SISTEMA DECREMENTAR O CONTADOR_A ; E RECARREGAR O CONTADOR_B, AT QUE ; CONTADOR_A SEJA IGUAL A 0
No programa acima, inicialmente o CONTADOR_A carregado com o valor de W e o CONTADOR_B carregado com o valor 12. O CONTADOR_B em seguida ir decrementar e testar se zero. Como o valor inicial 12, aps a primeira execuo de DECFSZ CONTADOR_B,F o valor de CONTADOR_B passar a ser 11 (que diferente de zero) e no haver um pulo da prxima linha. Quando o comando GOTO $-1 executado, o ponteiro do PIC ir voltar uma linha e executar novamente a instruo DECFSZ CONTADOR_B, F. Aps 10 execues deste comando o valor de CONTADOR_B ser 1 e ento quando executado novamente o comando DECFSZ CONTADOR_B,F ocorrer o pulo de uma linha, passando o programa a executar a linha DECFSZ CONTADOR_A,F. Se CONTADOR_A for diferente de zero aps o decremento, o programa ir voltar 5 linhas e ir recarregar o valor 12 em CONTADOR_B e repetir todo o procedimento j descrito at ento. O delay s ir se encerrar quando, aps decrementado, o CONTADOR_A for zero e a instruo RETURN for executada.
RETURN Sintaxe: RETURN Retorna de uma sub-rotina, recuperando o ltimo endereo da pilha (gravado atravs da instruo CALL).
Aula 03
Pg. 39
;INICIALIZA O CONTADOR_A COM O VALOR DE W ;INICIALIZA O CONTADOR_B ;DECREMENTA O CONTADOR_B, CASO CONTADOR_B=0 ; O SISTEMA DECREMENTAR O CONTADOR_A ; E RECARREGAR O CONTADOR_B, AT QUE ; CONTADOR_A SEJA IGUAL A 0
Aula 03
Pg. 40
44. Motores DC
So os motores mais simples do ponto de vista eltrico e so tambm chamados de motores CC ou de corrente contnua. Estes motores so largamente utilizados em aplicaes que variam desde brinquedos at a movimentao de uma esteira industrial. Os motores DC escovados so baratos, fcil de controlar e esto disponveis em diversos tamanhos e formas. Princpio de funcionamento O motor DC composto por um m permanente e um eletrom acoplado no eixo do motor. Ao se energizar a bobina do eletrom, o eixo do motor ir girar de modo que o norte da bobina encontre o sul do m permanente, bem como o sul da bobina encontre o norte do m permanente. Quando isto ocorre, devido detalhes de construo do motor, h uma inverso na polaridade da tenso eltrica aplicada na bobina do eletrom. O que antes era norte, agora sul e, analogamente, o que antes era sul, agora norte. Com isso o motor continuar girando para mais uma vez tentar aproximar o norte da bobina com o sul do m permanente e o sul da bobina com o norte do m permanente. Mais uma vez, quando o norte da bobina encontra o sul do m permanente e o sul da bobina encontra o norte do m permanente, haver uma nova inverso na polaridade da tenso aplicada
Aula 03 Pg. 41
na bobina fazendo com que o motor continue girando e repetindo mais uma vez o ciclo. Podemos ver as principais partes do motor DC na Figura 16.
No esquema do motor visto anteriormente possvel perceber que a pilha est ligada diretamente no motor, sem elementos de chaveamento. Porm, se o microcontrolador quiser ligar ou desligar o motor, ser necessrio uma eletrnica de acionamento de motor, pois, a sada do PIC no pode alimentar o motor diretamente devido a baixa corrente que o PIC consegue suprir (ocasionaria a queima do microcontrolador). Eletrnica de acionamento O Criatronics sugere uma montagem utilizando transistores MOSFET canal-N de potncia para chaveamento de cargas. Na Figura 17 pode-se observar o esquema eltrico da ligao de um pequeno motor ao PIC. O diodo D1 tem a funo de proteger o circuito contra tenses indesejadas que surgem no momento do chaveamento do motor devido a indutncia do mesmo.
Para motores maiores necessria a utilizao de um DRIVER MOSFET no lugar dos resistores R1 e R2 para que este possa carregar e descarregar o capacitor do PortA do MOSFET de maneira adequada.
Aula 03 Pg. 42
Ponte H Se for desejvel girar o motor em dois sentidos e se s tivermos uma nica fonte de alimentao (como uma bateria, por exemplo), ser necessria uma montagem mais elaborada e o dispositivo necessrio para tal denominado Ponte H. Neste caso a corrente dever fluir no motor em ambos sentidos. Na Figura 18 pode-se ver o esquema eltrico de uma Ponte H.
No esquema percebemos que esto sendo utilizados DRIVERS MOSFET e transistores MOSFET de potncia sugerindo que o motor utilizado de grande porte. Basicamente observamos que o esquema eltrico composto por quatro blocos de acionamento no qual para que o motor gire necessrio o acionamento de dois destes blocos. No entraremos mais a fundo na eletrnica de potncia envolvida na ponte H, pois, no o objetivo deste curso o desenvolvimento de sistemas de potncia, e sim, o controle dos mesmos. Modos de operao da ponte H Para que um motor gire em um sentido necessrio acionar pelo PIC as sadas CTRL1 e CTRL4. Para que o motor gire no sentido oposto ao anterior necessrio o acionamento das sadas CTR3 e CTRL2, conforme mostrado na Tabela 4.
Tabela 4: Modos de operao da ponte H
A principal preocupao que o programador deve ter em relao a ponte H de no ligar simultaneamente o Q1 e Q2 ou ento o Q3 e Q4, pois, nestes casos, haver uma alta corrente passando pelos transistores ocasionando a queima dos transistores que foram ligados erroneamente.
Aula 03 Pg. 43
v (V)
TL T
T H
t (s)
O Duty Cicle (D) consiste na razo entre o tempo alto (TH) e o perodo do sinal (T). Logo D = TH / T. Quando TH = T temos D = 1, logo o Duty Cicle de 100%, ou seja, o sinal est sempre em 1. Quando TH = 0 temos D = 0, logo o Duty Cicle de 0%, ou seja, o sinal est sempre em 0. O Duty Cicle ir representar a tenso mdia do sinal PWM. Em controle de LEDs, por exemplo, se aplicarmos um sinal com D = 70% nos LEDs, isto ocasionar que estes dispositivos iro emitir luz com uma luminosidade = 70% da luminosidade mxima, ou seja, pode-se variar a luminosidade dos LEDs linearmente com o Duty Cicle.
Aula 03 Pg. 44
O mesmo conceito de tenso mdia pode ser aplicado a motores DC para variao do torque, como visto anteriormente. Observao: o PWM pode ser aplicado nas entradas da Ponte H para fazer o motor variar o torque.
multiplicando quantas vezes ocorreu o estouro (overflow) pelo tempo que o timer/contador leva para estourar, teremos o tempo total que se pretende medir. Sempre que ocorrer uma transio de 255 para 0 (estouro), o bit T0IF do registrador INTCON colocado em 1. Se as interrupes estiverem habilitadas, como veremos ainda nesta aula, possvel tirar proveito das interrupes geradas e da rotina de tratamento de interrupo. Cabe ao programador zerar o bit T0IF quando desejado. Alm do oscilador do clock do microcontrolador, o contador/temporizador pode tambm ser incrementado atravs de um clock externo ligado ao pino RA4/T0CKI. A escolha entre uma destas opes (clock do oscilador ou clock externo) feita no bit T0CS, do registrador OPTION. Se o bit T0CS estiver em 0, o TMR0 ser incrementado a partir do clock do ciclo de instruo interno do PIC. Se o bit T0CS estiver em 1, o TMR0 ser incrementado a partir da transio no pino RA4/T0CKI. Se for selecionado o clock externo (atravs do RA4/T0CKI), possvel definir se o contador ir ser incrementado na borda de subida ou de decida do sinal em RA4/T0CKI atravs do bit T0SE de OPTION. Se T0SE estiver em 0, o incremento do TMR0 ocorrer na mudana baixo para alto do pino RA4/T0CKI. Se T0SE estiver em 1, o incremento do TMR0 ocorrer na mudana de alto para baixo do pino RA4/T0CKI. O valor atual do contador/timer pode ser modificado pelo programador a qualquer momento. PRESCALE O prescale um contador interno (inacessvel ao programador) do PIC que permite um incremento mais lento do TMR0. Ou seja, se o prescale estiver selecionado em 1:8, isto significa que o TMR0 s ir ser incrementado a cada 8 ciclos de instruo. A configurao do prescale feito no PSA e PS2:PS0 do registrador OPTION.
O bit PSA indica se o prescale vai ser aplicado no TMR0 ou no WDT. No iremos estudar a fundo o WDT neste curso, sendo necessrio deixar este bit em 0 para que o prescale seja aplicado ao TMR0. Se colocarmos em 1, o prescale ser aplicado ao WDT e o TMR0 ficar sem prescale. A configurao da razo entre o incremento do TMR0 e o clock de instrues realizado atravs dos bits PS2:PS0 conforme a tabela a seguir.
Aula 03
Pg. 46
Aula 03
Pg. 47
50. Interrupes
As interrupes so um mecanismo que o microcontrolador possui e que torna possvel responder a alguns acontecimentos no momento em que eles ocorrem, qualquer que seja a tarefa que o microcontrolador esteja a executar no momento. imprescindvel que isto seja possvel por que alguns eventos do mundo real precisam ser tratados no exato momento em que eles ocorrem. Geralmente, cada interrupo muda o fluxo de execuo do programa, executando imediatamente aps o evento que gerou a interrupo uma subrotina para tratamento desta interrupo. Aps o tratamento da interrupo, ou seja, trmino da subrotina de tratamento, o microcontrolador dever voltar ao ponto onde a execuo foi interrompida. No PIC16F84 temos 4 tipos de interrupes: Interrupo externa no pino RB0/INT; Interrupo por overflow no TMR0; Interrupo por mudana nos pinos RB7:RB4 Interrupo com finalizao de gravao na memria EEPROM. Interrupo externa no pino RB0/INT A interrupo externa no pino RB0/INT desencadeada por um impulso ascendente (se o bit INTEDG = 1 no registro OPTION,6), ou por um impulso descendente (se INTEDG = 0). Quando o sinal desejado para gerar a interrupo surge no pino INT, o bit INTF do registro INTCON posto a 1. O bit INTF (INTCON,1) tem que ser limpo na rotina de interrupo, afim de que a interrupo no possa voltar a ocorrer de novo, quando do regresso ao programa principal. Esta uma parte importante do programa e que o programador no pode esquecer, caso contrrio o programa ir constantemente saltar para a rotina de interrupo. A interrupo pode ser desabilitada quando colocamos 0 no bit de controle INTE (INTCON,4). Interrupo por overflow no TMR0 O estouro do timer/contador TMR0 (passagem de FFh para 00h) vai setar o bit TOIF (INTCON,2). Esta uma interrupo muito importante, uma vez que, muitos problemas da vida real podem ser resolvidos utilizando esta interrupo. Um exemplo o da medio de tempo. Se soubermos de quanto tempo o contador precisa para completar um ciclo de 00h a FFh, ento, o nmero de interrupes ocorridas multiplicado por esse intervalo de tempo ir nos dar o tempo total decorrido. Esta interrupo pode ser desabilitada colocando 0 no bit T0IE (INTCON,5). Interrupo por mudana nos pinos RB7:RB4 Qualquer variao em qualquer um das 4 portas de entrada do PORTB (bits 4 a 7), pe 1 no RBIF (INTCON,0). A interrupo ocorre, PortAnto, quando os nveis lgicos em RB7, RB6, RB5 e RB4 do PORTB, mudam do valor lgico 1 para o valor lgico 0 ou vice-versa.
Aula 04 Pg. 48
Para que estes pinos detectem as variaes, eles devem ser definidos como entradas. Se qualquer um destes for definido como sada, nenhuma interrupo ser gerada quando surgir uma variao do nvel lgico. Esta interrupo pode ser habilitada/inibida colocando 1 ou 0 o bit RBIE do registrador INTCON (INTCON,3). Interrupo com finalizao de gravao na memria EEPROM Ns no estudaremos esta interrupo por que no utilizaremos a memria EEPROM do PIC neste curso. Registrador INTCON O registrador especial que controla as interrupes o INTCON.
Bit 7 - GIE (Habilita todas as interrupes) Este bit, quando em 1, habilita as interrupes que sero selecionadas nos demais bits do registrador INTCON. Se este bit estiver em 0, todas as interrupes sero desabilitadas. Bit 5 - TOIE (bit de habilitao de interrupo por transbordo de TMR0) Este bit habilita/desabilita a interrupo por estouro no contador TMR0. Se o bit estiver em 1 = interrupo por estouro do TMR0 habilitada Se o bit estiver em 0 = interrupo por estouro do TMR0 desabilitada. Bit 4 - INTE (bit de habilitao da interrupo externa no pino RB0/INT) Este bit que permite que uma interrupo externa no PortA RB0/INT seja tratada. Se este bit estiver em 1 = interrupo externa habilitada; Se este bit estiver em 0 = interrupo externa desabilitada. Bit 3 - RBIE (bit de habilitao de interrupo por variao nas portas RB7:RB4) Este bit permite que a interrupo por variao dos nveis lgicos nos pinos 4, 5, 6 e 7 do PORTBB ocorra. Se RBIE estiver em 1 = a interrupo por mudana no nvel lgico no RB7:RB4 estar habilitada; Se RBIE estiver em 0 = a interrupo por variao dos nveis lgicos em RB7:RB4 estar desabilitada.
Aula 04
Pg. 49
Bit 2 - TOIF (Flag de interrupo por transbordo de TMR0). Este bit indica que houve um estouro em TMR0. Se este bit estiver em 1 = o contador mudou a contagem de FFh para 00h; Se este bit estiver em 0 = o contador no estourou. Para que esta interrupo seja detectada, o programador deve ter a preocupao de limpar este bit antes de ligar o TMR0. Bit 1 - INTF (flag que indica a ocorrncia da interrupo externa em INT/RB0) Este bit indica a ocorrncia de uma interrupo externa. Se o bit estiver em 1 = ocorreu uma interrupo externa; Se o bit estiver em 0 = no ocorreu uma interrupo externa; Este bit dever ser limpo pelo programador no tratamento da interrupo para que o programa no volte para a interrupo imediatamente aps o trmino do tratamento da interrupo. Bit 0 - RBIF (flag que indica variao no porto B) Bit que informa que houve mudana nos nveis lgicos nos pinos 4, 5, 6 e 7 do porto B. 1= pelo menos um destes pinos mudou de nvel lgico 0= no ocorreu nenhuma variao nestes pinos.
Aula 04
Pg. 50