1 história e características dos microcontroladores pic

23,057 views

Published on

Introdução ao estudo de microcontroladores PIC e mikroC

Published in: Education

1 história e características dos microcontroladores pic

  1. 1. História e características dos Microcontroladores PIC Microcontroladores E tudo começou com os microprocessadores. Primeiro eram de 4 bits, depois de 8 bits e assim por diante. Mas o que é um microprocessador? É um chip, com alta integração de componentes, que precisa de memória RAM externa, memória EEPROM externa, HD para armazenamento de programas e outros diversos periféricos. Ou seja, você usa um microprocessador dentro de um microcomputador e ele, em conjunto com um monte de outros CIs, trabalham direitinho. Porém, visando desenvolver um dispositivo simples, que tivesse características de computadores integrados em um único chip, os fabricantes de processadores desenvolveram os primeiros MCUs [Micro Controle Unit ou Unidade Microcontoladora - Microcontroladores] e passaram a distribuí-los efetivamente na década de 80. Tais características tornaram mais simples o projeto de dispositivos inteligentes, pois os MCUs raramente necessitam de componentes externos para funcionar, diminuindo o custo e o seu tamanho. Um sistema computacional é composto por uma unidade de processamento, memória e portas de entrada/saída [I/O]. A maioria das pessoas limita o conceito de sistema computacional ao computador que temos em casa [Personal Computer; MAC]. No entanto todo sistema que a partir de dados de entrada, executa algum processamento mediante um programa armazenado em uma memória gerando uma saída é chamado de sistema computacional. Podemos definir microcontrolador como sendo um sistema computacional integrado, pois ele possui unidade de processamento, integrado memória e entradas e saídas integrados em um único chip. Sendo esta a diferença de microcontrolador e microprocessador [este último é apenas a unidade de processamento em si; Claro que os microprocessadores comercializados atualmente possuem capacidades de processamento muito maiores do que as dos microcontroladores].
  2. 2. Mas, tudo isto começou com a lógica digital baseada na condução ou não de transistores, fets ou diodos entre outros. Mas para não entrar neste detalhe, vamos simplificar resumindo esta lógica em dois números ou como falamos muito, em dois dígitos: O 0 [zero] e o 1 [um]. Quando falamos em 0 [zero], estamos nos referindo a Zero Volt DC e quando falamos em 1 [um] estamos falando em + Vcc No Vcc. caso dos PICs, geralmente, estaremos falando que: PICs 0 = GND e 1 = 5Vcc [padrão/lógica TTL]. Tenha em mente, então, que a lógica digital se baseia em níveis de tensão contínua. E que os microcontroladores usam a lógica digital, e que um programa de computador ou para um microcontrolador, por mais complexo que seja, se resume em uma enorme quantidade de 0s [zeros] e 1s [uns] ordenados corretamente. Os primeiros microcontroladores implementavam a tecnologia do microprocessador 8080, como, por exemplo, o 8048 e posteriormente o 8051 [todos da Intel]. Existem no mercado diversos tipos de microcontroladores, como o 8051. A ATMEL possui uma enorme família de componentes com as mesmas características do 8051, alguns até com as mesmas pinagens dos registradores; outros com pinagens diferentes, mas com o mesmo conjunto de instruções, com clock de 4MHZ até aproximadamente 10MHZ. A DALLAS Semicondutors tem um microcontrolador de alta performance, de até 90MHZ, compatível com 8051. Por fim, vem a Microchip com os microcontroladores PIC ou PICmicro MCUs, como ela mesmo MCU denomina, que se tornaram muito populares [há um grande número de materiais didáticos e acadêmicos relacionados ao PIC]. A Microchip é uma empresa norte americana, fundada em 1989, com sede na cidade de Chandler, Arizona [oeste dos EUA]. A família PIC possui extensa variedade de modelos e periféricos internos, com arquitetura Harvard e conjunto de instruções RISC [Reduced Instruction Set Computer ou Conjunto de Instruções Reduzidas], com recursos de programação por Memória Flash,
  3. 3. EEPROM e OTP. Há o reconhecimento de interrupções tanto externas como de periféricos internos. Funcionam com tensões de alimentação de 2 a 6V e os modelos possuem encapsulamento de 6 a 100 pinos em diversos formatos [SOT23, DIP, SOIC, TQFP,etc]. Quantas vezes os PICs Flash podem ser regravados? Se as gravações forem feitas dentro dos parâmetros sugeridos pelo fabricante, ele garante que pelo menos 1000 ciclos de gravação podem ser feitos [alguns tem o mínimo de 100000 vezes]. A memória EEPROM de dados pode ter um ciclo de 1000000 vezes. A partir dai, a memória começa a se degradar e perde a confiabilidade. Quantas vezes podemos reprogramar os PICs OTP? Os PICs OTP são os que possuem a letra C no meio do código [exceto o 16C84 que é EEPROM]. Os PICs OTP [One Time Programmable], como o próprio nome indica, somente podem ser programados uma vez. Entretanto, as posições de memória de programa que não forem usadas poderão ser gravadas posteriormente. O que é a EEPROM? Alguns modelos de PIC possuem uma área de memória EEPROM [Electrically Erasable Programmable Read Only Memory] que serve como memória não volátil [que não se perde ao desligarmos a alimentação] útil para guardarmos dados de calibração, senhas, etc. Essas memórias podem suportar um ciclo de 1000000 de gravações. Em modelos sem EEPROM, podemos usar memórias EEPROM seriais externas. O acesso a essas memórias [gravação e leitura] pode ser feito no momento da gravação de um programa no PIC ou pelo próprio PIC executando o programa gravado nele, pelos registradores específicos [EEDATA, EEADR, EECON].
  4. 4. [Configuração física do interior de um microcontrolador] Arquitetura de Construção A arquitetura de um sistema digital define quem são e como as partes que compõe o sistema estão interligadas. Os primeiros microcontroladores usavam uma estrutura interna que tinha apenas um caminho para trafegar os dados e endereços. Lembre-se, dados são informações e endereços são os locais onde serão armazenados os dados [memória de programa]. O nome mais correto para este “caminho” é Bus [barramento]. Com apenas um bus tínhamos que trafegar hora endereços, hora dados [arquitetura von-Neuman]. As duas arquiteturas mais comuns para sistemas computacionais digitais são as seguintes: • Von-Neuman; • Harvard. A principal característica da arquitetura Harvard utilizada na construção dos MCUs PIC é ter a memória de programa separada da memória de dados e acessada por um barramento independente [a Unidade Central de Processamento é interligada a memória de dados e a memória de programa por barramento específico]. Existe também a arquitetura von-Neumann, onde tanto as memórias de dados quanto a de programa, são acessadas usando-se um mesmo barramento de dados [a Unidade Central de Processamento é
  5. 5. interligada à memória por um único barramento. O sistema é composto por uma única memória onde são armazenados dados e instruções]. Nesta arquitetura não há limitações à complexidade das instruções, os sistemas geralmente têm conjuntos de instruções complexos, o que equivale a dizer que possuem um grande número de instruções [o que dificulta a memorização do programador] e cada instrução realiza uma grande seqüência de ações [instruções complexas], gastando tempos [quantidade de ciclos de execução] diferentes para serem executadas. Processadores deste tipo são chamados CISC [Complex Instruction Set CPU ou CPU com Conjunto de Instruções Complexo]. Os PICs usam um Set ou conjunto de instruções reduzidas, devido a sua arquitetura Harvard, chamados de RISC [Reduced Instruction Set Computer]. Este set tem entre 33 a 35 instruções dependendo do PIC. Isto ajuda na memorização, mas, exige mais do programador. É como falar fluentemente um outro idioma, conhecendo poucas palavras. Clock O clock é um sinal de sincronismo que coordena as ações do MCU e é obtido a partir de um componente oscilador externo [ressonador, cristal e capacitores, circuito RC, etc] ou interno [Circuito RC interno]. Se fizermos uma analogia de um microcontrolador com um relógio de sala, o nosso clock corresponde ao pêndulo deslocando sempre com uma certa precisão e coordenando a contagem da passagem das horas. Um microcontrolador pode ser entendido como sendo uma máquina que executa operações em ciclos. O clock do oscilador é ligado ao
  6. 6. PIC através do pino OSC1, onde, o circuito interno do microcontrolador divide o sinal de clock em quatro fases, Q1, Q2, Q3 e Q4 [PICs com memória de programa de 12 e 14 bits] que não se sobrepõem. Estas quatro pulsações perfazem um ciclo de instrução [também chamado Ciclo de Máquina e durante o qual uma Máquina] instrução é executada [Todos os sinais necessários para a busca ou execução de uma determinada instrução devem ser gerados dentro deste período de tempo]. [Nos PICs com memória de programa de 12 e 14 bits um Ciclo de Máquina corresponde a quatro períodos de clock [1:4] denominados Q1,Q2,Q3 e Q4] Como pode ser o clock do PIC? Em aplicações onde a precisão do clock [sinal de sincronismo para coordenar as ações do MCU] é necessária, costuma-se usar um cristal de quartzo e dois capacitores [ver figura abaixo] ou um ressonador cerâmico [menos preciso] ligado a dois pinos do PIC. Em aplicações onde precisão não é necessária, podemos usar um circuito RC [resistor – capacitor] para gerar as oscilações. Muitos modelos de PIC possuem o recurso de oscilador interno, onde não precisamos ligar componentes externos, porém, a precisão fica entre 1% a 7%. Também podemos simplesmente injetar um sinal de clock de um oscilador independente do PIC. Exemplo de Circuito Oscilador:
  7. 7. CRYSTAL OPERATION [OR CERAMIC RESONATOR] [HS, XT OR LP OSC CONFIGURATION] Abaixo segue uma lista identificando os vários modos de clock dos PICs [as nomenclaturas podem variar dependendo da fonte de consulta ou dos programas utilizados], só que nem todos os modelos possuem todos estes [a aplicação e configuração do clock no PIC será melhor detalhada em Aplicação e Programando]: • LP [Low Power Crystal] – uso de um cristal de alguns kHz e capacitores para que o consumo seja baixo. • XT [Crystal/Resonator] – cristal de até 4MHz. Pode ser usado um ressonador cerâmico. • HS [High Speed Crystal/Resonator] – para cristais com até 20MHz ou ressonadores com frequências próximas a isto. • HSPLL [High Speed Phase Locked Loop] – multiplica a frequência do cristal por quatro. • ER [External Resistor] – este modo usa apenas um resistor externo ao PIC, utilizando a capacitância intrínseca do PIC como capacitor. • RC [External Resistor/Capacitor] – esse modo precisa de apenas um resistor e um capacitor externo ao PIC [Circuito RC], entretanto a precisão e a estabilidade não são muito grandes. • INTOSC [Internal Oscillator] – oscilador RC interno que permite que economizemos em componentes e libera os pinos para usar como portas [frequência próxima de 4MHz frequência frequ 4MHz]. • EC [External Clock In] – apenas injetamos um sinal de clock externo no PIC.
  8. 8. Os PICs mais modernos possuem o recurso de PLL para multiplicar a frequência de clock obtida a partir de um cristal, permitindo assim se obter uma maior velocidade com cristais de menor frequência, sem gerar EMI. Como funcionam os osciladores internos dos PICs? Alguns modelos de PICs possuem um oscilador de clock interno, o que permite que economizemos em componentes e libera-se mais dois pinos para serem usados como portas de I/O. Esse oscilador é baseado num circuito RC e não tem muita precisão. Entretanto em alguns PICs podemos calibrar a frequência de oscilação para que fique bem perto da frequência desejada. Isso se faz através dos bits do registrador OSCCAL. Nesse caso, os PICs vêm com um valor gravado de fábrica no último endereço de memória de programa, que deve ser carregado no OSCCAL. Exemplo de programa com calibração do oscilador interno [assembly em C - mikroC for PIC - para PIC16F676 PIC16F676]: void main () { asm { bsf STATUS, RP0 ;Bank 1 call 0x3FF ;Get the cal value movwf OSCCAL ;Calibrate bcf STATUS, RP0 ;Bank 0 } // restante do programa em C [mikroC for PIC]… } Neste exemplo, o valor 3FFh aparece na Datasheet [Especificação fornecida pelo fabricante] para a programação em assembly, porém, nos compiladores de linguagem C este valor deve ser escrito como 0xNNN [onde “N” é o valor em hexadecimal aceito pelo compilador]. Para outros microcontroladores PIC basta consultar sua Datasheet no item CALIBRATING THE INTERNAL OSCILLATOR.
  9. 9. Todas as datasheets de todos os MCU PIC, bem como todos os manuais dos programas e os programas de desenvolvimento da Microchip [por exemplo: MPLAB IDE], podem ser baixados do próprio site da Microchip [www.microchip.com]. Também existem dezenas de Application Notes sobre os PICs, bem como de outros componentes. [Datasheet PIC16F630/676] O que acontece se eu fizer o PIC funcionar a uma frequência maior do que a especificada pelo fabricante? Em tese isso pode funcionar sem problemas [entretanto, a dissipação de potência será maior = calor], pois alguns modelos possuem versões de 4MHz e 20MHz, a diferença entre eles é o teste de fábrica, que garante até qual frequência o PIC
  10. 10. pode funcionar sem erros. Entretanto um chip de 4MHz pode não ter passado no teste para 20MHz, mas pode perfeitamente funcionar a 6MHz sem dar problemas. Pipeline Se para efeito de análise dividirmos o processamento interno do PIC em ciclos de busca e execução, podemos afirmar que para cada instrução executada foi necessária a execução prévia de um ciclo de busca. Imagine um sistema que implemente um ciclo de busca e ao mesmo tempo processe um ciclo de execução [Na arquitetura Harvard a leitura de instruções e de alguns tipos de operandos podem ser feitas ao mesmo tempo em que as instruções são executadas]. Isso significa que o sistema fica o tempo todo executando instruções, o que acarreta um significativo ganho de velocidade. Enquanto uma instrução é executada, a seguinte esta sendo lida [Desta forma, no início de cada Ciclo de Máquina haverá uma instrução pronta para ser executada]. Esse processo é conhecido como pipeline [canalização]. No entanto algumas instruções fazem com que este sistema seja desarticulado: são as chamadas instruções de desvio. As instruções de desvio são aquelas que alteram o valor do Program Counter [contador/ponteiro de programa]. Quando ocorre um desvio a instrução que já foi previamente buscada pelo sistema de Pipeline não é válida, pois estava na posição de memória de programa apontada pelo PC antes dele ter seu valor alterado para o destino especificado. Conseqüentemente torna-se necessário a execução de um novo ciclo de busca, que obviamente demandará mais um ciclo de máquina, resultando em um tempo total de processamento igual a dois ciclos de máquinas.
  11. 11. TCY0 é lido da memória o código da instrução MOVLW 55h (não nos interessa a instrução que foi executada, por isso não está representada por retângulo). TCY1 TCY1 é executada a instrução MOVLW 55h e é lida da memória a instrução MOVWF PORTB. TCY2 é executada a instrução MOVWF PORTB e lida a instrução CALL SUB_1. TCY3 é executada a chamada [call] de um subprograma CALL SUB_1 e é lida a instrução BSF PORTA, BIT3. Como esta instrução não é a que nos interessa, ou seja, não é a primeira instrução do subprograma SUB_1, cuja execução é o que vem a seguir, a leitura de uma instrução tem que ser feita de novo. Este é um bom exemplo de uma instrução que precisa de mais de um ciclo. TCY4 este ciclo de instrução é totalmente usado para ler a primeira instrução do subprograma no endereço SUB_1. TCY5 é executada a primeira instrução do subprograma SUB_1 e lida a instrução seguinte.
  12. 12. [Toda instrução do PIC demanda um Ciclo de Máquina para ser executada, exceto instruções de desvio e salto que demandam dois Ciclos de Máquina] Qual a velocidade de processamento dos PICs? Um PIC pode executar uma instrução simples em 4 ciclos de clock [1 ciclo de máquina] graças à sua estrutura de pipeline. Assim, um PIC rodando a 4MHz de clock [sinal de sincronismo para coordenar as ações do MCU], consegue trabalhar a 1MIPS [Um Milhão de Instruções por Segundo]. Algumas instruções de desvio e salto, precisam de 2 ciclos de máquina. PICs mais rápidos rodam a 48MHz de clock. Famílias PIC Como os microcontroladores podem ter diferentes configurações de montagem, a divisão dos mesmos em Famílias ou Linhas ou Séries foi realizada para agrupar os MCUs que têm vários componentes, com tamanhos e recursos iguais. Sendo que o código desenvolvido para um componente de uma determinada família é compatível com os demais componentes da mesma família, exceto por algumas pequenas alterações, que se referem principalmente aos periféricos. Cada família tem o seu próprio conjunto de instruções. Assim, para
  13. 13. um mesmo fabricante, as famílias guardam uma semelhança entre si, apesar de não serem exatamente iguais. Tanto a linha PIC18 quanto a linha PIC16 são compostas por microcontroladores de oito bits para o endereçamento e barramento de dados. Já o endereçamento e barramento de programa da linha PIC18 contam com dois bits a mais, que a linha PIC16. Fazendo uma comparação, a linha PIC12 e PIC16 tem instruções de 14bits e um conjunto de 35 instruções, com o aumento para 16bits na linha PIC18 o conjunto passa a executar de 75 a 83 instruções [incluídas as 8 instruções de tabela, não disponíveis em todos os modelos], dependendo do modelo do MCU. A família PIC24F / PIC24H é composta por componentes de 16bits [com mais de 140 instruções]. Já a linha dsPIC30F/dsPIC33F traz controladores híbridos de 16bits. A família PIC32MX [com núcleo MIPS] é composta por componentes de 32bits. Existem ainda outras famílias de microcontroladores PIC. Sub-Famílias Devido a grande variedade de opções de dispositivos dentro de uma mesma família, foram criadas as sub-famílias. Os seus componentes se diferenciam em quantidade de memória RAM, quantidade de memória EEPROM de dados [alguns modelos nem possuem], quantidade de memória Flash de programa, número de pinos [18, 28, 40,...], freqüência de clock e periféricos. Dentre os principais periféricos podemos citar os timers, conversores A/D, comparadores analógicos, módulos USART [Porta de Comunicação Serial Assíncrona de RX e TX], módulos MSSP [I2C e SPI master], módulos CCP [Captura – Comparação – PWM], etc. O que significam as letras nos códigos dos PICs? A letra que vai logo após o prefixo de dois dígitos significa a tecnologia da memória utilizada pelo microcontrolador. Assim as mais comuns são: C que quer dizer memória OTP [One Time Programmable], F quer dizer Flash [programável
  14. 14. diversas vezes], LF quer dizer Flash de baixa tensão, FJ de Flash de baixa tensão de operação [até 3,6V]. As letras ao final do código, definem o tipo de encapsulamento [por ex. P = DIP, SP = skinny DIP, SO = small outline, SS = SSOP] e a faixa de temperaturas de trabalho [por ex. I = industrial]. Maiores informações a este respeito podem ser obtidas na Datasheet do microcontrolador. Qual é a capacidade máxima de memória dos PICs? A capacidade máxima de memória da série 16 é de 8kword [8Kbytes ou 8192 posições de memória]. No entanto, devido a limitações impostas pela estrutura das instruções RISC dos PICs, a memória de programa é dividida em blocos ou páginas, cada uma com 2kword ou 2048 posições de memória [PEREIRA, 2004]. A memória de programa é mapeada de forma que cada endereço tenha 8bits ou 1byte. Porém, as instruções armazenadas na memória de programa têm 16 ou 32bits. Assim cada instrução ocupa dois endereços de memória e o PC [Program Counter ou Contador de Programa] ao ser executado incrementa de dois em dois endereços e como o barramento de instrução contem 16bits a leitura dos dois endereços é simultânea, formando assim uma instrução de 16bits para um único acesso [instruções curtas] e 32bits para dois acessos [instruções longas]. Ports Para que o funcionamento dos pinos I/O coincida com a organização a 8 bits, todos eles estão agrupados em PORTs [portas; portos] PORT denominadas A,B,C,etc [cada PIC, dependendo da quantidade de pinos que possui, tem uma certa quantidade de PORTs; a PortA e a PortC são as mais comuns]. O agrupamento é semelhante para os registradores de configuração da Port. Este assunto será melhor visualizado em Programando.
  15. 15. Por razões práticas, a maioria dos pinos I/O tem várias funções. Se um pino é usado para uma função qualquer, não pode ser usado para outra. sabendo-se quais são os registradores que configuram as diversas funções de um determinado pino é possível e necessário pino desabilitar aquelas que não serão úteis em um projeto. projeto O que eu posso acionar ou controlar com um PIC? Todo acionamento de dispositivos deve ser feito direta ou indiretamente através das portas de I/O do PIC. Cada porta tem capacidade de drenar ou suprir uma corrente de aproximadamente 25mA, o que é suficiente para acionar leds e pequenas cargas. Para cargas maiores se faz necessário o uso de transistores, tiristores ou relés. Também é comum usarmos as portas do PIC para controlar LCDs, displays de leds, interfaces seriais, optoacopladores, buzzers, portas lógicas TTL e CMOS, etc Como podemos fazer comunicação de dados entre componentes e um PIC? Alguns modelos de PIC possuem periféricos especializados em comunicação [serial], como USARTs, SPI, I2C, USB, etc. com controle realizado pelos respectivos registradores internos. Para os que não os possuem, é possível realizar essas tarefas por software. Para comunicação em RS232, é necessário o uso de conversores de nível de sinal [por exemplo: MAX232]. Como o PIC pode receber informações de fora? Através das portas de I/O e configurando-as como portas de entrada. Essas portas dão acesso aos conversores A/D, comparadores, USARTs, timers, etc. É comum ligarmos as portas de entrada: teclados, sensores, links seriais e paralelos, portas lógicas, etc. Interrupções
  16. 16. Interrupções são eventos que ocorrem no hardware interno e externo ao PIC [são eventos assíncronos – que podem ocorrer a qualquer momento] que fazem com que a execução do programa seja interrompida [devido ao desvio no processamento] e desviada para uma rotina especial [o destino é o vetor de interrupção] e depois de atendida, retorna ao ponto de parada do programa principal. Uma boa analogia para melhor entendermos o conceito de interrupção é a seguinte: você está trabalhando digitando algo no computador quando o seu ramal toca. Neste momento você, interrompe o que está fazendo, para atender ao telefone e verificar o que a pessoa do outro lado da linha está precisando. Terminada a conversa, você coloca o telefone no gancho novamente e retoma o seu trabalho do ponto onde havia parado. Observe que não precisamos verificar a todo instante, se existe ou não alguém na linha, pois quando o ramal é chamado, o telefone toca avisando que existe alguém querendo falar com você. Exemplos de interrupções: • Interrupção externa [Ex.: recebimento de dados na serial]; • Interrupção por mudança de estado [Ex.: mudança de nível em porta – tecla]; • Interrupção por tempo [Ex.: estouro de timers internos]; • Interrupção de final de escrita na EEPROM. A habilitação das interrupções nos PIC segue a seguinte filosofia. Existe uma chave geral [general interrupt enable] e chaves específicas para cada uma das interrupções. Deste modo, se eu quiser habilitar a interrupção de tempo [TMR0] eu devo “setar” o bit da chave geral e também o bit da chave específica [T0IE], ambos presentes no registrador especial INTCON [veja este registrador e suas características na Datasheet do componente MCU que você pretende ter no circuito aplicação].
  17. 17. [Analogia gráfica para o registrador INTCON] O que são vetores de reset e de interrupção? São endereços na área de memória para onde é desviada a execução do programa, caso ocorra um evento de reset ou de interrupção. Timer Não se preocupe muito com a informação sobre Timer e Prescaler [ou ainda Bank0, Bank1, relação destes com posições na EEPROM, e similares], pois, é um conteúdo mais específico e dirigido para uns poucos loucos como eu que se interessam por maiores detalhes e que nem precisam ser levados em consideração quando se usa o mikroC for PIC que se encarrega destes sem que você perceba [problema_01: é na busca por maiores detalhes que muitos de meus projetos se emperram]. Em outras palavras: saber ou não os próximos dois parágrafos não fará muita diferença! O PIC possui internamente um recurso de hardware denominado Timer0. Trata-se de um contador de 8bits incrementado internamente pelo ciclo de máquina ou por um sinal externo [borda de subida ou descida], sendo esta opção feita por software durante a programação. Como o contador possui 8 bits ele pode assumir 256 valores distintos [0 até 255]. Caso o ciclo de máquina seja de 1us, cada incremento do Timer corresponderá a um intervalo de 1us. Caso sejam necessário intervalos de tempos maiores para o mesmo Ciclo de Máquina, utilizamos o recurso de Pre-scale.
  18. 18. Prescaler O prescaler é um divisor de frequência programável do sinal que incrementa o Timer0. Quando temos um prescaler de 1:1, cada ciclo de máquina corresponde a um incremento do Timer0 [unidade de Timer0]. Ao alterarmos o prescaler para, por exemplo, 1:4 [os valores possíveis são as potencias de dois até 256], o Timer0 será incrementado uma vez a cada quatro ciclos de máquina. Sleep O modo de operação Sleep foi incluído na família PIC para atender um mercado cada vez maior de produtos que devem funcionar com pilhas ou baterias. Estes equipamentos devem ter um consumo mínimo para que a autonomia seja a máxima. Quando o PIC é colocado em modo Sleep [dormir], através da instrução SLEEP, o consumo passa da ordem de grandeza de mA [mili àmperes] para uA [micro àmperes]. Existem três maneiras de "acordar o PIC": por interrupção externa/estado, estouro de Watchdog ou reinicialização [/MCRL]. Linguagem de programação usual para PICs Os PICs podem ser programados em linguagem assembly ou em linguagem de alto nível como C. Para tanto, é necessário um programa compilador para gerar o código hexadecimal a ser gravado no microcontrolador. A linguagem C é uma linguagem de alto nível e estruturada. Sua sintaxe é simples e portátil, isto é, pode-se usar o mesmo programa em várias plataformas com poucas modificações. C é muito utilizada para a programação de microcontroladores e também tem o poder de interagir com a plataforma em baixo nível podendo incluir códigos em assembly em sua implementação implementação. Estou com um PIC protegido. Como posso ler o programa?
  19. 19. Não pode. Este recurso implementado nos PICs é feito justamente para prevenir que o código do programa seja lido e replicado em outros chips, dessa forma protegendo o direito autoral do programador. Isto é conseguido por fusível de configuração. configuração O que é a palavra ou fusíveis de configuração [Bits de configuração]? configuração] No momento da gravação de um programa em um PIC podemos fazer a escolha de alguns recursos de que o PIC dispõe, setando ou zerando os bits de um determinado endereço da memória. Esses recursos se referem a: tipo de usado, programa, oscilador usado proteção de leitura do programa ativação do WDT, proteção de leitura da EEPROM ativação do Brownout, proteção EEPROM, ativação do Master Clear, ativação do Power up timer, seleção do Bandgap, habilitação de gravação por baixa tensão entre tensão, outros. Essa configuração de fusíveis pode ser inserida também no programa fonte e vai aparecer automaticamente no software de gravação Este assunto será detalhado em gravação. Programando. Como gravar o PIC? De posse de um arquivo .hex que contenha os códigos hexadecimais das instruções do programa [Opcode – Código Operacional], você precisa de um software de controle no PC e um hardware de gravação de PICs. Existem diversos programas e circuitos de gravação disponíveis na Internet [muitos gratuitos]. Também é possível comprar um gravador pronto. FAQ Analógico Como funcionam os conversores Analógico-Digitais dos PICs?
  20. 20. A maioria dos modelos de PICs possui conversor A/D de 10 bits [alguns têm de 8 bits e de 12 bits]. Sempre é só um conversor com vários canais de entrada [selecionados por multiplexação]. Os conversores são do tipo SAR [Registradores por Aproximação Sucessiva], portanto não são muito velozes [em média gastam uns 40us para cada conversão]. Além disso, sofrem de algumas limitações, como a faixa de entrada de tensão dos sinais [de 0V a Vdd], impedância da fonte do sinal, etc. O processo de conversão é o seguinte: o sinal a ser amostrado carrega um capacitor de hold. Ao final de um certo período, esse capacitor interno do PIC é desligado da fonte de sinal e o conversor começa a fazer as aproximações sucessivas para descobrir o equivalente digital. O valor fica armazenado em dois registradores de 8 bits [nem todos usados] do PIC para serem processados posteriormente. O que é um módulo CCP? Alguns modelos de PIC possuem um ou mais módulo de Capture Compare PWM. O recurso de capture serve para se medir a largura [tempo] de um pulso injetado numa porta do PIC através da leitura do valor do contador TMR1 quando ocorrer a descida ou subida do pulso medido. O recurso de Compare serve para comparar o valor que está em alguns registradores com o valor que está sendo contado no TMR1, e quando ocorrer a coincidência, executa uma ação. O recurso de PWM – modulação por largura de pulso, permite gerar um sinal pulsado de freqüência constante e largura de pulso variável. O que é bootloader? bootloader
  21. 21. Alguns modelos de PIC podem receber dados externos [ou mesmo internos] e reprogramarem-se [a memória de programa] automaticamente sem o uso de um gravador de PICs. Esses PICs precisam ter uma rotina especial gravada na memória e perdem alguns registradores e portas de I/O para isso. Normalmente os PICs que usam o recurso de bootloader, recebem os dados a serem gravados através de uma porta serial. Os PICs podem executar operações de ponto flutuante? Sim, desde que sejam criadas sub-rotinas especiais para essas operações. No Application Note 575 da Microchip, se encontram diversas rotinas de ponto flutuante. Operações de ponto flutuante exigem muito processamento e usam muitos bytes de memória [Os compiladores também possuem rotinas de exponenciação, trigonométricas, logarítmicas, etc além de multiplicação e divisão]. Como a estrutura interna dos PICs usa filosofia RISC, não podemos esperar que ele execute operações aritméticas ou matemáticas complexas diretamente. Basicamente ele executa instruções simples de soma e de subtração de 8 bits [inteiros], além das de deslocamento de bits para esquerda ou direita. By AIM

×