Unidade 1 - Microcontroladores e IOT
Unidade 1 - Microcontroladores e IOT
Unidade 1 - Microcontroladores e IOT
E IOT
UNIDADE 1 – CONCEITOS
FUNDAMENTAIS DO
SISTEMA DE COMPUTAÇÃO
INICIAR
Introdução
Caro(a) estudante,
Bons estudos!
Tudo começou durante a Antiguidade, no Oriente Médio, com o ábaco, que era usado para
cálculos matemáticos. Por muito anos, não houve grandes evoluções nesse modo de
determinar valores exatos.
Durante o século XVII, John Napier criou tabelas de cálculos matemáticos, chamada
ossos de Napier. Depois, entre 1621 e 1638, o matemático William Oughtred, com
inspiração nas tabelas de Napier, criou a régua de cálculo, amplamente utilizada por
muitos anos.
Entre 1642 e 1647, Pascal desenvolveu uma máquina de calcular mecânica chamada
pascaline
, que fazia contas adição e subtração. Em 1671, o matemático Von Leibniz
adicionou à
pascaline
a operação de multiplicação e divisão. Em 1801, o matemático
francês Josef M. Jacquard introduziu o conceito de armazenamento às máquinas de
calcular.
Em 1880, Herman Hollerith desenvolveu uma nova máquina com leitura de cartões
perfurados. Com o sucesso dessa máquina, foi criada uma empresa e, com o tempo e a
união entre outras empresas, surgiu a IBM. Depois de 1946, a evolução dos
computadores pode ser dividida entre as seguintes gerações:
»
Clique nas abas para saber mais sobre o assunto
Primeira geração
Segunda geração
Terceira geração
Quarta geração
(1985-1991)
Quinta geração
(1991)
VOCÊ QUER VER?
A história dos computadores e da internet e o acesso à informação pode ser vista
na sequência de vídeos publicados pela Khan Academy Brasil, disponível em:
1.1.1 Microcomputador, arquitetura básica e linguagens de programação
As unidades de entrada e saída, por sua vez, têm a função de transferir dados entre o
processamento e os periféricos, que são elementos geradores ou receptores de
informação em um sistema de computadores, como teclado, impressora, scanners etc.
Além disso, para executar suas atividades de modo correto e eficiente, o computador
necessita da combinação de hardware e software. O hardware é a parte física do
computador, compondo seus componentes eletrônicos e periféricos. Nos computadores,
as placas, cabos, fontes de alimentação, memórias, impressoras, terminais de vídeo e
teclados são exemplos de hardware. Os softwares são programas que rodam dentro do
processador, com instruções detalhadas de como executar as determinadas atividades
recebidas escritas em linguagem de programação. Um software pode ter várias funções,
como editar textos, criar planilhas, jogos, editar vídeos ou imagens etc.
ROM (
Read Only Memory
)
: é uma memória em que as informações são gravadas
pelo fabricante. São conhecidas como memórias de leitura e as informações
gravadas são conhecidas como firmware;
PROM/OTP (
Programmable Read Only Memory/One Time Programing
)
: é uma ROM
programável, normalmente utilizada para equipamentos de produção em pequena
escala ou em testes de equipamentos;
EPROM (
Erasable and Programmable Read Only Memory
)
: é, também, uma ROM na
qual, além de ser possível a gravação, pode ser apagada e reprogramada. O chip
possui um orifício que pode ser reprogramado por meio da luz ultravioleta;
EEPROM (
Electrically Erasable and Programmable Read Only Memory
)
: essa
memória é similar à EPROM. No entanto, é apagada eletricamente e, depois, pode
ser reprogramada;
Flash
: são programadas em um dispositivo denominado programador de memória e
são a evolução das memórias EEPROM.
VOCÊ SABIA?
Antes de mais nada, para fabricar um processador é necessário executar um
projeto avançado do circuito. Em seguida, é hora de “colocar a mão na massa” e
começar sua fabricação. Para isso, é necessário areia, matéria-prima do
processador. Ao derretê-la, é possível extrair o silício, que é transformado em um
enorme bloco e cortado em discos. Depois disso, recebe uma camada de líquido
fotorresistente e, em seguida, passa pela fotolitografia. As partes bombeadas pela
luz UV são removidas, formando pequenos sulcos. Isso faz com que seja possível
adicionar uma camada de átomos dopantes aos discos, alterando a
condutividade do silício. Por fim, para evitar curtos-circuitos, uma camada selante
é aplicada e os sulcos são preenchidos com cobre.
Ele é composto por duas unidades principais: a ULA (unidade lógica e aritmética), que
tem a função de realizar as operações lógicas e matemáticas, e a UC, unidade de
controle, responsável pela codificação e execução das instruções, pelos sinais de
temporização para as outras partes do processador e do computador em geral e de
registradores que armazenam os dados, endereços e as próprias instruções.
Figura 2 – Estrutura de um chip.
O sistema ARM, altamente utilizado em sistemas embarcados, foi concebido nos anos
1980, época em que a empresa britânica Acorn Digital Computers (ADC) desenvolveu um
projeto para British Broadcast Corporation (BBC). Esse projeto foi os primeiros passos
para o nascimento do processador comercial com arquitetura RISC, que estava se
consolidando no mercado. Assim, nasceu o processador Acorn RISC Machine (ARM).
Desde então, a arquitetura ARM foi se modificando e atendendo aos objetivos e às
demandas de mercado. No entanto, não foi somente a arquitetura que evoluiu: extensões
foram adicionadas para segmentos específicos, como Security (TrustZone® technology);
Advanced SIMD (NEON™ technology); Virtualization, presente a partir da arquitetura
ARMv7-A, e Cryptographic, presente a partir da arquitetura ARMv8-A.
O ARM teve suas características fixadas em modelos com alta velocidade, die pequeno e
baixo consumo. O die, ou pastilha, é um bloco de material semicondutor de circuito
fabricado. Outra característica muito interessante dele é o equilíbrio entre esses
requisitos e a sua grande capacidade de criar códigos simples e compactos. Os
processadores ARM são escritos com instruções iguais. Assim, as famílias têm
compatibilidade e todos os processadores têm o seu desenvolvimento no modelo de
arquitetura, conforme sua área de aplicação:
»
Clique nas abas para saber mais sobre o assunto
Os processadores ARM fazem parte da nossa vida diária, estando presentes em
smartphones, tablets, automóveis, televisores e muito mais. No entanto, não podemos
esquecer que as raízes RISC desses processadores os tornam modernos e com reduzida
necessidade de compatibilidade para aplicações mais antigas.
A memória é um recurso primário que deve ser gerenciado com muito critério. Nota-se
que, embora a capacidade de memória disponível nos sistemas computacionais aumente
cada vez mais, os softwares demandam muito mais para ser armazenados e para sua
execução. Não podemos esquecer que a memória é finita, ou seja, possui um limite e, por
isso, gerenciá-la é muito importante para o funcionamento dos processos pelo sistema
operacional. Gerenciamento de memória é a tarefa desempenhada pela MMU (memory
management unit).
Um conceito importante diz respeito ao ambiente de memória virtual, que não faz
referência a endereços físicos de memória (endereços reais), mas sim a endereços
virtuais. Desse modo, quando há uma execução de instrução, o endereço virtual é
traduzido para um endereço físico e, assim, o processador acessa as posições da
memória principal.
O pino 29 representa
SPEN
, ou seja, o controle do byte de memória para leitura
quando uma ROM externa é usada para armazenar programas.
O pino 30 é
ALE
, ou seja, antes da leitura da memória externa, o microcontrolador
ativa a saída
ALE
.
O pino 31 é EA e faz o controle dos P2 e P3, que são utilizados para transmissão de
dados e endereço.
Observe na Figura 3:
»
Clique nas abas para saber mais sobre o assunto
Pino 9 Pino 10
Pino
Pino
Pino
Pino
11 a 14 15 a 19 20 21
Pino
Pino
22 23 a 28
Figura 4 – Pinagem do ATMEGA168/328P.
A grande maioria dos pinos do ATMEGA328 pode ser usada como entrada e saída digital
ou analógica. Nesta unidade, estamos identificando os pinos e na próxima unidade
estudaremos detalhadamente as portas do Arduino.
Na Figura 5, podemos ver que as placas do Arduino são interligadas com os pinos do chip
do microcontrolador ATMEGA328.
Figura 5 – Componentes de uma placa Arduino Uno, chip ATMEGA328.
1.3.1 Endereçamento
As operações com transferência de dados podem ser da RAM interna ou externa, sendo
que, quando é feito pela RAM interna e usando um cristal de 12 MHz, as instruções são
executadas de maneira muito mais rápida do que pela externa.
Nos modelos de Arduino, verificamos que são usados processadores do tipo RISC e,
especificamente, Advanced RISC, que pode executar milhares de instruções por segundo,
sendo uma especificação para a família MIPS.
piMode()
: determina a programação de um determinado pino, como entrada ou
saída;
digitalWrite()
: configura o pino já definido como saída, a trabalhar com nível 0 ou
nível 1;
digitalRead()
: configura o pino já definida como entrada, a trabalhar com nível 0 ou
nível 1;
analogRead()
: lê o valor analógico quando a entrada é habilitada como conversor
analógico-digital.
Além disso, essa ferramenta gráfica serve como auxílio para desenvolver os processos e
algoritmos. Sendo assim, de forma básica, podemos usar os principais símbolos usados
no seu desenvolvimento: linha de conexão, elipse, retângulo e losango.
A elipse é usada somente para identificar o início e o fim do programa. Na parte inicial,
deve-se colocar, dentro dela, o nome do programa e, se possível, explicar sua utilização.
Na parte final, escreve-se simplesmente FIM, significando o final da rotina.
O losango sempre representa uma tomada de decisão, na qual é avaliada, por meio de um
teste, uma variável de qualquer tipo. O resultado desse teste leva a dois caminhos: se for
positivo ou verdadeiro, indica um caminho para o fluxo de processamento, se for negativo
ou falso, indica outro caminho para o fluxo de processamento.
Além disso, é possível dizer que o fluxograma de um programa sequencial é simples, pois
não requer a representação de decisões, somente dos processamentos, conforme
apresentado no Fluxograma 1.
» Linguagem de programação
A linguagem de alto nível é de mais fácil utilização por parte dos usuários
(programadores), não possuindo acesso aos registradores internos e memórias. Seus
comandos são muito simples e fáceis de serem entendidos. As linguagens de
programação BASIC, C#, Java, Ruby, Python, Swift, JavaScript, PHP e PASCAL possuem
essas características.
» Programação assembly
Ao iniciar uma determinada programação, para que se tenha sucesso, são necessários
alguns detalhes. O principal deles é seguir uma determinada metodologia. Além disso, é
muito importante ter o devido conhecimento técnico, uma vez que, para desenvolver um
projeto de software, é preciso conhecer a arquitetura interna (hardware) do circuito
integrado, bem como o conjunto de instruções do dispositivo.
Um dos primeiros itens a ser avaliado é a viabilidade do projeto, que é determinada pelo
entendimento das especificações do cliente. Para a viabilidade, devem ser avaliados itens
como componentes, tecnologias, custos gerais, quantidade etc.
A próxima etapa é fazer um fluxograma geral do projeto. Trata-se de uma etapa que,
quando bem executada, coloca a programação automaticamente em um bom caminho,
uma vez que viabiliza o processo de geração do código. Além disso, um fluxograma bem
estruturado diminui consideravelmente os erros na programação.
Por fim, após esses testes, finalmente é feita a gravação do programa. No entanto, serão
executados novos testes do produto final para avaliar se os objetivos foram atingidos.
Síntese
Nesta unidade, conhecemos os conceitos fundamentais dos sistemas de computação, a
história dos computadores e arquitetura, adentrando no mundo dos microcontroladores e
conhecendo suas arquiteturas e pinagens.
Referências bibliográficas
A hi tó i d t d d i t t ài f ã | P t III P t d
A história dos computadores e da internet e o acesso à informação | Parte III
. Postado
por Khan Academy Brasil. (6min36s.). son. color. port. Disponível em: <
https://www.youtube.com/watch?v=nyFhZPoL9W4
>. Acesso em: 15 mai. 2020.
ARDUINO.
ATMEGA168/328P
– Arduino Pin Mapping. Disponível em: <
https://www.arduino.cc/en/Hacking/PinMapping168
>. Acesso em: 15 mai. 2020.
GIMENEZ, S. P.
Microcontroladores 8051
: conceitos, operações, fluxogramas e
programação. 1. ed. São Paulo: Érica, 2015.
GIMENEZ, S. P.
Microcontroladores 8051
: teoria do hardware e do software. São Paulo:
Pearson, 2005.
GIMENEZ, S. P.
Microcontroladores 8051
: teoria do hardware e do software. São Paulo:
Pearson, 2005.GIMENEZ, S. P. Microcontroladores 8051: teoria e prática. 1. ed. São Paulo:
Érica, 2010.
INTEL CORP.
8051
: 8 bit control oriented microcomputers. Disponível em: <
https://pdf1.alldatasheet.com/datasheet-pdf/download/107780/INTEL/8051.html
>.
Acesso em: 15 mai. 2020.
MONK, S.
30 Projetos com Arduino
. 2. ed. Porto Alegre: Bookman, 2014.
NICOLOSI, D. E. C.
Microcontrolador 8051 detalhado
. 9. ed. São Paulo: Érica, 2013.