Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
UNIDADE 1
Microcontroladores e
Microprocessadores
Introduo aos sistemas
embarcados
2017
Editora e Distribuidora Educacional S.A.
Avenida Paris, 675 Parque Residencial Joo Piza
CEP: 86041-100 Londrina PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
Sumrio
Convite ao estudo
Nesta primeira unidade, iniciaremos nossa jornada atravs do
mundo digital/virtual, paralelo ao nosso, e recm-descoberto por
ns. Vamos aprender como a eletrnica digital que voc estudou
pode ser organizada em memrias, processador, barramentos
e perifricos, permitindo que um sistema processado exista e
funcione. muito importante um bom aproveitamento no
estudo desta primeira parte, pois os fundamentos e todos os
outros assuntos posteriores remetero, direta ou indiretamente,
aos termos apresentados aqui.
No pode faltar
Ao atingir o pensamento lgico, racional e abstrato, o homem
demonstrou necessidade de simbolizar, quantificar e classificar as
coisas ao seu redor, para realizar suas tarefas do dia a dia, cada vez
Assimile
Um sistema embarcado um dispositivo eletrnico e computacional
capaz de controlar perifricos a partir da execuo de um programa,
que no seja um computador. projetado para realizar tarefas
bem particulares, com grande restrio de recursos, memria e
processamento.
Exemplificando
Se pararmos para observar, podemos facilmente identificar quais dos
aparelhos que utilizamos possuem processamento, como o televisor
digital, os celulares e cmeras digitais, secretria eletrnica, micro-ondas,
MP3 player, carros, impressoras, mquina de lavar, entre muitos outros.
No entanto, alguns aparelhos no necessitam de processamento, como:
fogo, liquidificador, amplificador de som, interruptor, chuveiro, escova
de dentes eletrnica, etc.
Reflita
Denominamos perifricos internos, os circuitos so embutidos dentro
do chip com o processador e se comunicam por barramentos internos.
Perifricos Externos
Perifricos Internos
Oscilador
Temporizador Porta Digital Interface Serial ...
Barramento de Endereo
CPU
Barramento de Instruo/Dado
Memrias
FLASH RAM EEPROM
CPU CPU
Instrues
Dados Instruo Dados
Dados
Memria de Memria de Memria de Memria de
Programa Dados Programa Dados
Pesquise mais
O pipeline uma tcnica de processamento que trouxe muitos
benefcios para os processadores modernos. Pesquise mais sobre
esse procedimento e entenda como seu funcionamento bsico em:
<http://homepages.dcc.ufmg.br/~brunors/AOCII/pipeline.pdf>. Acesso
em: 8 jun. 2017.
Memrias
Apesar de conter outros significados, para a computao,
memria significa componente de hardware capaz de armazenar
Exemplificando
At mesmo os projetos mais primrios precisaro de perifricos externos.
O sistema de um semforo, por exemplo, utilizar minimamente
os perifricos externos: boto de pedestre e luzes do farol, alm dos
perifricos internos: temporizadores e entradas/sadas digitais.
Reflita
Considerando o seu conhecimento prvio e o pouco que vimos at
agora, voc saberia descrever quais seriam os perifricos internos e
externos necessrios no projeto de um mdulo de som automotivo, o
rdio digital que temos nos carros atuais?
Exemplificando
Pensando nos sistemas computacionais de uma maneira geral, ou seja,
sistemas embarcados e computadores, os perifricos externos mais
comuns so: boto, tecla e teclado, resistor, LED (light-emitting diode,
ou diodo emissor de luz), display, mostradores, mouse, memria externa,
conversor A/D ou D/A, buffer ou driver de corrente, optoacoplador,
transistor, rel, contator, motor, sensor digital ou analgico, impressora,
scanner, controle remoto, leitora de cdigo de barras, leitor de impresso
digital, touchpad, cmera digital, headphone, mdulos sem fio (wifi,
bluetooth, 4G, etc), MP3 player, pendrive, carto de memria, caixa de
som, entre muitos outros.
Avanando na prtica
Definio do ncleo de um sistema embarcado
Descrio da situao-problema
Uma empresa de desenvolvimento de jogos contratou voc
para gerenciar o desenvolvimento de um novo modelo de
videogame porttil de bolso, construdo a partir de um sistema
microprocessado: o famoso jogo Tetris. Para tal sistema, as entradas
consideradas devem ser os sinais dos botes do controle, a chave
liga e desliga e obviamente os sinais de relgio e de energia. As
sadas a serem controladas so o display de LCD - Liquid-Crystal
Display (ou mostrador de cristal lquido), que exibir a imagem do
jogo, dois LEDs que sinalizam ligado/desligado e jogo em pause,
ou parado, alm do sinal de udio, que deve ser enviado para os
autofalantes do jogo ou para o conector de headphone.
Resoluo da situao-problema
Podemos afirmar que existem diferenas em vrios aspectos
de tal escolha, como a quantidade de processamento ou o custo
final. Pelo fato deste tipo de jogo no exigir grficos elaborados
e nem elevados nveis de processamento, pode-se afirmar que
um microcontrolador seria suficiente para responder a todas as
requisies em tempo real. A escolha de um microprocessador
traria a necessidade de anexar todos os perifricos necessrios para
compor o conjunto mnimo, que no caso seriam os circuitos de:
controle de energia e hibernao; oscilao e gerao de sinais de
relgio; temporizao; buffer de interface digital (portas digitais);
memria de programa; memria de dados voltil; memria de
dados no voltil e de conexo entre todos eles (barramentos).
Isso traria muita complexidade na construo do sistema,
aumentando a demora, o custo e as chances de defeitos. O uso
de uma FPGA tornaria o projeto tambm muito mais complexo e,
consequentemente, caro de ser projetado. Entretanto, vale ressaltar
que, se houver demanda de milhares de unidades, a criao de um
hardware digital dedicado pode reduzir custos.
a) Na memria RAM.
b) Na memria FLASH.
c) Nos barramentos.
d) Nos perifricos.
e) No CPU.
a) LED.
b) Boto.
c) Portas digitais.
d) Display.
e) Sensor fim-de-curso.
Ncleo
Apesar de no ter o papel de armazenar dados, algumas informaes
importantes ficam contidas em registradores internos ao ncleo. Os
dados a serem processados pela ULA (Unidade Lgica e Aritmtica), ou
seus endereos de memria, ficam nos Registradores de Propsito
Geral, enquanto informaes para gerenciamento do processo ficam
em outros registradores especiais, de propsitos especficos.
Devido famlia de microcontroladores com o ncleo AVR, como
o caso do ATmega328VR, possuir a arquitetura Harvard (modificada,
pois h mais de um barramento de dados), as instrues so buscadas
na memria de programa por um barramento exclusivo ao de dados
e so executadas por um processo de canalizao (pipeline) de nvel
unitrio: enquanto uma instruo est sendo executada, a prxima j
pr-carregada do programa de memria, permitindo que estas sejam
executadas continuamente, uma em cada ciclo de relgio ou clock.
Reflita
Os registradores de trabalho geral recebem esse nome porque so
utilizados em todas as instrues do processador. As operaes no
podem ser feitas diretamente sobre os dados na memria, pois no h
ligao direta. Dessa forma, todos os dados processados sempre passam
por esses registradores e a maioria das instrues em um programa so
de transferncia interna de dados.
Pesquise mais
Os registradores X, Y e Z
Os registradores capazes de se agrupar so o R26 at o R31 e so
definidos como descrito na figura:
XH (high) XH (low)
Registrador X: 7 ... 0 7 ... 0
R27 R26
YH YL
Registrador Y: 7 0 7 0
R29 R28
ZH ZL
Registrador Z: 7 0 7 0
R31 R30
ULA
Conectada diretamente aos registradores gerais, a unidade
ULA responsvel por executar operaes entre estes, ou entre
Registrador de status
Armazena informaes sobre o resultado da instruo aritmtica
mais recentemente executada, que podem ser usadas para alterar
o fluxo do programa atravs de operaes condicionais. Quando
o programa sofre o desvio para uma rotina de interrupo, este
registrador deve ser armazenado na pilha, como ser estudado, pois
isso no feito automaticamente via hardware. Conheceremos a
descrio desse registrador especial.
BIT 7 6 5 4 3 2 1 0
flags I T H S V N Z C 0X005F
Assimile
O registrador de status muito importante para a execuo do programa,
pois todos os testes e desvios condicionais dependem das informaes
nele contidas.
Contador de programa
Funciona tambm como um ponteiro, porm indica para o
processador qual o endereo da prxima instruo a ser executada
na memria de programa. incrementado automaticamente na
medida em que as instrues so executadas, exceto quando ocorrem
saltos, que tm seus endereos indicados na prpria instruo. Estes
saltos, diretos ou por chamadas de subrotina, determinam o fluxo do
programa e podem desvi-lo para qualquer endereo vlido. Tambm
pode ser diretamente manipulado pelo programa usurio.
Barramentos
O barramento de dados de 8 bits, caracterizando o nmero de
bits do microcontrolador. As instrues do ATmega328 so de 16
Memrias e espaos
O espao de memria de programa dividido em duas sees:
a parte de Boot Program, ou programa de inicializao, e a parte de
programa de aplicao, ou programa usurio. Ambas as sees possuem
bit de travamento para protees de escrita ou leitura e escrita.
Durante interrupes e chamadas de subrotinas, o endereo de
retorno do PC armazenado na pilha. Assim como o ponteiro de
pilha, todos os programas usurios devem inicializar o SP na rotina
de reset, antes de subrotinas e interrupes ocorrerem, ou seja, a
primeira ao a ser feita quando ligado. Os dados na SRAM podem
ser facilmente acessados atravs de cinco diferentes modos de
endereamento suportados pela arquitetura AVR. Os espaos de
memria na arquitetura AVR so todos lineares e regulares.
Figura 1.9 | Espaos de memria de programa e de dados do ATmega328
Exemplificando
Para entender como esse processo de pipeline funciona, observe a
imagem abaixo, que mostra em cada ciclo de relgio uma instruo e
executada e a outra seguinte j capturada pela CPU para ser executada
no ciclo seguinte.
Figura 1.10 | Execuo das primeiras instrues em pipeline
Pesquise mais
O sistema de interrupes e reset do ATmega328P possui mais detalhes
interessantes de serem observados. Leia o curto trecho a respeito no
seu datasheet, ou manual, na pgina 32: <http://www.atmel.com/pt/
br/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_
Datasheet.pdf>. Acesso em: 10 jun. 2017.
CPU
Memria de Memria de
Programa Dados
Avanando na prtica
Definio de uma arquitetura de computador
Descrio da situao-problema
Uma empresa de microcontroladores est desenvolvendo um
novo modelo e contratou voc como engenheiro de arquitetura
de computadores para definir como ser a estrutura interna do
Resoluo da situao-problema
Considerando que o processador de 16 bits, significa que este
processa dois operadores de 16 bits em cada ciclo de operaos
e, portanto, o barramento de dados deve ser de 16 bits de largura.
Sabendo que as instrues so todas de 32 bits, necessrio que
o barramento de instrues seja de tambm 32 bits, para que o
processador possa buscar uma instruo completa em cada ciclo
de relgio. Foi dito que as memrias possuem 8 bits de informao
em cada endereo, portanto so necessrios 12 bits para enderear
os 4 kbytes de memria de dados, pois com 12 bits possvel gerar
4096 (=212) nmeros diferentes, ou seja, endereos de memria.
Esse nmero igual a 4K, pois 4k = 4* 210 = 212 . Isso define a
largura de 12-bits para o barramento de endereo de dados. Se
as instrues fossem tambm de 8 bits, a conta seria a mesma
para o barramento de endereo de instrues, pois cada instruo
estaria em um endereo de memria. Porm, cada instruo
ocupa exatamente quatro posies de memria, uma vez que
o enunciado diz que as instrues so todas de 32-bits, o que
significa que a primeira instruo estar no byte de endereo zero
e a segunda instruo estar no byte de endereo 4. Como esse
barramento de endereos acessar somente endereos mltiplos
de 4, os ltimos dois bits menos significativos no precisam ser
considerados e podem ser desprezados pelo sistema.
a) F, V, F, V.
b) F, F, V, F.
c) F, V, V, F.
d) V, V, F, F.
e) F, V, V, V.
No pode faltar
Linguagem de mquina para o microcontrolador AVR
O desenvolvimento de projetos em linguagem de mquina
praticamente inexistente por se tratar de um trabalho lento e
tedioso, todavia ainda possvel encontrar vrias ferramentas que
auxiliam a desenvolver este tipo de trabalho. J o Assembly uma
linguagem que est um nvel acima de abstrao, nas camadas
de abstrao, quando comparada com a linguagem de mquina,
pois suas instrues so mnemnicas (rtulos ou apelidos) que
correspondem individualmente a comandos (ou instrues) em
linguagem de mquina. Existem, ainda, linguagens de mais alto nvel,
como C, que para tornar seus programas embarcveis na memria
devem ser convertidos por um compilador para um cdigo em
Assembly ou diretamente em linguagem de mquina. Vale salientar
que as instrues em linguagens de mais alto nvel geralmente
correspondem a muitas instrues em linguagem Assembly e isso
permite a construo em blocos padres, o que agiliza muito o
processo de programao.
A programao em linguagem de mquina (literalmente escrever
zeros e uns) exige um entendimento tcnico do programador de como
as instrues so representadas, formadas, escolhidas e executadas.
Todas as instrues computacionais seguem um padro bsico:
possuem um prefixo que identifica a instruo, ou seja, qual a ao
que deve ser executada pelo processador. Os bits desse prefixo so
chamados de bits de controle e indicam se aquela instruo uma
soma, uma multiplicao, uma operao lgica, uma transferncia de
dados ou um salto no programa. Seguido desse prefixo, na instruo
existe mais um ou dois campos, referentes aos operadores, ou seja,
quais elementos a serem processados na execuo da instruo.
Nesses campos so identificados: valores constantes, registradores
de trabalho e endereos da memria a serem acessados. Os bits
nesse campo so chamados de bits de dados.
Na criao de cdigos em linguagem de mquina, o programador
deve realizar operaes aritmticas a prprio punho para determinar
Memria FLASH
Endereo Contedo Assembly equivalente
0 1110 0000 0000 0001 LDI R16, 1
1 1110 0000 0001 0010 LDI R17, 2
0000 1111 0000 0001
2 ADD R16, 17
...
3
Assembly
Realmente a linguagem de mquina no uma maneira
agradvel de criar um programa. Assim, agora estudaremos como
construir um programa em linguagem Assembly, bem prxima da
linguagem de mquina, pois tem uma relao direta, um a um,
para todas as instrues. No Assembly, as instrues de mquina
recebem mnemnicos, ou seja, apelidos, abstraindo o programador
de alguns detalhes e aumentando a legibilidade do cdigo. Cada
linha corresponde a uma instruo e segue o seguinte modelo:
[Rtulo] [Comando] Rd, k [;comentrio]
O rtulo representa um apelido para o endereo da memria
onde estar essa instruo, pode no existir e usado pelo programa
como referncia para as instrues de salto, que veremos mais
frente, nesta seo. O comando onde est o mnemnico, ou
seja, a instruo que o ncleo deve executar. O Rd representa o
registrador de destino, ou seja, qual dos registradores de propsito
geral receber o resultado da instruo. Para instrues de
deslocamento de dados para a memria, o Rd assume um endereo
Assimile
Na fase de inicializao, feita toda a configurao do sistema,
preparando o conjunto para os trabalhos que sero realizados. Essas
primeiras aes so: definio de quais pinos do microcontrolador
Diretivas de Assembly
Enquanto as instrues informam CPU o que ela deve fazer,
as diretivas de pr-compilao (tambm chamadas de pseudo-
instrues) so usadas pelo compilador no momento de gerar o
programa em linguagem de mquina. Esse tipo de comando no
se torna instrues executadas, mas cria amarraes que ajudam
muito na fase de programao. Por exemplo, voc pode definir a
constante MEIADUZIA = 6 e usar esse nome no programa. Na hora
da compilao, todos os nomes so antes substitudos pelo seu
valor definido. As principais so:
.EQU (equate), diretiva usada para definir constantes,
como a tradicional diretiva #define, utilizada por muitas
linguagens, como a C (MIZRAHI, 2008) e tambm define
endereos fixos da memria de dados, ou seja, as variveis
do programa. Desse modo, se um programa monitora o
sinal de temperatura, por exemplo, e armazena o seu valor
sempre no endereo 0x021A, a diretiva pode ser usada:
.EQU TEMPERATURA = 0x021A. Ou, para definir uma
constante, de nome MEIADUZIA, por exemplo, teramos:
.EQU MEIADUZIA = 6.
Exemplificando
Como foi mencionado, o Assembly, apesar de ser uma linguagem de
baixo nvel, traz consigo algumas facilidades, como o uso de definies.
Para exemplificar como as diretivas de compilao funcionam, considere
a instruo: IN R12, PINB. No lugar de PINB, o compilador insere o seu
endereo correspondente na hora de gerar o cdigo, que 0x0018.
Tanto essa quanto todas as outras definies para essa famlia de
microcontroladores est presente no arquivo que deve ser includo em
todos os programas em Assembly: m32def.inc.
Reflita
primeira vista, o que aprendemos nesta seo pode no parecer
muita coisa, mas, se voc usar sua capacidade de criar algoritmos, ver
que pode construir qualquer programa em Assembly a partir de um
fluxograma, pois aqui esto todas as informaes necessrias para isso.
Exemplificando
Para aplicar essas instrues estudadas, consideraremos o simples
exemplo: Construir um algoritmo e um programa em Assembly para
inverter o estado de um LED (inicialmente apagado) cada vez que um
boto for pressionado, alm de armazenar quantas vezes o boto foi
acionado desde a inicializao do sistema. Para isso, abstrairemos
inicialmente como as portas digitais so manipuladas e consideraremos
que o boto est conectado em algum canal da porta A e o LED em
algum canal (pino) da porta B. Um atraso deve ser utilizado a cada
vez que o boto acionado, para no contabilizar vrias vezes. Um
simples circuito e um possvel fluxograma/algoritmo capaz de resolver
o problema mostrado na Figura 1.17.
Pesquise mais
Infelizmente no conseguimos abordar todas as instrues aqui. Vale
apenas usar um pouco do seu tempo para ver o resumo do conjunto de
instrues oficial da AVR: <http://www.atmel.com/pt/br/Images/Atmel-
0856-AVR-Instruction-Set-Manual.pdf>. Acesso em: 22 abr. 2017.
Avanando na prtica
Controle do nvel de um reservatrio automtico
Descrio da situao-problema
Devido grande demanda que existe no seu estado, voc
decidiu, depois de formado, montar uma empresa de automao
Resoluo da situao-problema
Voc pode perceber que o uso de dois sensores de nvel seria
ideal para automatizar o sistema, um na parte superior (sensor
alto), e outro na parte inferior (sensor baixo) do reservatrio.
Aparentemente um sensor alto bastaria para orientar o sistema,
onde, de forma combinacional, a bomba est desligada caso o
sensor acuse contato com a gua, e ligada caso contrrio.
Considerando que o fluxo para o exterior no controlado pelo
sistema, pois ocorre de acordo com o uso da gua, quando a gua
atingir o nvel do sensor, a bomba seria desligada, mas logo que
algum usasse um pouco de gua, o nvel desceria e a bomba seria
religada, e por pouco tempo, pois o nvel de gua estaria prximo
do sensor. Alm do mais, caso o nvel dagua esteja poucos
milmetros abaixo da deteco do sensor, qualquer distrbio
no espelho dagua, como oscilaes, faria a bomba ser ligada e
desligada sequencialmente, podendo danific-la. Nesse tipo de
situao, ideal a criao de um sistema sequencial atravs de
uma mquina de estados. Desse modo, quando o processo est
no estado ENCHENDO = 1 (bomba ligada), ele deve permanecer
nesse estado at que a gua toque no sensor alto, fazendo o
a) Processar o ltimo dado que foi transferido para o ncleo, indicado pelo
rtulo com a instruo.
b) Desviar o programa para onde o seu rtulo aponta, caso o resultado da
ltima operao seja zero.
c) Transferir o dado que est onde o seu rtulo aponta, para que este possa
ser processado no ncleo.
d) Desviar o programa para onde seu rtulo indica, independentemente de
qualquer resultado anterior.
e) Invocar a subrotina, indicada pelo seu rtulo, independentemente de
qualquer resultado anterior.