Você está na página 1de 34

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

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.

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 temporizador

Clock de barramento interno / 1

Clock de barramento interno / 2

Clock de barramento interno / 4

Clock de barramento interno / 8

Clock de barramento interno / 16

Clock de barramento interno / 32

Clock de barramento interno / 64

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=

Clculo do valor de mdulo de tempo:

1
=312,5109
6
3,210

Mdulo =

10103
=32000
312,5109

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,TMODH
CLR
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 0
MOV
#$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 =

Clculo do valor de mdulo de tempo:

1
9
=312,510
6
3,210

Mdulo =

100103
=320000
312,5109

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 =

320000
=4,88
65535

E, recalculando os valores de configurao:


Perodo relativo a base de tempo:

19

Perodo=

1
=2,5106
6
3,210

Prof. Gustavo Weber Denardin

Clculo do valor de mdulo de tempo:

100103
Mdulo =
=40000
2,5106

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
INC
I
RTI

; Limpa a flag da interrupo do temporizador


; Incrementa uma varivel qualquer
; Retorna da interrupo

c:
// Interrupo do temporizador
interrupt void tover(void) {
TSC_TOF = 0;
i++;
}

20

// Limpa a flag da interrupo do temporizador


// Incrementa uma varivel qualquer
// Retorna da interrupo

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:

Valor de mdulo de tempo para 100s:

Perodo=

1
=312,5109
6
3,210

Mdulo=

100106
=320
312,5109

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 tempo
LHDX #!320
; Valor relativo ao perodo de 100us
STHX TMD
; Move para o registrador de mdulo do temporizador
LDHX #!128
; Valor de 40% de largura de pulso (40% de 320)
STHX TCH0
; Move para o registrador do canal 0
CLRH
; 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
0
MOV
#$5A,TSC0
; Perodo do PWM igual a 100us
; TOF TOIE TSTOP TRST Reservado PS2 PS1 PS0
; 0
1
0
0
0
0
0 0
MOV
#$40,TSC
c:
TMOD = 320;
TCH0 = 128;

/* Perdo do PWM*/
/* 40% de PWM */

/*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
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 pulso
SAIR_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 pulso
SAIR_COMP
RTI
; Retorna da interrupo
c:
// Interrupo do temporizador
interrupt void tover(void) {
TSC_TOF = 0;
if (condio){
flag_aum = 0;
TCH0 = Valor_corrigido;
}
}
// Interrupo da comparao
interrupt void comparacao(void){
byte i;
i = TSC0;
TSC0_CH0F = 0;
if (condio) {
flag_dim = 0;
TCH0 = Valor_corrigido;
}
}

// Limpa a flag da interrupo do temporizador


/* Indicao para aumenta largura do PWM*/
// Limpa flag de condio
// Corrige a largura do pulso
// Retorna da interrupo

// L registrador de estado do PWM


// Limpa a flag
// Verifica se necessrio diminuir a largura
// Limpa flag de condio
// 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

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

Você também pode gostar