Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Micro Do Gustavo Weber
Apostila Micro Do Gustavo Weber
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
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:
Sadas para exteriorizar informaes processadas pela CPU para o mundo externo
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
11
12
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
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
15
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
No disponvel
17
Perodo=
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
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 =
1
9
=312,510
6
3,210
Mdulo =
100103
=320000
312,5109
Fator =
320000
=4,88
65535
19
Perodo=
1
=2,5106
6
3,210
100103
Mdulo =
=40000
2,5106
c:
// Interrupo do temporizador
interrupt void tover(void) {
TSC_TOF = 0;
i++;
}
20
21
22
Perodo=
1
=312,5109
6
3,210
Mdulo=
100106
=320
312,5109
23
25
26
27
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
; 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;
}
}
29
30
31
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).
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
34