apostila micro

34
Microcontroladores 1. Introdução Atualmente um grande número de microcontroladores, integrados em diversos equipamentos, exercem um papel importante no dia a dia das pessoas. Despertar ao som de um CD Player programável, tomar café da manhã preparado por um microondas digital, e ir ao trabalho de carro, cuja injeção de combustível é microcontrolada, são apenas alguns exemplos. O mercado de microcontroladores apresenta-se em franca expansão, ampliando seu alcance principalmente em aplicações residenciais, industriais, automotivas e de telecomunicações. Segundo dados da National Semiconductor (1997), uma residência típica americana possui 35 produtos baseados em microcontrolador. Estima-se que, em 2010, em média uma pessoa interagirá com 250 dispositivos com microcontroladores diariamente. Em um passado recente, o alto custo dos dispositivos eletrônicos limitou o uso dos microcontroladores apenas aos produtos domésticos considerados de alta tecnologia (televisão, vídeo e som). Porém, com a constante queda nos preços dos circuitos integrados, os microcontroladores passaram a ser utilizados em produtos menos sofisticados do ponto de vista da tecnologia, como máquinas de lavar, microondas, fogões e refrigeradores. Assim, a introdução do microcontrolador nestes produtos cria uma diferenciação e permite a inclusão de melhorias de segurança e de funcionalidade. Alguns mercados chegaram ao ponto de tornar obrigatório o uso de microcontroladores em determinados tipos de equipamentos, impondo um pré-requisito tecnológico. Muitos produtos que temos disponíveis hoje em dia, simplesmente não existiriam, ou não teriam as mesmas funcionalidades sem um microcontrolador. É o caso, por exemplo, de vários instrumentos biomédicos, instrumentos de navegação por satélites, detetores de radar, equipamentos de áudio e vídeo, eletrodomésticos, entre outros. Entretanto, o alcance dos microcontroladores vai além de oferecer algumas facilidades. Uma aplicação crucial, onde os microcontroladores são utilizados, é na redução de consumo de recursos naturais. Existem sistemas de aquecimento modernos que captam a luz solar e, de acordo com a demanda dos usuários, controlam a temperatura de forma a minimizar perdas. Um outro exemplo, de maior impacto, é o uso 1 Prof. Gustavo Weber Denardin

Upload: fabio-delima8012

Post on 25-Nov-2015

18 views

Category:

Documents


2 download

