Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Micro Do Gustavo Weber PDF
Apostila Micro Do Gustavo Weber PDF
1. Introduo
2. Definio de Microcontrolador
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.
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
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
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.
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
1
Perodo relativo a base de tempo: Perodo= 6
=312,5109
3,210
10103
Clculo do valor de mdulo de tempo: Mdulo = =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.
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;
100103
Clculo do valor de mdulo de tempo: Mdulo = =320000
312,5109
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 temporizador
interrupt void tover(void) {
TSC_TOF = 0; // Limpa a flag da interrupo do temporizador
i++; // Incrementa uma varivel qualquer
} // Retorna da interrupo
100106
Valor de mdulo de tempo para 100s: Mdulo= =320
312,5109
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.
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
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.
c:
TMOD = 320; /* Perdo do PWM*/
TCH0 = 128; /* 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;
// Interrupo da comparao
interrupt 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
}
}
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