TRANSCRIPT

  • Microcontroladores

    1. Introduo

    Atualmente um grande nmero de microcontroladores, integrados em diversos

    equipamentos, exercem um papel importante no dia a dia das pessoas. Despertar ao som

    de um CD Player programvel, tomar caf da manh preparado por um microondas

    digital, e ir ao trabalho de carro, cuja injeo de combustvel microcontrolada, so

    apenas alguns exemplos.

    O mercado de microcontroladores apresenta-se em franca expanso, ampliando

    seu alcance principalmente em aplicaes residenciais, industriais, automotivas e de

    telecomunicaes. Segundo dados da National Semiconductor (1997), uma residncia

    tpica americana possui 35 produtos baseados em microcontrolador. Estima-se que, em

    2010, em mdia uma pessoa interagir com 250 dispositivos com microcontroladores

    diariamente.

    Em um passado recente, o alto custo dos dispositivos eletrnicos limitou o uso dos

    microcontroladores apenas aos produtos domsticos considerados de alta tecnologia

    (televiso, vdeo e som). Porm, com a constante queda nos preos dos circuitos

    integrados, os microcontroladores passaram a ser utilizados em produtos menos

    sofisticados do ponto de vista da tecnologia, como mquinas de lavar, microondas, foges

    e refrigeradores. Assim, a introduo do microcontrolador nestes produtos cria uma

    diferenciao e permite a incluso de melhorias de segurana e de funcionalidade. Alguns

    mercados chegaram ao ponto de tornar obrigatrio o uso de microcontroladores em

    determinados tipos de equipamentos, impondo um pr-requisito tecnolgico.

    Muitos produtos que temos disponveis hoje em dia, simplesmente no existiriam,

    ou no teriam as mesmas funcionalidades sem um microcontrolador. o caso, por

    exemplo, de vrios instrumentos biomdicos, instrumentos de navegao por satlites,

    detetores de radar, equipamentos de udio e vdeo, eletrodomsticos, entre outros.

    Entretanto, o alcance dos microcontroladores vai alm de oferecer algumas

    facilidades. Uma aplicao crucial, onde os microcontroladores so utilizados, na

    reduo de consumo de recursos naturais. Existem sistemas de aquecimento modernos

    que captam a luz solar e, de acordo com a demanda dos usurios, controlam a

    temperatura de forma a minimizar perdas. Um outro exemplo, de maior impacto, o uso

    1 Prof. Gustavo Weber Denardin

  • de microcontroladores na reduo do consumo de energia em motores eltricos, que so

    responsveis pelo consumo de, aproximadamente, 50% de toda eletricidade produzida no

    planeta. Portanto, o alcance dessa tecnologia tem influncia muito mais importante em

    nossas vidas, do que se possa imaginar.

    O universo de aplicaes dos microcontroladores, como j mencionado, est em

    grande expanso, sendo que a maior parcela dessas aplicaes em sistemas

    embarcados. A expresso sistema embarcado (do ingls embedded system) se refere

    ao fato do microcontrolador ser inserido nas aplicaes (produtos) e usado de forma

    exclusiva por elas. Como a complexidade desses sistemas cresce vertiginosamente, o

    software tem sido fundamental para oferecer as respostas s necessidades desse

    mercado. Tanto , que o software para microcontroladores representa uma fatia

    considervel do mercado de software mundial. Segundo Edward Yourdon (consultor na

    rea de computao, pioneiro nas metodologias de engenharia do software e

    programao estruturada) a proliferao dos sistemas embarcados, juntamente com o

    advento da Microsoft, so os responsveis pela retomada do crescimento da indstria de

    software nos Estados Unidos da Amrica.

    2. Definio de Microcontrolador

    Um microcontrolador um sistema computacional completo, no qual esto

    includos uma CPU (Central Processor Unit), memria de dados e programa, um sistema

    de clock, portas de I/O (Input/Output), alm de outros possveis perifricos, tais como,

    mdulos de temporizao e conversores A/D entre outros, integrados em um mesmo

    componente. As partes integrantes de qualquer computador, e que tambm esto

    presentes, em menor escala, nos microcontroladores so:

    Unidade Central de Processamento (CPU)

    Sistema de clock para dar seqncia s atividades da CPU

    Memria para armazenamento de instrues e para manipulao de dados

    Entradas para interiorizar na CPU informaes do mundo externo

    Sadas para exteriorizar informaes processadas pela CPU para o mundo externo

    Programa (firmware) para definir um objetivo ao sistema

    2 Prof. Gustavo Weber Denardin

  • 2.1 Unidade Central de Processamento (CPU)

    A unidade central de processamento composta por uma unidade lgica aritmtica

    (ULA), por uma unidade de controle e por unidades de memria especiais conhecidas por

    registradores. Para que a CPU possa realizar tarefas necessrio que se agregue outros

    componentes, como unidades de memria, unidades de entrada e unidades de sada. A

    figura a seguir apresenta um diagrama de blocos com uma possvel interface entre a CPU

    e outros dispositivos.

    A unidade de memria permite armazenar grupos de dgitos binrios que podem

    representar instrues que o processador ir executar ou dados que sero manipulados

    pelo processador. A unidade de entrada consiste em todos os dispositivos utilizados para

    obter informaes e dados externos ao processador. A unidade de sada consiste em

    dispositivos capazes de transferir dados e informaes do processador para o exterior.

    A ULA a rea de uma CPU na qual as operaes lgicas e aritmticas so

    realizadas sobre os dados. O tipo de operao realizada determinada pelos sinais da

    unidade de controle. Os dados a serem operados pela ULA podem ser oriundos de uma

    memria ou de uma unidade de entrada. Os resultados das operaes realizadas na ULA

    podem ser transferidos tanto para uma memria de dados como para uma unidade de

    sada.

    3 Prof. Gustavo Weber Denardin

  • A funo da unidade de controle comandar as operaes da ULA e de todas as

    outras unidades conectadas a CPU, fornecendo sinais de controle e temporizao. De

    certa maneira, a unidade de controle como um maestro que responsvel por manter

    cada um dos membros da orquestra em sincronismo. Essa unidade contm circuitos

    lgicos e de temporizao que geram os sinais apropriados necessrios para executar

    cada instruo de um programa.

    A unidade de controle busca uma instruo na memria enviando um endereo e

    um comando de leitura para a unidade de memria. A palavra da instruo armazenada

    na posio de memria transferida para um registrador conhecido por registrador de

    instrues (RI) da unidade de controle. Essa palavra de instruo, que est de alguma

    forma de cdigo binrio, ento decodificada pelos circuitos lgicos na unidade de

    controle para determinar a instruo que est sendo invocada. A unidade de controle usa

    essa informao para enviar os sinais apropriados para as unidades restantes a fim de

    executar a operao especfica.

    Essa seqncia de busca de um cdigo de instruo e de execuo da operao

    indicada repetida indefinidamente pela unidade de controle. Essa seqncia repetitiva

    de busca/execuo continua at que a CPU seja desligada ou at que o RESET seja

    ativado. O RESET sempre faz a CPU buscar sua primeira instruo no programa.

    Uma CPU, tambm conhecida por processador, repete indefinidamente as mesmas

    operaes bsicas de busca e execuo. Naturalmente, os diversos ciclos de execuo

    sero diferentes para cada tipo de instruo medida que a unidade de controle envia

    sinais diferentes para as outras unidades de execuo de uma instruo em particular.

    Um registrador um tipo de memria de pequena capacidade porm muito rpida,

    contida na CPU, utilizado no armazenamento temporrio de dados durante o

    processamento. Os registradores esto no topo da hierarquia de memria, sendo desta

    forma o meio mais rpido e de maior custo para armazenar um dado.

    Cada registrador de um processador possui uma funo especial. Um dos mais

    importantes o contador de programa (program counter PC), que armazena os

    endereos dos cdigos das instrues medida que so buscadas da memria. Outros

    registradores so utilizados para realizar funes como: armazenamento de cdigos de

    instruo (RI), manuteno dos dados operados pela ULA (acumulador), armazenamento

    de endereos de dados a serem lidos na memria (ponteiro de dados), alm de outras

    funes de armazenamento e contagem. Todos os processadores possuem um

    registrador em especial muito utilizado chamado de acumulador ou registrador A. Ele

    4 Prof. Gustavo Weber Denardin

  • armazena um operando para quaisquer instrues, lgica ou matemtica. O resultado da

    operao armazenado no acumulador aps a instruo ser executada.

    Para que exista comunicao entre as unidades que formam um processador

    devemos definir uma forma de conexo entre estas unidades. Em um processador

    tradicional com arquitetura Von Neuman este meio o barramento de dados. A largura do

    barramento de dados em bits o que determina o nmero de bits para um dado

    processador. A figura a seguir apresenta a interface dos principais dispositivos que

    compem um sistema microprocessado atravs de um barramento de dados.

    A CPU o centro de todo sistema computacional, e no diferente quando se trata

    de microcontroladores. O trabalho da CPU executar rigorosamente as instrues de um

    programa, na seqncia programada, para uma aplicao especfica. Um programa

    computacional (software) instrui a CPU a ler informaes de entradas, ler e escrever

    informaes na memria de dados, e escrever informaes nas sadas. O diagrama de

    blocos simplificado da CPU presente nos microcontroladores da famlia HC08, tambm

    denominado de CPU08, apresentado na figura a seguir. Esta arquitetura de processador

    ser utilizada como modelo neste documento.

    5 Prof. Gustavo Weber Denardin

  • As principais funes de cada um dos componentes da CPU08 sero apresentadas

    a seguir.

    Unidade Lgica/Aritmtica (ULA): A ULA utilizada para realizar operaes lgicas e aritmticas definidas no conjunto de instrues da CPU. Vrios circuitos

    implementam as operaes aritmticas binrias decodificas pelas instrues e fornecem

    dados para a execuo da operao na ULA. A maioria das operaes aritmticas

    binrias so baseadas em algoritmos de adio e subtrao (adio com o valor

    negativo). A multiplicao realizada atravs de uma srie de adies e deslocamentos

    com a ULA sob controle lgico da CPU.

    Controle da CPU: O circuito de controle da CPU implementa o sequeciamento de elementos lgicos necessrios para a ULA realizar as operaes requisitadas durante a

    execuo do programa. O elemento central da seo de controle da CPU o

    decodificador de instrues. Cada opcode (cdigo de instruo) decodificado para determinar quantos operandos so necessrios e qual seqncia de passos ser

    necessria para completar a instruo em curso. Quando uma instruo executada

    completamente, o prximo opcode lido e decodificado.

    6 Prof. Gustavo Weber Denardin

  • Registradores da CPU: A CPU08 contm 5 registradores como apresentado na figura anterior. Os registradores da CPU so memrias especiais que no fazem parte do

    mapa de memria. O conjunto de registradores da CPU freqentemente chamado de

    modelo de programao.

    O acumulador, tambm chamado de registrador A, freqentemente utilizado para armazenar um dos operandos ou o resultado de operaes.

    O registrador H:X um registrador de 16 bits de ndice que possibilita ao usurio enderear indiretamente o espao de memria de 64Kbytes. O byte mais significativo do

    registrador de ndice denominado H, e o byte menos significativo denominado X. Sua

    principal funo servir de apontador para uma rea na memria onde a CPU ir

    carregar (ler) ou armazenar (escrever) informao. Quando no estiver sendo utilizado

    para apontar um endereo na memria, ele pode ser utilizado como registrador genrico.

    O registrador Program Counter (PC) usado pela CPU para controlar e conduzir ordenadamente a busca do endereo da prxima instruo a ser executada. Quando a

    CPU energizada ou passa por um processo de reset, o PC carregado com o contedo

    de um par de endereos especficos denominados vetor de reset (reset vector). O vetor de reset contm o endereo da primeira instruo a ser executada pela CPU. Assim que

    as instrues so executadas, uma lgica interna a CPU incrementa o PC, de tal forma

    que ele sempre aponte para o prximo pedao de informao que a CPU vai precisar. O

    nmero de bits do PC coincide exatamente com o nmero de linhas do barramento de

    endereos, que por sua vez determina o espao total disponvel de memria que pode ser

    acessada pela CPU.

    7 Prof. Gustavo Weber Denardin

  • O registrador Condition Code (CCR) um registrador de 8 bits que armazena os bits de estado (flags) que refletem o resultado de algumas operaes da CPU. A

    instrues de desvio usam estes bits de estado para tomar suas decises.

    A descrio dos bits do registrador de condio apresentada abaixo:

    V (Bit de Overflow) - A CPU leva o bit de overflow para nvel lgico alto quando houver estouro no resultado de uma operao em complemento de 2. O bit V utilizado

    pelas instrues de desvios condicionais BGT, BGE, BLE, e BLT.

    H (Bit de Half-carry) - A CPU leva o bit de half-carry para nvel lgico alto quando ocorrer estouro entre os bits 3 e 4 do acumulador durante as operaes ADD e ADC. O bit

    H importante nas operaes aritmticas codificadas em binrio (BCD). A instruo DAA

    utiliza o estado dos bits H e C para determinar o fator de correo apropriado.

    I (Mscara de Interrupes) - Quando o bit I est em nvel lgico alto, todas as interrupes so mascaradas (desabilitadas). As interrupes so habitadas quando o bit

    I levado a nvel lgico baixo. Quando ocorre uma interrupo, o bit que mascara as

    interrupes automaticamente levado a nvel lgico alto. Depois que os registradores da

    CPU so armazenados na pilha este bit volta ao nvel lgico baixo. Se uma interrupo

    ocorrer enquanto o bit I estiver setado, seu estado ser guardado. As interrupes so

    atendidas, em ordem de prioridade, assim que o bit I for a nvel lgico 0. A instruo

    retorno da interrupo (RTI) retorna os registradores da CPU da pilha, e restaura o bit I no

    seu estado de nvel lgico 0. Aps qualquer reset, o bit I colocado em nvel lgico alto e

    s pode ser limpo por uma instruo de software (CLI).

    N (Bit Negativo) - A CPU coloca o bit N em nvel lgico alto quando uma operao aritmtica, lgica ou de manipulao de dados produzir um resultado negativo.

    Corresponde ao 8o bit do registrador que contm o resultado.

    Z (Bit Zero) - A CPU leva o bit Z para nvel lgico alto quando uma operao aritmtica, lgica ou de manipulao de dados produzir um resultado igual a 0.

    C (Bit Carry/Borrow) - A CPU coloca o bit C em nvel lgico alto quando uma operao de adio produzir um valor superior a 8 bits ou quando uma subtrao

    8 Prof. Gustavo Weber Denardin

  • necessitar um emprstimo. Algumas operaes lgicas e as instrues de manipulao

    de dados tambm podem modificar o estado do bit C.

    O Stack Pointer (SP) um registrador cuja funo apontar para a prxima

    localizao disponvel (endereo livre) de uma pilha (lista de endereos contguos). A pilha

    pode ser vista como um monte de cartas empilhadas, onde cada carta armazena um byte

    de informao. A qualquer hora, a CPU pode colocar uma carta nova no topo da pilha ou

    retirar uma carta do topo da pilha. As cartas que esto no meio da pilha no podem ser

    retiradas at que todas que estejam acima dela sejam removidas primeiro. A CPU

    acompanha o efeito da pilha atravs do valor armazenado no SP. O SP sempre aponta

    para a localizao de memria disponvel para se colocar a prxima carta (byte).

    Normalmente, a CPU usa a pilha para guardar os endereos de retorno e o

    contexto, isto , os registradores da CPU, na ocorrncia de uma exceo (interrupo ou

    reset).

    Durante um reset, o Stack Pointer contm o endereo 0x00FF. A instruo RSP

    (Reset Stack Pointer) carrega o byte menos significativo com 0xFF e o byte mais

    significativo no afetado.

    Quando a CPU insere um novo dado na pilha, automaticamente o SP

    decrementado para o prximo endereo livre. Quando a CPU retira um dado da pilha, o

    SP incrementado para apontar para o dado mais recente, e o valor do dado lido nesta

    posio. Quando a CPU energizada ou passa por um processo de reset, o SP aponta

    para um endereo especfico na memria RAM (no caso dos microcontroladores HC08 e

    HCS08 = 0x00FF).

    A CPU08 possui modos de endereamento indexado com offsets de 8 ou 16 bits do

    SP para acesso de variveis temporrias inseridas na pilha. A CPU utiliza o contedo do

    registrador SP para determinar o endereo efetivo do operando.

    OBS: Embora o endereo inicial do SP seja 0x00FF, a localizao da pilha arbitrria e pode ser realocada pelo usurio em qualquer lugar na RAM. Movimentar o SP

    para fora da pgina de acesso direto (0x0000 a 0x00FF) permitir que este espao de

    memria seja utilizado para modos de endereamento mais eficientes.

    9 Prof. Gustavo Weber Denardin

  • 2.2. Sistema de Clock

    Todo sistema computacional utiliza um clock para fornecer a CPU uma maneira de

    se mover de instruo em instruo, em uma seqncia pr-determinada.

    Uma fonte de clock de alta freqncia (normalmente derivada de um cristal

    ressonador conectado a CPU) utilizada para controlar o sequeciamento das instrues

    da CPU. Normalmente as CPUs dividem a freqncia bsica do cristal por 2 ou mais para

    chegar ao clock do barramento interno. Cada ciclo de leitura ou escrita a memria

    executado em um ciclo de clock do barramento interno, tambm denominado ciclo de

    barramento (bus cycle).

    2.3. Memria

    Podemos pensar na memria como sendo uma lista de endereos postais, onde o

    contedo de cada endereo um valor fixo de 8 bits (para CPU de 8 bits). Se um sistema

    computacional tem n linhas (bits) de endereos, ele pode enderear 2n posies de

    memria (p.ex.: um sistema com 14 linhas pode acessar 214 = 16384 endereos). Entre os

    diversos tipos de memria encontram-se:

    RAM (Random Access Memory) Memria de acesso aleatrio. Pode ser lida ou escrita pela execuo de instrues da CPU e, normalmente utilizada para manipulao

    de dados pela CPU. O contedo perdido na ausncia de energia (memria voltil).

    ROM (Read Only Memory) Memria apenas de leitura. Pode ser lida, mas no altervel. O contedo deve ser determinado antes que o circuito integrado seja fabricado.

    O contedo mantido na ausncia de energia (memria no voltil).

    EPROM (Erasable and Programmable Read-Only Memory) Memria ROM programvel e apagvel. O contedo dessa memria pode ser apagado com luz

    ultravioleta, e posteriormente, reprogramado com novos valores. As operaes de

    apagamento e programao podem ser realizadas um nmero limitado de vezes depois

    que o circuito integrado for fabricado. Da mesma forma que a ROM, o contedo mantido

    na ausncia de energia (memria no voltil).

    OTP (One Time Programmable) Memria programvel uma nica vez.

    Semelhante EPROM quanto a programao, mas que no pode ser apagada.

    EEPROM (Electrically Erasable and Programmable Read-Only Memory) Memria ROM programvel e apagvel eletricamente. Pode ter seu contedo alterado atravs da

    10 Prof. Gustavo Weber Denardin

  • utilizao de sinais eltricos convenientes. Tipicamente, um endereo de uma EEPROM

    pode ser apagada e reprogramada at 100.000 vezes.

    FLASH Memria funcionalmente semelhante a EEPROM, porm com ciclos de escrita bem mais rpidos.

    I/O (Input/Output) Registradores de controle, estado e sinais de I/O so um tipo

    especial de memria porque a informao pode ser sentida (lida) e/ou alterada (escrita)

    por dispositivo diferentes da CPU.

    2.4. Sinais de Entrada

    Dispositivos de entrada fornecem informao para a CPU processar, vindas do

    mundo externo. A maioria das entradas que os microcontroladores processam so

    denominadas sinais de entrada digitais, e utilizam nveis de tenso compatveis com a

    fonte de alimentao do sistema. O sinal de 0V (GND ou VSS ) indica o nvel lgico 0 e o

    sinal de fonte positiva, que tipicamente +5VDC (VDD ) indica o nvel lgico 1

    (atualmente os microcontroladores comearam a reduzir a tenso de VDD para valores na

    faixa dos 3V).

    Naturalmente que no mundo real existem sinais puramente analgicos (com uma

    infinidade de valores) ou sinais que utilizam outros nveis de tenso. Alguns dispositivos

    de entrada traduzem as tenses do sinal para nveis compatveis com VDD e VSS. Outros

    dispositivos de entrada convertem os sinais analgicos em sinais digitais (valores binrios

    formados por 0s e 1s) que a CPU pode entender e manipular. Alguns microcontroladores

    incluem circuitos conversores analgicos/digitais (ADC) encapsulados no mesmo

    componente.

    2.5. Sinais de Sada

    Dispositivos de sada so usados para informar ou agir no mundo exterior atravs

    do processamento de informaes realizados pela CPU. Circuitos eletrnicos (algumas

    vezes construdos no prprio microcontrolador) podem converter sinais digitais em nveis

    de tenso analgicos. Se necessrio, outros circuitos podem alterar os nveis de tenso

    VDD e VSS nativos da CPU em outros nveis.

    11 Prof. Gustavo Weber Denardin

  • 2.6. Cdigos de operao (opcodes)

    Os programas usam cdigos para fornecer instrues para a CPU. Estes cdigos

    so chamados de cdigos de operao ou opcodes. Cada opcode instrui a CPU a

    executar uma seqncia especfica para realizar sua operao. Microcontroladores de

    diferentes fabricantes usam diferentes conjuntos de opcodes porque so implementados

    internamente por hardware na lgica da CPU. O conjunto de instrues de uma CPU

    especifica todas as operaes que podem ser realizadas. Opcodes so uma

    representao das instrues que so entendidas pela mquina, isto , uma codificao

    em representao binria a ser utilizada pela CPU. Mnemnicos so outra representao

    para as instrues, s que agora, para serem entendidas pelo programador.

    2.7. Mnemnicos das instrues e assembler

    Um opcode como 0x4C entendido pela CPU, mas no significativo para ns

    humanos. Para resolver esse problema, um sistema de instrues mnemnicas

    equivalentes foram criadas (Linguagem Assembly). O opcode 0x4C corresponde ao

    mnemnico INCA, l-se incrementa o acumulador, que muito mais inteligvel. Para

    realizar a traduo de mnemnicos em cdigos de mquina (opcodes e outras

    informaes) utilizados pela CPU necessrio um programa computacional chamado

    assembler (compilador para linguagem Assembly). Um programador utiliza um conjunto

    de instrues na forma de mnemnicos para desenvolver uma determinada aplicao, e

    posteriormente, usa um assembler para traduzir estas instrues para opcodes que a

    CPU pode entender.

    Aps a descrio da unidade central de processamento de um microcontrolador

    podemos partir para o aprendizado da linguagem de programao Assembly.

    Recomenda-se a leitura da folha de dados (principalmente a seo que trata do conjunto

    de instrues) do microcontrolador, bem como da apostila do microcontrolador HC08,

    famlia QT/QY. O prximo captulo deste documento ir descrever diversos perifricos que

    podem compor um microcontrolador, como portas de entrada/sada, temporizadores, entre

    outros.

    12 Prof. Gustavo Weber Denardin

  • 3. Perifricos

    Os microcontroladores normalmente so classificados em famlias, dependendo

    da aplicao a que se destinam. A partir da aplicao que a famlia de microcontroladores

    se destina, um conjunto de perifricos especficos escolhido e integrado a um

    determinado microprocessador. Estes microprocessadores normalmente operam com

    barramentos de 8, 16 ou 32 bits, e apresentam arquiteturas RISC (Reduced Instruction

    Set Computer) ou CISC (Complex Instruction Set Computer). Alguns exemplos de

    microcontroladores que utilizam microprocessadores com arquitetura RISC so o PIC

    (Microchip) e o MSP430 (Texas Instruments). J o MC68HC08 e HCS08 (Freescale) e o

    8051 (Intel) so exemplos de microcontroladores que utilizam arquitetura CISC.

    Apesar da classificao dos microcontroladores em famlias, existem perifricos

    necessrios a praticamente todas as aplicaes, que so a memria de dados e a

    memria de programa. A memria de dados mais utilizada a RAM (Random Access

    Memory), que uma memria voltil, ou seja, no preserva o seu contedo sem uma

    fonte de alimentao.

    Recentemente as memrias de programa sofreram uma grande mudana. A

    alguns anos atrs as memrias de programa mais utilizadas eram a ROM (Ready-Only

    Memory) e a EPROM (Erasable Programmable Read-Only Memory). O grande problema

    da utilizao de tais memrias era a falta de praticidade durante o desenvolvimento de um

    sistema embarcado. Com a popularizao das memrias FLASH e, ainda, devido a

    facilidade de utilizao, cada vez mais os microcontroladores tendem a ser produzidos

    com esta memria, em substituio a ROM e a EPROM. Importante lembrar que a

    praticidade da memria FLASH se deve a esta memria ser uma variao das EEPROM

    (Electrically-Erasable Programmable Read-Only Memory) que permitem que mltiplos

    endereos sejam apagados ou escritos com sinais eltricos.

    A seguir sero apresentadas as caractersticas e aplicaes dos principais

    perifricos encontrados em microcontroladores, tais como: portas de entrada e sada,

    temporizadores, portas de comunicao serial e conversores Analgico-digitais (A/D).

    13 Prof. Gustavo Weber Denardin

  • 3.1 Temporizadores

    Um microprocessador deve possuir um relgio. O relgio pode ser implementado

    por um cristal oscilador que sincroniza todo o funcionamento do microprocessador,

    controlando o tempo de cada um dos eventos relacionados aos dispositivos integrados a

    ele.

    Os temporizadores utilizam a base de tempo do relgio para poder implementar

    contagens de tempo bem especficas e configurveis. Estes utilizam contadores,

    incrementados na mesma base de tempo do relgio. Desta forma possvel descrever

    tempo em nmero de ciclos de um relgio. Por exemplo, imagine um microprocessador

    utilizando um relgio de 20 MHz. O perodo relativo a esta freqncia 50 ns. Podemos

    representar ento um tempo de 1ms atravs de perodos de 50ns, obtendo o valor de

    20000. Ou seja, se incrementarmos um contador a cada ciclo de relgio, no caso 50ns,

    quando este contador atingir o valor de 20000, teremos atingido a contagem de 1ms.

    Para que este mtodo seja aplicado, existe a necessidade da utilizao de pelo menos 2

    registradores. O registrador que ser incrementado e o registrador que conter o valor a

    ser atingido. No entanto, existe um problema relacionado a este mtodo. Imagine que

    precisemos de um tempo na ordem de segundos, por exemplo, 1 segundos. Se

    estivermos utilizando um relgio de 4 MHz, seria necessrio registradores de 24 bits para

    representar o valor de 4x106. Com o intuito de reduzir o tamanho destes contadores, os

    temporizadores apresentam a possibilidade de diviso do relgio, normalmente por

    valores mltiplos de 2. No caso do exemplo acima, poderamos dividir o relgio por 128,

    obtendo uma freqncia de 31,250 KHz. Ento, para representarmos 1 segundo, seria

    necessrio uma contagem de 31250 perodos de 32s, ou seja, um valor que pode ser

    representado em 16 bits.

    Devemos lembrar que a diviso ter influncia somente no tempo de

    incrementao do contador, continuando o barramento interno do microprocessador a

    operar com o relgio original.

    Para exemplificar a configurao dos registradores relativos a um temporizador

    em um microcontrolador ser utilizado o microcontrolador MC68HC908QY4. O processo

    de configurao apresentado a seguir.

    Os microcontroladores da linha HC08 normalmente possuem 1 ou 2

    temporizadores. Os registradores relativos a estes temporizadores apresentam nomes

    semelhantes, tendo apenas o nmero no temporizador para diferenci-los. Os trs

    14 Prof. Gustavo Weber Denardin

  • registradores de configurao do temporizador neste microcontrolador so: TSC, TCNT e

    TMOD. Abaixo apresentado o diagrama de blocos do temporizador destes

    microcontroladores. importante ressaltar que alguns dos registradores apresentados na

    figura so relativos ao mdulo PWM e captura de entrada.

    Figura Diagrama de blocos do mdulo temporizador de microcontrolador MC68HC908QY4

    TSC (Timer Status and Control Register):

    Possibilita habilitar a interrupo do temporizador, verificar o estado da flag de

    interrupo, para-lo, reiniciar a contagem e dividir o relgio para obter a base de tempo.

    15 Prof. Gustavo Weber Denardin

  • Figura Registrador TSC

    Abaixo sero descritos as funes de cada um dos bits deste registrador:

    TOF (Timer Overflow Flag): Este bit de escrita/leitura torna-se setado quando o

    registrador contador (TCNT) atinge o valor do registrador de mdulo de contagem

    (TMOD), condio essa que indica o estouro da contagem de tempo. O procedimento

    correto para limpar esta indicao ler o registrador TSC e escrever um 0 lgico para o

    bit TOF;

    1 = O mdulo temporizador atingiu o valor desejado

    0 = O mdulo temporizador no atingiu o valor desejado

    TOIE (Timer Overflow Interrupt Enable Bit): Este bit de escrita/leitura habilita a

    interrupo do temporizador quando o bit TOF for setado.

    1 = Interrupo do temporizador ativa

    0 = Interrupo do temporizador desabilitada

    TSTOP (Timer Stop Bit): Este bit de escrita/leitura para o incremento do contador

    de tempo.

    1 = Contador de tempo parado

    0 = Contador de tempo ativo

    TRST (Timer Reset Bit): Levar este bit de escrita para nvel lgico 1 ir iniciar o

    contador de tempo com zero e colocar o divisor de base de tempo para o estado inicial,

    ou seja, diviso por 1.

    1 = Pr-Escala de base de tempo e contador iniciados com o valor 0;

    0 = Sem efeito

    16 Prof. Gustavo Weber Denardin

  • PS[2:0] (Prescaler Setect Bits) Bits de pr-escala da base de tempo. Estes bits

    de escrita/leitura selecionam um dos sete possveis valores de diviso da base de tempo

    do relgio para utilizao como base de tempo do temporizador.

    PS2 PS1 PS0 Base de tempo do temporizador0 0 0 Clock de barramento interno / 1

    0 0 1 Clock de barramento interno / 2

    0 1 0 Clock de barramento interno / 4

    0 1 1 Clock de barramento interno / 8

    1 0 0 Clock de barramento interno / 16

    1 0 1 Clock de barramento interno / 32

    1 1 0 Clock de barramento interno / 64

    1 1 1 No disponvel

    TCNT (Timer Count Registers):

    Estes registradores so somente de leitura e contm o valor mais significativo

    (TCNTH) e menos significativo (TCNTL) do contador do temporizador. A leitura do

    registrador mais significativo deve ser realizada primeiro.

    Figura Registrador TCNTH e TCNTL.

    TMOD (Timer Module Registers):

    Estes registradores de escrita/leitura contm o valor do mdulo da contagem do

    temporizador. Quando os registradores de contagem (TCNT) atingem o valor dos

    registradores de mdulo (TMOD), o bit TOF torna-se nvel lgico 1 e os registradores de

    17 Prof. Gustavo Weber Denardin

  • contagem resumem a contagem para $0000 at o prximo passo de clock. Escrever no

    registrador TMODH inibe o bit TOF at que o registrador TMODL seja escrito.

    Figura Registradores TMODH e TMODL

    Estando os registradores a serem configurados apresentados pode-se demonstrar

    um exemplo de utilizao. Abaixo ser implementada a configurao de um temporizador

    utilizando um relgio de 3,2 MHz para obter a base de tempo de 10ms.

    Perodo relativo a base de tempo: Perodo= 13,2106

    =312,5109

    Clculo do valor de mdulo de tempo: Mdulo= 10103

    312,5109=32000

    O valor 32000 deve ser escrito nos registradores TMODH e TMODL da seguinte

    maneira: O valor deve ser convertido para hexadecimal, sendo este igual a 7D00h. O

    valor obtido um valor vlido dentro dos 16 bits referentes aos registradores TMODH e

    TMODL, ou seja, a base de tempo do relgio foi dividida por 1. Desta forma, TMODH

    igual a 7Dh e TMODL igual a 00h. Abaixo o exemplo de configurao dos registradores

    para este caso apresentado, tanto em assembly, quanto em linguagem c.

    18 Prof. Gustavo Weber Denardin

  • Assembly:

    MOV #$7D,TMODHCLR TMODL; Configurao do registrador TSC:; Diviso por 1, timer ativo com interrupo do temporizador habilitada.; TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0; 0 1 0 0 0 0 0 0MOV #$40,TSC

    c:

    TMOD = 32000;/*Configurao do registrador TSC:Diviso por 1, timer ativo com interrupo do temporizador habilitada.TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0 0 1 0 0 0 0 0 0 */TSC = 0x40;

    Para demonstrar um caso onde se faz necessrio a diviso da base de tempo, o

    temporizador ser configurado utilizando um relgio de 3,2 MHz para obter a base de

    tempo de 100ms.

    Perodo relativo a base de tempo: Perodo= 13,2106

    =312,5109

    Clculo do valor de mdulo de tempo: Mdulo= 100103

    312,5109=320000

    Para representar 320000 necessrio mais do que os 16 bits disponveis. Desta

    forma se faz necessrio a diviso da base de tempo. Dividindo 320000 pelo maior valor

    possvel em 16 bits, encontramos 4,88. Assumimos ento o prximo valor vlido de

    diviso, ou seja, oito, como fator de diviso da base de tempo.

    Fator de diviso da base de tempo: Fator=32000065535 =4,88

    E, recalculando os valores de configurao:

    Perodo relativo a base de tempo: Perodo= 1

    3,2106

    8 =2,5106

    19 Prof. Gustavo Weber Denardin

  • Clculo do valor de mdulo de tempo: Mdulo= 100103

    2,5106=40000

    Sendo 40000 um valor vlido em 16 bits, a configurao do temporizador em

    linguagem c apresentada abaixo:

    c:

    TMOD = 40000;/*Configurao do registrador TSC:Diviso por 8, timer ativo com interrupo do temporizador habilitada.TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0 0 1 0 0 0 0 1 1 */TSC = 0x43;

    Obs: Devemos lembrar que o cdigo contido nas interrupes deve ser o menor

    possvel, com o intuito de evitar que o tempo de execuo deste cdigo seja superior ao

    tempo da prxima interrupo. Por exemplo, se configurarmos a interrupo do

    temporizador para ocorrer a cada 100s, o tempo de execuo do cdigo contido nesta

    interrupo no deve ser superior a esta base de tempo.

    Exemplo de utilizao da interrupo do temporizador (esta interrupo

    conhecida como interrupo de estouro de tempo):

    Assembly:

    ; Interrupo do temporizador.TOVER: BCLR 7,TSC ; Limpa a flag da interrupo do temporizador INC I ; Incrementa uma varivel qualquer RTI ; Retorna da interrupo

    c:

    // Interrupo do temporizadorinterrupt void tover(void) { TSC_TOF = 0; // Limpa a flag da interrupo do temporizador i++; // Incrementa uma varivel qualquer } // Retorna da interrupo

    20 Prof. Gustavo Weber Denardin

  • 3.2 PWM (Pulse Width Modulation)

    O mdulo de gerao de Modulao por Largura de Pulso (PWM) um recurso

    muito utilizado para o controle de motores e conversores CC-CC em geral. A partir dele

    possvel gerar um sinal analgico, apesar de sua sada ser um sinal digital que assume

    apenas os nveis lgicos alto (um) e baixo (zero). A sada gerada uma onda quadrada,

    com freqncia constante e largura de pulso varivel. Estes conceitos esto diretamente

    relacionados com o perodo fixo e o ciclo ativo (duty cycle) respectivamente.

    A freqncia de uma onda pode ser definida como a quantidade de vezes que ela

    se repete no tempo. E o perodo cada pedao dessa onda que ir se repetir.

    O duty cycle define o tempo de sinal ativo (nvel lgico alto) em um perodo fixo.

    Assim, quando temos um duty cycle de 100%, temos nvel lgico alto por todo o perodo.

    Um duty cycle de 50% define a metade do perodo em nvel lgico alto e a outra metade

    em nvel lgico baixo. Se uma sada TTL for utilizada, a tenso mdia de sada em um

    duty cycle de 50% ser 2,5V. Estes conceitos so demonstrados na figura abaixo.

    Devemos lembrar que o PWM nem sempre possui estado inicial positivo, podendo iniciar

    o perodo com nvel lgico baixo.

    Figura Sinais modulados por Largura de Pulso

    21 Prof. Gustavo Weber Denardin

  • A base de tempo dos mdulos PWM normalmente implementada de duas

    formas. Uma destas formas utilizando o prprio mdulo temporizador como base de

    tempo no PWM, ou seja, se o temporizador est configurado para um perodo de 1ms, a

    freqncia do PWM ser de 1 KHz. A outra forma utilizando um temporizador especfico

    para o PWM, que deve ser configurado para a freqncia desejada. Ainda, um

    temporizador pode ser utilizado como base de tempo de vrias sadas PWM, ou seja,

    vrios PWM com a mesma freqncia, mas larguras de pulso diferentes.

    A figura a seguir ir exemplificar o funcionamento de um PWM em um

    microcontrolador onde o registrador PTPER possui o valor referente ao perodo do PWM

    e os registradores PWM1H e PWM2H representam dois canais de sada PWM.

    Figura Sinais PWM com mesmo perodo e largura de pulso diferentes.

    Para exemplificar a configurao de um mdulo PWM ser utilizado novamente o

    microcontrolador MC68HC908QY4. Este microcontrolador utiliza o temporizador como

    base de tempo para o perodo do PWM. Desta forma, para configurar a freqncia do

    PWM deve-se utilizar a mesma metodologia adotada para o temporizador. Neste exemplo

    ser configurado um PWM de 10 KHz com largura de pulso inicial do ciclo ativo de 40%,

    onde o relgio utilizado ser de 3,2 MHz.

    22 Prof. Gustavo Weber Denardin

  • Perodo da base de tempo do relgio: Perodo= 13,2106

    =312,5109

    Valor de mdulo de tempo para 100s: Mdulo= 100106

    312,5109=320

    Estando o mdulo da base de tempo do PWM configurado, deve-se partir para a

    configurao da largura do pulso e do nvel do ciclo inicial do PWM. Atravs do mdulo

    PWM deste microcontrolador possvel obter duas sadas PWM para cada temporizador.

    Como o microcontrolador utilizado possui somente um temporizador, possvel obter

    duas sadas PWM, conhecidas como canal 0 e canal 1. Os registradores de configurao

    do mdulo PWM so: TSC0, TSC1, TCH0 e TCH1. Pode-se notar que os valores 0 e 1

    so relativos ao canal a que se destina a configurao.

    Este microcontrolador apresenta duas maneiras de se utilizar estes canais. As

    sadas PWM podem ser configuradas no modo com buffer ou sem buffer. No modo com

    buffer ambos os canais so aproveitados para gerar uma sada PWM. O modo com buffer

    opera da seguinte maneira: Ambos os canais so configurados para operar com buffer. A

    configurao da largura de pulso inicial realizada no canal zero. Quando se desejar

    alterar a largura de pulso da sada PWM, altera-se o valor da largura de pulso no canal

    um. Ou seja, toda vez que se desejar alterar o valor da largura de pulso realizado um

    intercalamento entre os dois canais. A sada PWM ficar agregada ao pino de sada do

    canal zero.

    J no modo sem buffer, cada canal de tempo pode gerar uma sada PWM. O

    cuidado que deve ser tomado neste caso que alteraes de largura de pulso devem ser

    realizadas em locais bem especficos. A alterao da largura de pulso para um valor

    superior deve ser realizada na interrupo de estouro de tempo (temporizador). A

    alterao da largura de pulso para um valor inferior deve ser realizada na interrupo de

    comparao do devido canal. Na figura a seguir apresentado os locais referentes as

    interrupes supracitadas.

    23 Prof. Gustavo Weber Denardin

  • Figura Largura de pulso e perodo de um PWM

    Abaixo temos a configurao de bits relativa aos registradores TSC0 e TSC1.

    Figura Timer Channel Status And Control Registers

    A seguir sero descritos as funes de cada um dos bits deste registrador:

    CHxF (Channel x Flag Bit): Quando o canal x est configurado para comparao

    de sada (modo que permite a implementao de um PWM), esta flag torna-se 1 quando o

    valor do registrador contador de tempo (TCNT) atinge a valor contido no registrador do

    canal x (TCHx). Para limpar esta flag deve-se ler o registrador TSCx e escrever um zero

    lgico para este bit.

    24 Prof. Gustavo Weber Denardin

  • 1 = Comparao de sada no canal x

    0 = Sem comparao de sada no canal x

    ChxIE (Channel x Interrupt Enable Bit): Este bit de escrita/leitura permite habilitar

    a interrupo de comparao de sada para o canal x.

    1 = Interrupo do canal x habilitada

    0 = Interrupo do canal x desabilitada

    TOVx (Toggle On Overflow Bit): Quando o canal x est configurado para

    comparao de sada, este bit de escrita/leitura controla o comportamento da sada do

    canal x quando ocorre um estouro de tempo no temporizador.

    1 = Valor lgico no pino relativo ao canal x se altera no estouro de tempo

    0 = Valor lgico no pino relativo ao canal x no se altera no estouro de tempo

    ChxMAX (Channel x Maximum Duty Cycle Enable Bit): Quando o bit TOVx est

    em nvel lgico 1, ao setar o bit ChxMAX ir forar o Duty Cycle do canal para 100%.

    Como a figura a seguir demonstra, o efeito relativo a este bit s notado 1 ciclo aps que

    este bit alterado. O Duty Cycle permanece 100% at que este bit volte ao estado lgico

    zero.

    Figura Latncia do bit CHxMAX

    Os outros bits relativos a estes registradores so configurados a partir da tabela

    abaixo:

    25 Prof. Gustavo Weber Denardin

  • Tabela Seleo de modo, nvel e borda

    O registrador onde realizada a configurao da largura de pulso o TCHx,

    sendo TCHxH o registrador de maior significado e TCHxL o de menor significado na

    palavra de 16 bits que ir representar a largura do pulso. Abaixo estes registradores so

    apresentados.

    26 Prof. Gustavo Weber Denardin

  • Figura Registradores TCH0H, TCH0L, TCH1H e TCH1L.

    Voltando ao exemplo onde deseja-se configurar um PWM de 10KHz com largura

    de pulso inicial igual a 40% e ciclo inicial ativo, utilizando um relgio de 3,2MHz. O mdulo

    referente ao perodo do PWM j foi definido, sendo igual a 320. Para configurarmos a

    largura inicial para 40% deve-se utilizar 40% do valor do mdulo do perodo encontrado,

    ou seja, TCH0 = 320 x 40% = 128.

    A seguir ser apresentado a configurao do PWM do exemplo acima, utilizando

    modo sem buffer com sada no canal zero, tanto para Assembly quanto para c.

    27 Prof. Gustavo Weber Denardin

  • Assembly:

    ; Configurao do mdulo de tempoLHDX #!320 ; Valor relativo ao perodo de 100usSTHX TMD ; Move para o registrador de mdulo do temporizadorLDHX #!128 ; Valor de 40% de largura de pulso (40% de 320)STHX TCH0 ; Move para o registrador do canal 0CLRH ; Limpa a parte alta do registrador de ndice, utilizado anteriormente; Sada PWM no canal 0, com alterao para nvel lgico baixo na comparao; CH0F CH0IE MS0B MS0A ELS0B ELS0A TOV0 CH0MAX; 0 1 0 1 1 0 1 0MOV #$5A,TSC0; Perodo do PWM igual a 100us; TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0; 0 1 0 0 0 0 0 0MOV #$40,TSC

    c:

    TMOD = 320; /* Perdo do PWM*/TCH0 = 128; /* 40% de PWM */

    /*Sada PWM no canal 0, com alterao para nvel lgico baixo na comparaoCH0F CH0IE MS0B MS0A ELS0B ELS0A TOV0 CH0MAX 0 1 0 1 1 0 1 0 */TSC0 = 0x5A;

    /*Perodo do PWM igual a 100us TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0 0 1 0 0 0 0 0 0 */TSC = 0x40; /* No divide o clock */

    Apesar de termos definido as inicializaes, se o modo sem buffer est sendo

    utilizado, precisamos implementar tambm no cdigo as interrupes de estouro de

    tempo e comparao de sada para ser possvel alterar o valor da largura de pulso desta

    sada.

    Assembly:; Interrupo do temporizador.TOVER: BCLR 7,TSC ; Limpa a flag da interrupo do temporizador BRCLR condio,SAIR_OVER ; Verifica a necessidade de aumentar a largura ; Se a flag estiver com zero, no corrige BCLR AUM,FLAG ; Limpa a flag da necessidade de aumentar MOV Valor_corrigido,TCH0 ; aumenta a largura de pulsoSAIR_OVER RTI ; Retorna da interrupo

    28 Prof. Gustavo Weber Denardin

  • ; Interrupo da comparao

    COMP: LDA TSC0 BCLR 7,TSC0 ; Limpa a flag da interrupo da comparao BRCLR condio,SAIR_COMP ; Verifica a necessidade de diminuir a largura ; Se a flag estiver com zero, no corrige BCLR DIM,FLAG ; Limpa a flag da necessidade de diminuir MOV Valor_corrigido,TCH0 ; diminui a largura de pulsoSAIR_COMP RTI ; Retorna da interrupoc:

    // Interrupo do temporizadorinterrupt void tover(void) { TSC_TOF = 0; // Limpa a flag da interrupo do temporizador if (condio){ /* Indicao para aumenta largura do PWM*/ flag_aum = 0; // Limpa flag de condio TCH0 = Valor_corrigido; // Corrige a largura do pulso } } // Retorna da interrupo

    // Interrupo da comparaointerrupt void comparacao(void){ byte i; i = TSC0; // L registrador de estado do PWM TSC0_CH0F = 0; // Limpa a flag if (condio) { // Verifica se necessrio diminuir a largura flag_dim = 0; // Limpa flag de condio TCH0 = Valor_corrigido; // Corrige a largura do pulso } }

    Em algumas aplicaes necessrio a insero de um tempo morto (dead time)

    devido ao tempo de comutao de certos tipos de componentes utilizados ou devido as

    topologias dos sistemas agregados a estas sadas PWM.

    Normalmente estes tempos mortos so inseridos em pares complementares de

    sadas PWM, ou seja, quando uma das sadas comuta para nvel lgico alto, a outra sada

    comuta para nvel lgico baixo. Abaixo apresentado um exemplo de utilizao de

    tempos mortos.

    29 Prof. Gustavo Weber Denardin

  • Figura Exemplo de utilizao de tempo morto

    3.3 Conversores Analgico-Digital e Digital-Analgico

    De um modo geral, os sinais encontrados no mundo real so contnuos (ou

    analgicos, pois variam no tempo de forma contnua), como, por exemplo: a intensidade

    luminosa de um ambiente que se modifica com a distncia, a acelerao de um carro de

    corrida, etc. Os sinais manipulados por computadores e sistemas embarcados so

    digitais, como por exemplo, uma faixa de udio lida de um compact disk.

    A converso analgico-digital (A/D) o processo que possibilita a representao

    de sinais analgicos no mundo digital. Desta forma possvel utilizar os dados extrados

    do mundo real para clculos ou operar seus valores.

    Em geral, o conversor A/D est presente internamente nos processadores e

    controladores de sinais digitais e alguns microcontroladores, mas tambm existem

    circuitos integrados dedicados a este fim.

    Basicamente um bloco que apresenta portas de entrada e sada. A entrada

    recebe sinais eltricos de forma contnua e possui uma faixa de tenso de entrada

    mxima e mnima. Nos microcontroladores que possuem um conversor A/D e operam na

    faixa de 5V, geralmente a faixa de tenso aceita sinais eltricos entre -5V e +5V.

    30 Prof. Gustavo Weber Denardin

  • Na sada o sinal amostrado em um dado intervalo de tempo fixo (determinado

    pela freqncia de amostragem). Esta amostra disponibiliza um certo valor que

    representa o sinal original naquele momento (quantizao). As caractersticas de

    quantizao esto relacionadas preciso do conversor.

    Para ilustrar esta situao, imagine que voc queira mostrar a temperatura de um

    forno em um display de cristal lquido (LCD). Para isto seriam necessrios alguns

    componentes eletrnicos. Os mais expressivos so: um transdutor (sensor de

    temperatura), um display de cristal lquido (LCD), um processador digital e um conversor

    analgico digital.

    Figura - Diagrama de blocos de uma converso A/D de um sinal de temperatura

    A temperatura um sinal analgico. O sensor de temperatura converte a

    temperatura em um sinal de impulsos eltricos analgicos. O conversor A/D recebe esse

    sinal e o transforma em sinal digital, atravs de amostragem, entregando ao processador.

    Este, por sua vez, manipula esses dados e envia-os para o display, mostrando em graus a

    temperatura do forno. A figura abaixo mostra a representao do sinal analgico de

    temperatura e seu equivalente na forma digital.

    Figura Representao de um sinal de temperatura analgico e digital.

    31 Prof. Gustavo Weber Denardin

  • A informao digital diferente de sua forma original contnua em dois aspectos

    fundamentais:

    amostrada porque baseada em amostragens, ou seja, so realizadas

    leituras em um intervalo fixo de tempo no sinal contnuo;

    quantizada porque atribudo um valor proporcional a cada amostra.

    Explorando um pouco mais o caso do forno, a figura abaixo detalha um pouco

    mais as trs etapas mais importantes do processo: a aquisio, a amostragem e o

    processamento.

    Neste diagrama de blocos, o sinal analgico capturado pelo transdutor (sensor),

    em seguida passa por um filtro, denominado de anti-alias, a fim de diminuir os rudos. A

    chave representa a freqncia de amostragem do conversor A/D, entregando ao

    processador o sinal digitalizado.

    Figura Diagrama de blocos da converso A/D.

    A freqncia de amostragem o nmero de amostras capturadas em um

    segundo. Esta freqncia dada em Hertz (Hz) e considerada adequada quando se

    pode reconstruir o sinal analgico razovel a partir de amostras obtidas na converso.

    A taxa de converso ou freqncia de amostragem de suma importncia para o

    processamento de sinais reais. Para obter uma taxa de amostragem adequada pode-se

    utilizar os teoremas de Nyquist ou Shannon. Estes teoremas indicam que um sinal

    contnuo x(t) pode ser amostrado adequadamente se tiver banda limitada, ou seja, seu

    espectro de freqncia no pode conter freqncias acima de um valor mximo (Fmx

    freqncia mxima). Ainda, outro ponto importante que a taxa de amostragem (Fa

    Freqncia de amostragem) deve ser escolhida para ser no mnimo duas vezes maior que

    a freqncia mxima (Fmx). Por exemplo, para representar um sinal de udio com

    32 Prof. Gustavo Weber Denardin

  • freqncias at 10 KHz, o conversor A/D deve amostrar esses sinais utilizando uma

    freqncia de amostragem de no mnimo 20 KHz.

    Para melhor entendimento, vamos ver como funciona um conversor A/D de 4 bits

    (Figura abaixo).

    Figura Converso A/D de 4 bits.

    Com 4 bits o mximo representvel o nmero 16. Isso quer dizer que temos

    uma faixa de 0 a 15 (no sinalizado) ou +7 a -8 (sinalizado). Nesse conversor fictcio,

    teremos uma variao a cada 1 volt. A figura anterior mostra um sinal de udio de 200 Hz

    variando de +7 a -8 volts, que pode ser capturado por um microfone. Conforme o teorema

    de Nyquist, seria necessrio uma freqncia de amostragem de 400 Hz.

    Lembrando que, se o sinal de udio possusse amplitude maior que a faixa

    representvel do conversor A/D (7V a -8V), ento no seria possvel converter tal sinal.

    O conversor D/A possui todas as caractersticas do conversor A/D, as quais

    diferem apenas porque o conversor D/A pega um sinal digital e transforma em analgico.

    Por exemplo, em uma aplicao de udio, um microfone captura o udio e envia a um

    conversor A/D, que entrega o sinal amostrado e quantizado a um processador digital. Este

    ltimo efetua diversas operaes com o sinal de udio. S ento o processador envia ao

    conversor D/A, para remontar o sinal analgico a partir do sinal digital, para ser

    reproduzido em um alto-falante. Um exemplo de conversor D/A de 16 bits o DAC1221,

    da Texas Instruments.

    Novamente para exemplificar a configurao de um conversor A/D em um

    microcontrolador ser utilizado o microcontrolador MC68HC908QY4. Este

    microcontrolador possui um conversor A/D por aproximao sucessiva linear com quatro

    canais, ou seja, existem 4 entradas possveis para sinais analgicos que so

    multiplexadas para um nico conversor A/D. Isto implica em que s um canal ser

    convertido em um determinado momento. A resoluo deste A/D de 8 bits, no entanto, a

    33 Prof. Gustavo Weber Denardin

  • Freescale disponibilizou uma nova verso com A/D de 10 bits, o MC68HC908QY4A. Na

    figura a seguir apresentado o diagrama de blocos do conversor A/D deste

    microcontrolador.

    Figura Diagrama de blocos do conversor A/D do microcontrolador MC68HC908QY4

    34 Prof. Gustavo Weber Denardin