Descrição

História da efetivação dos microcontroladores como dispositivo principal em sistemas embarcados para controle e automação.

PROPÓSITO

Compreender a motivação que conduziu o desenvolvimento dos primeiros microcontroladores e os diferentes tipos de arquitetura que surgiram com o tempo é essencial para alicerçar a formação do projetista de sistemas embutidos, pois facilitará o seu trabalho de especificação e aprendizado de novos modelos de microcontroladores.

OBJETIVOS

Módulo 1

Descrever a evolução dos microcontroladores

Módulo 2

Descrever os componentes básicos de microcontroladores

Módulo 3

Distinguir entre os diferentes microcontroladores

Módulo 4

Identificar microcontroladores, com base nas famílias e tipos existentes no mercado

Introdução

Por muito tempo, os designers (projetistas) de produtos eletrônicos usaram componentes discretos para construir, primeiro, os sistemas analógicos, e depois os digitais.

Os principais componentes por muitos anos foram os resistores, capacitores, indutores, transistores e assim por diante. A principal preocupação do projetista era a funcionalidade. No entanto, uma vez que a funcionalidade é atendida, o objetivo do projetista é melhorar o desempenho.

O projetista de sistemas integrados não é apenas um novo rótulo para uma atividade antiga. Esse projetista enfrenta hoje novos desafios. Eles são solicitados a produzir sistemas cada vez mais complexos usando as tecnologias mais recentes, mas essas tecnologias estão mudando mais rápido do que nunca, da mesma forma que são solicitados a produzir projetos de melhor qualidade com um menor tempo de colocação no mercado e implementando novas funcionalidades.

Mas, mais importante, a satisfazer várias outras restrições. Não é suficiente, por exemplo, ter um smartphone com o qual você possa se comunicar. Ele também deve ter tela ampla, tirar boas fotos, ser leve, ter um custo razoável, ter boa duração de bateria e proteger o conteúdo nas aplicações que você utiliza, dentre outras características.

Comunicar ainda pode ser a funcionalidade principal, mas o tamanho, peso, consumo de energia e o uso de criptografia para troca segura de dados são restrições que devem ser alcançadas para um smartphone aceitável. Para atingir os objetivos atuais do design, o projetista deve estar ciente dessas restrições e, mais importante, dos fatores que têm um efeito direto sobre elas.

Daremos um passo essencial para poder atuar bem como um projetista de sistemas embarcados (ou embutidos), começando pelo entendimento da evolução do principal dispositivo desses sistemas, o microcontrolador.

Em seguida, com o conhecimento da arquitetura, dos principais componentes internos e dos diferentes tipos de microcontroladores, você se preparará para especificar tais dispositivos com segurança em um projeto de sistema embarcado.

MÓDULO 1


Descrever a evolução dos microcontroladores

Embora não seja essencial que você entenda como os microcontroladores se desenvolveram até o ponto em que estão hoje, esta é uma história importante, que vai ajudá-lo a entender onde um determinado microcontrolador, que você considere para um projeto, se encaixa na hierarquia geral de tecnologia da informação e produtos eletrônicos.

Figura 1: Foto Ilustrativa de aluno trabalhando na estação de trabalho do laboratório fazendo programação de microcontrolador. Fonte: Shutterstock.

Mais importante, por ter esse conhecimento, você fará melhores escolhas e tomará melhores decisões sobre quando e onde usar um microcontrolador, em vez de outras alternativas.

Microcontroladores e o aumento na integração dos circuitos

Se você abrir um equipamento eletrônico da década de 1980, como um CD player ou um videocassete (se você nunca viu um, pesquise na internet), você descobrirá que eles estão absolutamente recheados de placas de circuito e que cada placa de circuito é densamente povoada por circuitos integrados (chips) e componentes que fazem tudo funcionar.

Por outro lado, abrindo um Blu-ray player fabricado nos últimos anos, você provavelmente encontrará bastante espaço vazio, e apenas uma pequena placa de circuito contendo talvez dois ou três chips bem grandes e um punhado de outros componentes. No entanto, o dispositivo mais moderno oferece qualidade e robustez muito melhores, com muito mais recursos e opções do que seu predecessor dos anos 1980.

Podemos identificar dois fatores principais para essa transformação, que ocorreu em toda a indústria de produtos eletrônicos:

  • A crescente miniaturização de componentes eletrônicos, o que permitiu que mais e mais circuitos fossem colocados em chips únicos, reduzindo a contagem de chips necessária para qualquer função.

  • Os transistores, as células eletrônicas primordiais, na primeira família de chips lógicos (lançados no início dos anos 1970) mediam, cada um, cerca de 10 mícrons (10-6 metros) de diâmetro. Só para se ter uma ideia da escala, um fio de cabelo humano tem, em média, cerca de 100 mícrons de largura.

    Você sabia

    No momento, empresas como a Intel estão produzindo em massa transistores com 14 nanômetros (10-9 metros) de diâmetro, apenas 14 vezes mais largos que as moléculas de DNA. Isso dá uma ideia do ritmo de miniaturização que ocorreu nos circuitos integrados desde os anos 1970.

  • A transição progressiva das funções de dispositivo de implementação em hardware para implementação em software executado em microcontroladores, os firmwares.

  • Essa transição de funções para os microcontroladores só foi possível porque mais integração de dispositivos é realizada nessas arquiteturas em cada geração. Isso permite a redução no custo de fabricação dos equipamentos, aumentando também a velocidade com que novas funcionalidades podem ser agregadas com o controle desses dispositivos no mesmo firmware.

    Exemplo

    Por exemplo, um projetista certamente terá mais facilidade para implementar um protocolo de comunicação Wi-Fi em um produto se este dispositivo estiver integrado no modelo de microcontrolador escolhido. Sem dúvida, este modelo de microcontrolador pode ser muito bem aceito pelo mercado, desde que integre também bom desempenho, confiabilidade e preço acessível. Não por acaso, microcontroladores mais recentes com estas características, como o ESP8266 e ESP32, têm despertado grande interesse entre projetistas.

A integração de mais dispositivos e mais funcionalidades dentro da arquitetura de um microcontrolador está na origem da sua própria invenção.

A história da invenção dos microcontroladores

O microcontrolador se tornou onipresente e invisível. Você acredita que está usando quantos microcontroladores em sua casa? Mais de uma dezena, isto é um fato. Talvez 50 ou mais. Existem mais de dois bilhões de microcontroladores sendo produzidos a cada ano. Quase todo mundo, tanto nas nações desenvolvidas quanto nas em desenvolvimento, não passa um dia sem usar microcontroladores.

Você sabia

Sendo um chip embutido, o microcontrolador controla a maioria dos aparelhos eletrônicos em sistemas que as pessoas usam diariamente, desde máquinas de lavar, celulares, TVs, até os sistemas de controle em carros. Agora, como surgiu essa ideia de um microcontrolador? Qual é a história da invenção desse poderoso chip?

Foi durante 1970 e 1971, quando a Intel estava trabalhando na invenção do primeiro microprocessador do mundo, que Gary Boone, da Texas Instruments (TI), estava trabalhando em um conceito bastante semelhante e inventou o microcontrolador.

Boone projetou um único chip de circuito integrado que poderia conter quase todos os circuitos essenciais para formar uma calculadora; apenas o display e o teclado não foram incorporados.

Surpreendentemente, esse avanço excepcional no campo da eletrônica e das comunicações recebeu um nome comum de TMS1802NC. No entanto, o dispositivo não era comum. Tinha cinco mil transistores fornecendo 3000 bits de memória de programa e 128 bits de memória de acesso. Parece pouco comparado ao que temos hoje. Mas, desta forma, foi possível programá-lo para realizar uma série de funções.

Embora, vistos de hoje, pareçam óbvios os benefícios de integrar circuitos em um único chip, este não foi um pensamento que tenha dominado as mentes nas empresas projetistas de chips tão rapidamente. Mas, é fato conhecido que requisitos e necessidades levam a invenções e descobertas.

O que Gary Boone e os outros engenheiros acabaram visualizando com o atendimento às empresas populares como Canon, Olympia ou Olivetti?

Resposta

Que converter as especificações destas empresas em um conjunto de chips, normalmente quatro, cinco ou seis chips para executar ou implementar as especificações, talvez não fosse a maneira mais eficiente de distribuir os trabalhos entre os grupos de engenheiros.

Com isso, eles pensaram em uma matriz de necessidades do cliente de uma maneira e pedaços de circuitos ou blocos funcionais de outra. Boone pôde descobrir o que há em comum entre os dois, cobrindo todas as especificações do cliente. Como resultado desse excelente pensamento, surgiu o primeiro chip microcontrolador da série TMS1000. Este dispositivo inovador surgiu de uma visão de pontos em comum e alta demanda que estavam sendo atendidos de forma inadequada pela implantação de grandes equipes com muitos chips.

Este microcontrolador foi usado na Texas Instruments (TI) internamente em seus produtos de calculadora entre 1972 e 1974. O dispositivo foi aprimorado ainda mais ao longo dos anos. A TI ofereceu este microcontrolador para venda à indústria eletrônica em 1974. Ele foi disponibilizado em diferentes configurações de tamanhos de memória. Em 1983, quase 100 milhões de TMS1000 já haviam sido vendidos. Ano após ano, os microcontroladores estavam tendo um grande crescimento e uso.

O microcontrolador ante ao microprocessador

Mesmo com o pioneirismo da Texas Instruments, a popularização do microcontrolador em várias aplicações derivou do crescimento dos microprocessadores.

Até meados da década de 1980, a maioria dos produtos eletrônicos ainda era construída usando circuitos combinacionais lógicos extremamente intrincados e inteligentes, implementados com uma enorme quantidade de chips. A partir do início da década de 1980, uma minoria de fabricantes começou a incorporar microprocessadores em seus produtos para reduzir a contagem de chips, o que diminuiu os custos de fabricação e, portanto, os preços para o usuário final.

Arraste para os lados. Arraste para os lados.

Os primeiros microprocessadores de 8 bits, como o Intel 8080 ou o Zilog Z80, apareceram pela primeira vez no final dos anos 1970 e representaram um avanço significativo em relação ao que existia antes.

Engenheiros e designers logo perceberam que, depois de colocar um microprocessador em um dispositivo, você não só poderia fazer com que ele fizesse muito mais, mas também poderia atualizar de forma mais barata os defeitos ou falhas no projeto original.

Muitos defeitos do produto agora poderiam ser resolvidos usando mão de obra para reprogramar o software em vez de ter que usar mão de obra para retrabalhar ou substituir milhares de placas de circuito completas. À medida que os anos 1980 avançavam, mais e mais produtos tinham um microprocessador em seu núcleo.

Mesmo que os microprocessadores representassem uma grande melhoria em relação ao que substituíram, eles não eram uma solução mágica completa para reduzir os custos e a complexidade do design do produto. O problema era que, para fazer um microprocessador realizar algo útil, ele precisava ser cercado por um grande número de chips adicionais para entrada e saída (E / S) e geralmente precisava de outros chips de suporte também, como chips de relógio em tempo real e decodificadores de endereços.

Na década de 1990, as técnicas aprimoradas de processamento de silício e fabricação de chips resultaram na capacidade de colocar cada vez mais circuitos em um chip. Uma das maneiras pelas quais isso foi usado foi para aumentar o chip do microprocessador com funções e recursos adicionais, que foram previamente implementados por chips externos separados, criando novas famílias de microcontroladores.

Uma vez que os microcontroladores começaram a ser usados em bens de consumo e sistemas de controle durante a década de 1990, as já impressionantes miniaturizações eletrônicas das duas décadas anteriores deram outro grande salto, tanto em termos de redução de tamanho quanto na capacidade de oferecer mais opções e recursos do que nunca.

Na primeira década dos anos 2000, ninguém pensaria seriamente em projetar outra coisa senão o dispositivo elétrico mais simples do consumidor sem o uso de algum tipo de microcontrolador.

Eles estão por todas as partes. Eles se tornam mais capazes e mais complexos com o passar do tempo. Como projetista, você estará em considerável desvantagem se não entender os microcontroladores em um bom nível.

Em resumo, a onipresença dos microcontroladores é o principal motivo pelo qual você deve saber algo sobre eles. No entanto, também é muito satisfatório usar e projetar com microcontroladores. Você pode fazer com que as coisas funcionem muito rapidamente, o que antes levaria muito mais tempo para ser concluído. Você também pode se divertir bastante no processo, isto é garantido.

Algumas famílias de microcontroladores são muito econômicas, sendo uma maneira fácil de implementar seus projetos. A popularidade cada vez maior significa que existe uma comunidade de suporte online enorme e muito ativa para ajudá-lo se você ficar preso a um problema. Isto também significa que há uma grande quantidade de software gratuito disponível, o que torna seus projetos muito mais fáceis e rápidos de concluir.

A evolução dos microprocessadores

Verificando o aprendizado

ATENÇÃO!

Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:

O conteúdo ainda não acabou.

Clique aqui e retorne para saber como desbloquear.

MÓDULO 2


Descrever os componentes básicos de microcontroladores

Termos frequentemente usados

Antes de nos concentrarmos na arquitetura de microcontroladores, primeiro listaremos alguns termos que você encontrará com frequência no campo de sistemas embarcados.

Clique nas barras para ver as informações. Objeto com interação.
Microprocessador

É uma CPU (UCP - Unidade Central de Processamento) normal, como você pode encontrar em um PC. A comunicação com dispositivos externos é obtida por meio de um barramento de dados, portanto, o chip apresenta principalmente pinos de dados e endereços, bem como alguns pinos de controle. Todos os dispositivos periféricos (memória, controlador de disco, controlador de USB, temporizador etc.) estão conectados ao barramento.


Um microprocessador não pode ser operado de maneira autônoma, requerendo no mínimo um pouco de memória e um dispositivo de saída. Observe que um processador não é um controlador. Usamos o termo processador apenas para o núcleo do processador, a CPU de um microcontrolador.

Controlador de sinal misto

Este é um microcontrolador que pode processar sinais digitais e analógicos.

Sistema embarcado ou embutido

A principal área de aplicação dos microcontroladores são os sistemas embarcados. Em sistemas embarcados, a unidade de controle é integrada ao sistema.


Como exemplo, pense em um telefone celular, no qual o controlador está incluído no dispositivo. Isso é facilmente reconhecível como um sistema embarcado. Por outro lado, se você usa um PC normal em uma fábrica para controlar uma linha de montagem, isso também atende a muitas das definições de um sistema embarcado. O mesmo PC, entretanto, equipado com um sistema operacional normal e usado para processar texto, certamente não é um sistema embarcado.

Sistema de tempo real

Os controladores são frequentemente usados em sistemas de tempo real, em que a reação a um evento deve ocorrer dentro de um tempo especificado. Isso é verdade para muitas aplicações nas áreas aeroespacial, ferroviária ou automotiva, por exemplo.

Processador embutido

Este termo geralmente ocorre em associação com sistemas embutidos, e as diferenças para os controladores costumam ser muito confusas. Em geral, o termo “processador embutido” é usado para dispositivos de última geração (32 bits), enquanto “controlador” é tradicionalmente usado para dispositivos de baixo custo (4, 8, 16 bits).

Processador de sinal digital (DSP)

Os processadores de sinal são usados para aplicativos que precisam processar sinais com alto desempenho. Uma área importante de uso são as telecomunicações. Portanto, seu telefone celular provavelmente conterá um DSP. Esses processadores são projetados para adição e multiplicação rápidas, que são as principais operações para o processamento de sinais. Como as tarefas que exigem um processador de sinal também podem incluir funções de controle, muitos fornecedores oferecem soluções híbridas que combinam um controlador com um DSP em um chip.

Sistemas baseados em microcontroladores

O microprocessador, como mencionado antes, não pode funcionar sozinho. Deve ser suportado por algumas unidades de hardware externas e módulos de software para formar um sistema funcional. Em geral, o microprocessador, as unidades de suporte e o software formam o que é chamado de “sistema baseado em microprocessador”, como mostrado na figura 5.

Os sistemas baseados em microprocessador são sistemas de uso geral que podem ser programados e reprogramados dependendo da tarefa ou do aplicativo e normalmente os chamamos de computadores. O computador pessoal destaca-se como uma das aplicações mais importantes e úteis dos sistemas baseados em microprocessadores.

Figura 5 ‒ Sistema baseado em microprocessador. Fonte: O Autor, 2020.

O sistema baseado em microcontrolador (Figura 6) é geralmente identificado como o mais conhecido sistema embutido, ou sistema embarcado, como é mais comumente conhecido em português.

Saiba mais

Microcontroladores formam sistemas de função única, pois executam um programa específico repetidamente, são fortemente restritos às métricas de projeto (por exemplo, tamanho pequeno, consome pouca energia etc.) e têm resposta em tempo real. Em tais casos, as unidades de suporte são dispositivos periféricos, como um motor de passo, mostradores, sensores, atuadores etc. O tipo e o número de periféricos dependem da aplicação. RAM externa e/ou EPROM podem ser necessárias em alguns aplicativos.

Os usuários de tais produtos muitas vezes desconhecem a existência de microcontroladores: Para eles, os componentes internos são apenas um detalhe do projeto. Considere como exemplos fornos de micro-ondas, termostatos programáveis, balanças eletrônicas, câmeras digitais e até carros. A eletrônica dentro de cada um desses produtos normalmente incorpora uma interface de microcontrolador para botões, interruptores, luzes e alarmes em um painel frontal. Ainda assim, a operação do usuário imita a dos predecessores eletromecânicos, com exceção de alguns recursos adicionais. O microcontrolador, onipresente, é invisível para o usuário.

Figura 6 ‒ Sistema baseado em microcontrolador. Fonte: O Autor, 2020.

Arquitetura básica de microcontroladores

Pela sua grande integração de dispositivos, os microcontroladores são frequentemente descritos como computadores de chip único. Isso porque um microcontrolador já contém todos os componentes que permitem operá-lo sozinho, em particular para tarefas de monitoramento e/ou controle. Em consequência, eles contêm um núcleo de microprocessador, alguma memória e vários dispositivos periféricos, como portas de E/S paralelas, portas de E/S seriais, temporizadores, conversores analógicos para digital (ADCs) e vários outros subsistemas de funções especiais. Os principais, como mostrado na Figura 6, são descritos a seguir.

CPU

A unidade central de processamento é responsável por executar o programa armazenado e gerenciar os periféricos. Ela busca instruções numéricas da memória (opcodes) uma por uma, as interpreta e executa alguma operação como resultado. Os programas consistem em uma coleção desses opcodes misturados com dados (numéricos). A CPU funciona sequencialmente por meio dessas instruções, às vezes com saltos de uma posição para outra da memória como resultado do projeto do programa ou como resultado das condições operacionais.

Os registradores da CPU são como áreas de armazenamento da memória interna. Eles são úteis para resultados de cálculos provisórios. Isso reduz o número de leituras/gravações na memória externa, que geralmente é mais lenta. Alguns registradores têm funções especiais, como controlar onde a próxima instrução deve vir da memória.

A unidade lógica aritmética é responsável por realizar os cálculos. Em algumas CPUs, são bastante simples, com suporte apenas a adicionar, subtrair e operações lógicas básicas. Em CPUs mais sofisticadas, pode haver várias unidades aritméticas, algumas capazes de realizar operações avançadas de ponto flutuante.

O trabalho do decodificador de instruções é traduzir opcodes numéricos em sequências de ações. O barramento de dados é uma coleção de fios ou trilhas usados para transportar números para dentro e para fora da CPU. Um '1' lógico em cada linha do barramento é representado por uma tensão particular ‒ comumente 5V ou 3,3V. O '0' lógico é comumente representado por um sinal de 0V. Qualquer dispositivo com o qual a CPU precisa se comunicar está conectado (em paralelo com outros) ao barramento de dados.

O barramento de endereços é outra coleção de fios/trilhas. Seu objetivo é selecionar qual dos dispositivos externos (ou locais de memória) tem permissão para usar o barramento de dados. Lembre-se de que cada fio do barramento de dados é apenas uma condução simples e só é capaz de transmitir um bit de dados por vez. Se, por exemplo, dois dispositivos tentarem gravar no barramento de dados ao mesmo tempo, seus sinais ficarão confusos e perdidos. Em sistemas simples, a CPU sozinha controla o barramento de endereço.

Figura 8: Ilustração para Modelo Barramento de Sistema. Fonte: Adaptado de IME ‒ USP.

Memórias

A RAM é usada para armazenar valores que podem mudar durante a execução de um programa. A RAM é volátil, ou seja, o seu conteúdo é perdido toda vez que os sistemas são desligados. Como resultado disso, a RAM não é muito útil para armazenamento de programas de longo prazo.

A ROM não perde seu conteúdo quando a alimentação é removida. Portanto, é geralmente usada para armazenar programas, mas não variáveis. Existem diferentes tecnologias usadas para implementar memória de programa ROM, como EPROM, EEPROM e memória Flash.

Tanto a ROM quanto a RAM consistem em conjuntos de locais de armazenamento, geralmente organizados em bytes ou múltiplos de bytes em algum tipo de módulo, como um chip. Esses módulos possuem um barramento de endereço que é controlado pela CPU. O barramento de endereço seleciona qual das localizações da memória interna está conectada ao barramento de dados do módulo, devendo possuir um número de bits necessário para endereçar a quantidade de memória existente.

Atenção

Lembre-se de que um grupo de oito bits é conhecido como byte. 1 byte pode representar números entre zero (00000000) e 255 (11111111), ou 28 = 256 posições distintas. Na prática, a memória é medida em kilobytes (KB) ou megabytes (MB). Um kilobyte não é exatamente, como se poderia esperar, 1000 bytes. Em vez disso, a quantidade correta é 210, ou seja, 1024 bytes. Da mesma forma, um megabyte não é 1.000.000 bytes, mas, em vez disso, 1.0242, ou seja, 1.048.576 bytes. Esta é uma diferença notável.

Se existe, por exemplo, um total de 64kB de memória (entre memória de dados e programa) para endereçar, temos 64 x 1024 = 65536 de posições de memória para endereçar.

Um barramento de endereços, neste caso, precisaria ter n bits, onde n é calculado pela equação 2n = 65536. Como n é um valor inteiro, ele deve ser o suficiente para tornar 2n maior ou igual a 65536. Assim, n = 16, ou seja, o barramento para endereçar 64kB de memória deve ter pelo menos 16 bits.

E/S digital paralela

Microcontroladores enviam e recebem informações para o mundo exterior usando portas. Existem muitos tipos diferentes de porta, mas a mais simples é a porta de entrada e saída (E/S) paralela. Essas portas podem ser vistas como células de memória ou registradores, que são conectados ao núcleo da CPU usando o barramento de dados e ao mundo externo por meio de pinos do microcontrolador.

No caso de portas paralelas, cada bit no registrador da porta é conectado a um pino no chip. Se um determinado bit está em nível lógico alto, o pino é acionado para qualquer tensão que represente a lógica '1' para aquele sistema (geralmente 5V ou 3,3V). Da mesma forma, bits na lógica '0' conduzem 0V no pino apropriado.

E/S serial

As comunicações seriais exigem que o remetente envie dados de 1 bit por vez, a uma taxa acordada com o receptor pretendido. Cada bit recebe um “intervalo de tempo”, que define o fio/trilha de transmissão para o nível lógico correto para cada intervalo de tempo do bit.

O receptor mede a voltagem que chega do emissor no meio de cada intervalo de tempo de bit. Ele pode, portanto, decidir se um '1' ou '0' foi enviado para um determinado bit. A operação confiável requer um tempo preciso. O receptor deve olhar os tempos corretos para cada bit. Existem duas maneiras comuns de se conseguir isso:

Transmissão assíncrona

O emissor e o receptor têm sinais periódicos (clock) muito precisos que são realinhados periodicamente ‒ isto é chamado de transmissão assíncrona. Neste caso, um parâmetro muito importante é o Baud Rate, que especifica a velocidade de recepção e envio, sendo que os dois dispositivos devem utilizar a mesma taxa.

Transmissão síncrona

O outro método requer que ambas as partes compartilhem uma única fonte de clock ‒ transmissão síncrona. A transmissão de dados seriais é mais barata do que a transmissão paralela, pois há menos condutores envolvidos. Mouses, teclado, USB e Ethernet são exemplos de transmissão serial.

Temporizadores

Os temporizadores são normalmente construídos usando uma fonte de clock e um registrador específico com função de contador. Os contadores contam os períodos de clock que são inseridos neles. Alguns contadores aumentam, outros diminuem. Os contadores têm um número de bits limitado e, como resultado, só podem contar para cima ou para baixo até este limite sem reiniciar a contagem.

Um contador de 8 bits, por exemplo, pode contar apenas até 255 decimais; mais uma entrada de período fará com que ele transborde e reverta para zero. Um contador decrescente de 16 bits diminuirá para zero e, dada mais uma entrada, ele rolará para 65535 (0xffff em hexadecimal). Os contadores podem ser usados simplesmente como contadores de eventos, permitindo que a CPU execute outras tarefas.

ADCs e DACs

Frequentemente, os microprocessadores são necessários para processar sinais não digitais, os sinais analógicos (ou contínuos). Para que eles façam isso, é necessário um dispositivo especial denominado conversor analógico para digital (ADC). Este dispositivo aceita uma entrada analógica e a traduz em um número digital cujo tamanho é proporcional à magnitude do sinal analógico. Cada conversor analógico para digital tem uma faixa de tensão de entrada associada e uma faixa numérica de saída.

Exemplo

Por exemplo, um ADC interno de 10 bits que opera com faixa do sinal de entrada de 0 a 5V. O ADC, por comando da CPU, tira um instantâneo (amostra e espera) da entrada analógica e, neste caso, usa uma aproximação sucessiva para mapear este sinal para um número digital proporcional. O programa monitora o status do sinal de “conversão concluída” em um bit de um registrador específico. Quando a conversão for concluída, o resultado de 10 bits convertido pode ser lido em um registrador. Alguns ADCs têm entradas multiplexadas que permitem converter vários sinais de entrada em sequência.

E o que implica um maior ou menor número de bits em uma ADC? Imagine que a conversão de uma tensão de entrada em um número binário significa dividir este valor de tensão em dados discretos, ou seja, que podem ter apenas valores específicos. Os valores de tensão são contínuos, ou seja, podem assumir infinitos valores em um intervalo. A Figura 9 ilustra a conversão de valores de um sinal contínuo (as curvas em vermelho) para valores discretos (em azul) no caso de dados digitais representados com 2 e 3 bits.

Figura 9 – Representação de sinal contínuo em valores discretos com 2 e 3 bits. Fonte: Wikimedia.

Observa-se que o aumento no número de bits implica no aumento no número de valores específicos na representação digital. Esse aumento no número de bits permite, portanto, o aumento na resolução da representação binária do valor de entrada. Por exemplo, para um ADC de 10 bits, a representação do sinal de entrada terá 1024 (210) valores discretos.

Os conversores digitais para analógico (DACs) executam o inverso dos ADCs. Eles aceitam um sinal de entrada digital e emitem um sinal analógico proporcional. Historicamente, os DACs raramente foram encontrados integrados a microcontroladores por motivos de fabricação. Se uma saída analógica for necessária para um microcontrolador sem um DAC interno, um IC externo e um circuito de suporte devem ser adicionados.

Exemplo

Alternativamente, pode ser possível gerar uma saída pseudoanalógica controlando o ciclo de trabalho de um pino da porta digital de saída. Por exemplo, se um pino de saída digital gasta metade de seu tempo em 5V e o resto em 0V, sua tensão média é 2,5V. Variando a porcentagem de “tempo em alto”, a tensão média de saída pode ser controlada. Isto é conhecido como modulação por largura de pulso (PWM). A saída pulsada pode ser filtrada para criar um sinal analógico contínuo, usando um filtro simples.

Controle de interrupções

Frequentemente, são construídos sistemas embutidos muito simples que executam apenas uma tarefa. Por exemplo, um sistema de alarme contra roubo pode gastar todo o seu tempo lendo o status de vários sensores e verificando uma condição de alarme.

Da mesma forma, um microprocessador em um cartão musical pode gastar seu tempo gerando saídas analógicas. Algumas vezes, são necessários sistemas de microprocessador mais complexos para monitorar e controlar as entradas e saídas do usuário. Em tais circunstâncias, a alocação de tempo de CPU para conduzir as saídas e monitorar as entradas deve ser cuidadosamente balanceada. Uma maneira de fazer isso é espalhar as chamadas para as várias rotinas de E/S por todo o código do programa.

Considere, por exemplo, um PC moderno executando um aplicativo de jogos. A CPU deve “rodar” os drivers de mouse e teclado para verificar se há novas entradas e, ao mesmo tempo, atualizar a exibição do vídeo. À medida que os sistemas se tornam mais complexos, essa "correria" se torna mais complicada e, em última análise, impraticável. As interrupções oferecem uma solução.

E o que são interrupções?

Resposta

As interrupções são sinais que fazem com que a CPU suspenda sua atividade atual e execute outra tarefa.

Os sinais de interrupção frequentemente são produzidos por dispositivos de hardware que requerem atenção urgente (por exemplo, uma placa de rede sinaliza que recebeu um bloco de entrada de dados). Um determinado sistema de computador pode precisar suportar vários subsistemas de hardware, cada um dos quais ocasionalmente requer atenção urgente.

Comentário

As CPUs são comumente projetadas para lidar com interrupções de várias fontes. Cada sinal de interrupção está associado a um local de memória particular que contém o endereço da sub-rotina que deve ser executada no recebimento desta interrupção. Os programadores de sistema podem preencher esses locais de memória especiais com os endereços do código de tratamento de interrupção.

Microcontroladores possuem controladores de interrupções para, por exemplo, contarem pulsos de entrada, realizarem uma determinada função a cada intervalo de tempo, receberem dados por porta serial. Interrupções possibilitam retirar alguns microcontroladores de um estado de baixo consumo de energia, permitindo que este esteja sempre disponível mesmo mantendo boa parte de seus circuitos desligados.

A ARQUITETURA DE UM MICROCONTROLADOR

Verificando o aprendizado

ATENÇÃO!

Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:

O conteúdo ainda não acabou.

Clique aqui e retorne para saber como desbloquear.

MÓDULO 3


Distinguir entre os diferentes microcontroladores

A arquitetura da Unidade de Processamento Central (CPU) opera a capacidade de funcionar do Conjunto de Instruções para o qual foi projetada. O projeto arquitetônico da CPU pode ser dividido em duas:

  • A computação de conjunto de instruções reduzido (RISC ‒ Reduced Instruction Set Computing) ou
  • A computação de conjunto de instruções complexas (CISC ‒ Complex Instruction Set Computer).
Figura 10: Foto Ilustrativa macro do módulo de microcontrolador wireless wi-fi programável. Fonte: Shutterstock.

Vamos examinar as diferenças.

A arquitetura CISC tem a capacidade de realizar operações de várias etapas ou modos de endereçamento dentro de um conjunto de instruções. É o projeto da CPU em que uma instrução opera vários atos de baixo nível. Por exemplo, armazenamento na memória, carregamento da memória e uma operação aritmética.

Saiba mais

A computação RISC é uma estratégia de projeto de UCP baseada na visão de que o conjunto de instruções básicas oferece grande desempenho quando combinado com uma arquitetura de microprocessador que tem a capacidade de executar as instruções usando alguns ciclos de microprocessador por instrução. Neste caso, espera-se que cada instrução atinja tarefas muito pequenas.

Nestas arquiteturas, os conjuntos de instruções são modestos e simples, o que ajuda a compreender comandos mais complexos. Cada instrução tem um comprimento semelhante; estes são compostos para realizar tarefas em uma única operação. A maioria dos comandos são concluídos em um ciclo da máquina. O pipelining (tunelamento) é uma técnica crucial usada para acelerar máquinas RISC.

Como funciona o pipelining?

Pipelining, um recurso padrão em processadores RISC, é muito parecido com uma linha de montagem. Como o processador trabalha em diferentes etapas da instrução ao mesmo tempo, mais instruções podem ser executadas em um período de tempo menor.

Dica

Um método útil de demonstrar isso é a analogia da lavanderia. Digamos que haja quatro cargas de roupa suja que precisam ser lavadas, secas e dobradas. Poderíamos colocar a primeira carga na lavadora por 30 minutos, secar por 40 minutos e depois levar 20 minutos para dobrar as roupas. Em seguida, pegue a segunda carga e lave, seque e dobre e repita para a terceira e a quarta cargas. Supondo que começássemos às 18h e trabalhássemos da forma mais eficiente possível, ainda estaríamos lavando roupa até meia-noite.


No entanto, uma abordagem mais inteligente para o problema seria colocar a segunda carga de roupa suja na lavadora depois que a primeira já estivesse limpa e girando na secadora. Então, enquanto a primeira carga estava sendo dobrada, a segunda carga secaria e uma terceira carga poderia ser adicionada à lavanderia. Usando esse método, a roupa estaria terminada às 21h30.

Um pipeline de processador RISC opera da mesma maneira, embora os estágios no pipeline sejam diferentes.

Mesmo que diferentes processadores tenham diferentes números de etapas, estas são basicamente variações desses cinco:

  • Buscar instruções da memória.
  • Ler registradores e decodificar a instrução.
  • Executar a instrução ou calcular um endereço.
  • Acessar um operando na memória de dados.
  • Escrever o resultado em um registro.

Se você olhar novamente para o esquema de operação da lavanderia, perceberá que, embora a lavadora termine em meia hora, a secadora leva dez minutos extras e, portanto, as roupas molhadas devem esperar dez minutos para que a secadora seja liberada. Portanto, o comprimento do pipelining depende do comprimento da etapa mais longa.

Como as instruções RISC são mais simples do que as usadas em processadores CISC, elas são mais propícias ao pipelining. Enquanto as instruções CISC variam em comprimento, as instruções RISC têm todas o mesmo comprimento e podem ser obtidas em uma única operação.

Idealmente, cada um dos estágios em um pipelining de processador RISC deve levar 1 ciclo de clock para que o processador termine uma instrução a cada ciclo de clock e obtenha a média de um ciclo por instrução (CPI).

RISC versus CISC

A maneira mais simples de examinar as vantagens e desvantagens das arquiteturas RISC e CISC é compará-las em sua abordagem. Vamos a um exemplo:

Multiplicando dois números na memória

Em um sistema computacional genérico, a memória principal é dividida em locais numerados. A unidade de execução de cálculo, uma unidade lógica e aritmética, só pode operar com os dados que foram carregados em um dos seus registradores internos. Digamos que queremos encontrar o produto de dois números ‒ um armazenado no local 21 e outro armazenado no local 49 da memória ‒ e então armazenar o produto de volta no local 21.

A abordagem CISC

O objetivo principal da arquitetura CISC é completar uma tarefa com o mínimo de linhas de instrução possível. Isso é conseguido construindo um hardware de processador que é capaz de compreender e executar uma série de operações. Para esta tarefa em particular, um processador CISC poderia ser preparado com uma instrução específica (vamos chamá-la de "MULT").

Quando executada, esta instrução carrega os dois valores em registros separados, multiplica os operandos na unidade de execução e, a seguir, armazena o produto na posição de memória indicada (21). Assim, toda a tarefa de multiplicar dois números pode ser concluída com uma única instrução:

MULT 21, 49

MULT é o que é conhecido como "instrução complexa". Ela opera diretamente nos bancos de memória do computador e não exige que o programador chame explicitamente nenhuma função de carregamento ou armazenamento. É muito parecido com um comando em uma linguagem de alto nível.

Exemplo

Por exemplo, se deixarmos "a" representar o valor na posição 21 da memória e "b" representar o valor na posição 49, então este comando é idêntico à instrução em linguagem C "a = a * b."

Uma das principais vantagens desse sistema é que o compilador precisa fazer muito pouco trabalho para traduzir uma instrução em linguagem de alto nível para linguagem de montagem (assembly). Como o comprimento do código é relativamente curto, muito pouca RAM é necessária para armazenar as instruções. A ênfase é colocada na construção de instruções complexas diretamente no hardware.

A abordagem RISC

Os processadores RISC usam apenas instruções simples que podem ser executadas em um ciclo de clock. Assim, o comando "MULT" descrito acima pode ser dividido em três comandos separados: "LOAD", que move os dados do banco de memória para um registrador, "PROD", que encontra o produto de dois operandos localizados dentro dos registradores, e " STORE, "que move os dados de um registrador para os bancos de memória. Para executar a série exata de etapas descritas na abordagem CISC, um programador precisaria codificar quatro linhas de montagem:

LOAD A, 21
LOAD B, 49
PROD A, B
STORE 21, A

A princípio, essa pode parecer uma forma muito menos eficiente de concluir a operação. Como há mais linhas de código, mais RAM é necessária para armazenar as instruções no nível de montagem. O compilador também terá mais trabalho para converter uma instrução de linguagem de alto nível em código de máquina desta forma.

No entanto, a estratégia RISC também traz algumas vantagens muito importantes. Como cada instrução requer apenas um ciclo de clock para ser executada, o programa inteiro será executado aproximadamente na mesma quantidade de tempo que o comando "MULT" de vários ciclos. Essas "instruções reduzidas" RISC requerem menos transistores em espaço de hardware do que as instruções complexas, deixando mais espaço para registradores de uso geral. Como todas as instruções são executadas em um período de tempo uniforme (ou seja, um ciclo de clock), o pipelining é possível.

Separar as instruções "LOAD" e "STORE" realmente reduz a quantidade de trabalho que o computador deve realizar. Depois que um comando "MULT" no estilo CISC é executado, o processador apaga automaticamente os registradores. Se um dos operandos precisar ser usado para outro cálculo, o processador deve recarregar os dados do banco de memória em um registrador. No RISC, o operando permanecerá no registrador até que outro valor seja carregado em seu lugar.

RISC ou CISC?

A escolha da maioria dos fabricantes hoje recai nos modelos RISC. Mas, existe uma tendência histórica que mantem o seu computador pessoal como CISC. Antigamente, as memórias eram pequenas e, portanto, os programas eram forçosamente pequenos. Além disso, os compiladores não eram muito inteligentes e muitos programas eram escritos em assembly.

Figura 11: Foto close up de microprocessador "risc". Fonte: Shutterstock

Desta forma, era considerado bom poder escrever um programa usando poucas instruções. Os pipelines de instrução eram simples e os processadores pegavam uma instrução de cada vez para executá-la. A arquitetura dentro do processador era bastante complexa de qualquer maneira e as instruções de decodificação não eram consideradas um grande fardo.

Na década de 1980, os designers da CPU e do compilador começaram a perceber que ter instruções tão complexas não era tão útil assim. Era difícil projetar processadores em que essas instruções fossem realmente eficientes e era difícil projetar compiladores que realmente tirassem proveito dessas instruções. A complexidade da área do chip e do compilador foi mais bem gasta em atividades mais genéricas, como registradores de uso geral.

A família x86 da Intel, que provavelmente está em seu computador pessoal, é um pouco diferente. Era originalmente uma arquitetura CISC destinada a sistemas com memória muito pequena, sem espaço para grandes instruções, e passou por várias versões sucessivas. Embora seus chips CISC estivessem se tornando cada vez mais pesados e difíceis de desenvolver, a Intel tinha os recursos para explorar o desenvolvimento e produzir processadores poderosos.

No mundo de hoje, RISC e CISC não são mais a distinção preto e branco que poderiam ter sido antes. A maioria das arquiteturas de CPU evoluiu para diferentes tons de cinza. Do lado do RISC, algumas variantes modernas de arquiteturas adicionaram instruções de multiplicação e divisão, com uma codificação não uniforme, mais próxima da abordagem CISC.

Hoje, o Intel x86 é o único chip que mantém a arquitetura CISC. Isso se deve principalmente ao fato que manter a compatibilidade é uma prioridade. O preço da RAM diminuiu drasticamente e a tecnologia de compiladores também se tornou mais sofisticada, o que conduz a um melhor aproveitamento da arquitetura RISC. No caso dos microcontroladores, não foi diferente e o uso da arquitetura RISC se tornou predominante. Mas, um microcontrolador de muito sucesso e ainda utilizado em algumas áreas, o 8051, é de arquitetura CISC.

RISC ou CISC?

Microcontroladores e arquitetura de memória

No projeto de uma arquitetura de processador, uma decisão importante diz respeito ao acesso à memória, onde se define se a faixa de endereços da memória de dados será a mesma da memória de instruções (memória de programa). De acordo com o uso da memória, pode-se classificar duas arquiteturas de processador: Arquitetura von Neumann e arquitetura Harvard.

Arquitetura von Neumann

Em uma arquitetura von Neumann, a mesma memória e barramento são usados para armazenar dados e instruções que executam o programa. Como você não pode acessar a memória de programa e memória de dados simultaneamente, a arquitetura von Neumann é suscetível a gargalos e o desempenho do sistema é afetado. A Figura 13 mostra a configuração de memória nesta arquitetura.

Figura 13 ‒ Arquitetura von Neumann. Fonte: O Autor, 2019.

Neste caso, as instruções estariam em uma faixa de endereços que ative a memória que possui as instruções e os dados estão em outra faixa de endereços que ative outra memória, onde se pode ler e escrever os dados. Nesta arquitetura, só é possível o acesso a uma memória de cada vez.

Arquitetura Harvard

A arquitetura Harvard armazena instruções de máquina e dados em unidades de memória separadas que são conectadas por diferentes barramentos. Nesse caso, há pelo menos dois espaços de endereço de memória para trabalhar. Logo, há um registro de memória para instruções de máquina e outro registro de memória para dados.

Os computadores projetados com a arquitetura Harvard são capazes de executar um programa e acessar dados de forma independente e, portanto, simultaneamente. A arquitetura Harvard tem uma separação estrita entre dados e código. Assim, a arquitetura Harvard é mais complicada, mas os pipelines separados removem o gargalo que a von Neumann cria. A Figura 14 mostra a configuração de memória nesta arquitetura.

Figura 14 ‒ Arquitetura Harvard. Fonte: O Autor, 2019.

Comparando, pode-se verificar que a arquitetura Harvard é mais veloz, mas exige mais um barramento. Assim, o custo de produção tende a ser maior. A arquitetura Harvard é bastante utilizada nos microcontroladores pelo fato das memórias estarem integradas no próprio componente, sendo mais fácil a sua realização.

Alguns microcontroladores, como o 8051, podem implementar uma arquitetura Harvard modificada, com acesso à memória interna como Harvard e externa como von Neumann. Microcontroladores ARM de diferentes modelos também podem apresentar arquiteturas Harvard e von Neumann. Microcontroladores PIC são baseados na arquitetura Harvard.

Verificando o aprendizado

ATENÇÃO!

Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:

O conteúdo ainda não acabou.

Clique aqui e retorne para saber como desbloquear.

MÓDULO 4


Identificar microcontroladores, com base nas famílias e tipos existentes no mercado

Número de bits em microcontroladores

Um microcontrolador de n bits possui uma ALU capaz de processar operandos com n bits de cada vez. Ou seja, seus registradores são de n bits e podem manipular n bits por vez. Normalmente, o microcontrolador também terá n bits de barramento de dados e n bits de largura para endereçamento de memória, mas isso não é verdadeiro para todos os casos.

Saiba mais

Considerando um microcontrolador de 8 bits, temos um intervalo que varia de 0 a 255 para um inteiro sem sinal e de -128 a 127 para um inteiro com sinal. Adicionar ou subtrair números dentro desse intervalo é bastante simples e pode ser feito em um ciclo de processamento. No entanto, quando o operando fornecido ultrapassa o intervalo da ALU, ainda é possível, mas o processo fica um pouco mais complexo.

Digamos que gostaríamos de adicionar 640 a 150. O primeiro operando (640) está além da capacidade de uma ALU de 8 bits. Então, ao invés de obter o resultado em apenas um ciclo de processamento, ele levará mais tempo, já que somente 8 bits podem ser processados por vez pela ALU.

Comentário

O programador precisa quebrar os dados para o número maior. Portanto, nos microcontroladores de 8 bits, números maiores precisam ser processados no software. Nesse caso, até mesmo números de 32 bits são possíveis. A mesma operação pode ser realizada em apenas um ciclo de processamento para um microcontrolador de 16 bits.

A maioria dos microcontroladores de 8 bits tem um contador de programa de 16 bits. Isso significa que ele pode endereçar no máximo 64 kBytes de memória. Para muitas aplicações embutidas, este número é suficiente, o que permite o uso de microcontroladores de 8 bits ainda em larga escala.

Arquiteturas de 8 bits versus 16 e 32 bits

Além da vantagem de maior desempenho na realização de cálculos e transferências de dados mais rápidas, quais são as vantagens de trabalhar com um microcontrolador que possui uma largura de barramento maior?

Microcontroladores com larguras de barramento de dados maiores desfrutam de maior desempenho em termos de operações mais rápidas, geralmente ferramentas de desenvolvimento mais poderosas, mais recursos e melhor eficiência de energia. Em geral, larguras de barramento menores limitam o desempenho em troca de um pequeno benefício de custo para o orçamento de um projeto.

Figura 16: Foto da placa da plataforma de prototipagem eletrônica de hardware Arduino Due, baseada na CPU Atmel ARM Cortex-M3. É a primeira placa Arduino baseada em um microcontrolador de núcleo ARM de 32 bits. Fonte: Shutterstock.

O número de ciclos aumenta conforme a largura do barramento diminui: Larguras de bits menores requerem mais ciclos para completar cálculos maiores. Assim, leva mais ciclos para um microcontrolador de 8 bits completar um grande cálculo do que os microcontroladores com uma largura de barramento de dados de 16 bits. O uso de um microcontrolador de 32 bits pode reduzir ainda mais os ciclos computacionais.

Além da velocidade na conclusão de cálculos e na taxa de transferência de dados, se houver uma interrupção ou falha no meio de uma transferência, o microcontrolador de 8 bits tem uma chance maior de não concluir a tarefa, com vários ciclos necessários, em comparação com um microcontrolador de 32 bits que conclui a mesma tarefa em um ciclo.

Custo

Microcontroladores de 8 bits ainda prevalecem e, em algumas aplicações, é a opção computacional mais barata em relação ao custo do chip. No entanto, os chips microcontroladores de 32 bits podem ser tão baratos quanto alguns chips de 8 bits. Quando cortar centésimos de centavo é importante, como em produtos de alto volume, a decisão será tomada com base nos requisitos mínimos do projeto que são atendidos pelo chip mais barato. Pode não ser uma consideração para produtos preparados para no futuro adicionar mais recursos.

Comentário

Com relação aos conjuntos de habilidades, uma vez que os engenheiros dominam a curva de aprendizado para dispositivos de 32 bits, o valor se estende a um alcance mais amplo em aplicativos. O escopo de um microcontrolador de 8 bits é significativamente limitado em relação aos microcontroladores de 32 bits.

Os custos de mão de obra também podem ser menores trabalhando com um microcontrolador de 32 bits, à medida que mais opções, recursos, ferramentas e um corpo maior de código existente se desenvolvem em torno do ecossistema de 32 bits. A tecnologia de ponta não evolui mais em torno dos 8 bits.

Tamanho do código

Quanto maior a largura, mais denso será o código. Uma redução de 30% no tamanho do código é uma estimativa aproximada do benefício que o código escrito para 32 bits oferece em relação ao código de 8 bits.

Atenção

Programar com 32 bits é muito mais desafiador em código assembly do que em 8 bits, é claro, mas as ferramentas de desenvolvimento modernas permitem que os engenheiros trabalhem em C/C++, uma linguagem frequentemente portátil entre arquiteturas e com cadeias de ferramentas e IDEs semelhantes entre arquiteturas.

No entanto, os microcontroladores de 8 bits podem ser codificados com mais eficiência com o código de montagem para engenheiros que dedicam tempo para pensar na eficiência das operações.

Recursos

Existem mais recursos para aproveitar as arquiteturas de maior largura de barramento de dados. A escala de recursos pode aumentar significativamente com dispositivos de 32 bits, com uma taxa muito maior de integração de periféricos conforme a largura de bits aumenta. O desempenho em tempo real é mais fácil de alcançar em dispositivos de 32 bits com acesso direto à memória por ignorar totalmente a CPU.

Clique nas setas para ver o conteúdo. Objeto com interação.

No entanto, há uma seleção maior de microcontroladores de 8 bits disponível do que microcontroladores de 32 bits. Parte do motivo para isso é que as arquiteturas de 8 bits existem há muito mais tempo do que as arquiteturas de 16 e 32 bits.

Muitos microcontroladores de 8 bits são escolhidos principalmente com base no custo por microcontrolador, reutilização de código legado e familiaridade pessoal com arquiteturas de 8 bits. Os microcontroladores de 8 bits podem realizar o trabalho com requisitos mínimos, mas o conjunto de habilidades necessárias para desenvolver produtos com microcontroladores de 8 bits é diferente, mais perceptível quando se trabalha no nível mais baixo de programação, o código em assembly. O código em assembly pode ser escrito com muito mais eficiência do que um compilador pode produzir em programação de nível superior em C/C ++, por exemplo.

Em resumo, a decisão de trabalhar em 8 bits ou 16 e 32 bits depende do que a aplicação exige, do custo final do microcontrolador e da mão de obra de desenvolvimento, da necessidade de preparar os recursos da aplicação para o futuro e quanto tempo se possui para pôr o produto no mercado.

Muitos desenvolvedores são fãs fervorosos de microcontroladores de 8 bits e podem fazer coisas incríveis com eles. Produtos de muito alto volume levarão em direção à opção de dispositivo de menor custo, independentemente dos custos de mão de obra. No final das contas, a escolha depende de compensações. Como uma decisão para o desenvolvimento pessoal, é aconselhável estar familiarizado com ambos.

A visibilidade das operações centrais de um microcontrolador no nível de 8 bits oferece uma experiência educacional que muitas vezes é escondida por camadas de abstração com 32 bits. No entanto, os lugares que você irá com habilidades de desenvolvimento de 32 bits superam o que os de 8 bits podem oferecer quando você considera a complexidade crescente da tecnologia moderna.

Microcontroladores de 8 bits têm sido o carro-chefe da indústria há algumas décadas, mas é esperado que em alguns anos sejam ultrapassados pelos de 32 bits, como pode ser visto na Figura 17. Os microcontroladores de 32 bits possuem uso crescente em aplicações como a automobilística e Internet das Coisas.

Figura 17 – Mercado de microcontroladores por tipo. Fonte: Sharma, 2017.

Arquiteturas de 8 bits vs. 16 e 32 bits

Famílias principais de microcontroladores

Microcontrolador 8051

O conjunto de microcontroladores mais universalmente empregado vem da família 8051 de arquitetura CISC. Microcontroladores 8051 ainda persistem como escolha para um grande grupo de entusiastas e especialistas. Ele foi originalmente inventado pela Intel em 1981. Possui variantes, mas basicamente se oferece com 8 bits, 4kB de memória ROM, 128 bytes de espaço RAM e, se desejado, 64kB de memória externa que pode ser associada ao 8051.

Existem quatro portas paralelas de 8 bits que são facilmente programáveis e endereçáveis. Um oscilador de cristal integrado no microcontrolador possui frequência de cristal de 12MHz. No microcontrolador, existe uma porta serial de entrada/saída. Dois temporizadores de 16 bits também são incorporados a ele; esses temporizadores podem ser empregados como temporizadores para o funcionamento interno, bem como para o funcionamento externo.

O microcontrolador é composto por 5 fontes de interrupção, nomeadamente:

  1. Interrupção da porta serial.
  2. Interrupção do temporizador 1.
  3. Interrupção externa 0.
  4. Interrupção do temporizador 0.
  5. Interrupção externa 1.

O modo de programação deste microcontrolador inclui GPRs, SFRs e SPRs.

Microcontroladores AVR

O microcontrolador AVR foi desenvolvido na Atmel Corporation. Os microcontroladores AVR são arquiteturas Harvard RISC modificadas com memórias separadas para dados e programa e com velocidade alta quando comparada com 8051 e PIC. O AVR significa Advanced Virtual RISC. A popular plataforma Arduino emprega microcontroladores AVR.

Diferenças entre 8051 e AVR

  1. 8051 são microcontroladores de 8 bits baseados na arquitetura CISC, os AVRs são microcontroladores de 8 bits baseados na arquitetura RISC.
  2. 8051 consome mais energia do que o microcontrolador AVR.
  3. Em 8051, podemos programar mais facilmente do que o microcontrolador AVR.
  4. A velocidade do AVR é maior do que a do microcontrolador 8051.

Classificação dos controladores AVR

Os microcontroladores AVR são classificados em três tipos:

TinyAVR

Menos memória, tamanho pequeno, adequado apenas para aplicações mais simples.

MegaAVR

São os mais populares, com boa quantidade de memória (até 256 kB), maior número de periféricos embutidos e adequados para aplicações moderadas a complexas.

XmegaAVR

Usado comercialmente para aplicações complexas, que requerem grande memória de programa e alta velocidade.

Dentro da família MegaAVR está o ATmega328 de 8 bits, comumente usado em muitos projetos e sistemas autônomos, nos quais é necessário um microcontrolador simples, de baixo consumo e baixo custo. A implementação mais comum desse chip está na popular plataforma de desenvolvimento Arduino, nos modelos Arduino Uno e Arduino Nano. Alguns dos recursos do ATmega328 de 28 pinos são:

  • Memória de programa flash de 32 kbytes.
  • Memória de dados EEPROM de 1 kbytes.
  • Memória de dados SRAM de 2 kbytes.
  • 23 Pinos de E/S.
  • Dois temporizadores de 8 bits.
  • Conversor A/D.
  • PWM de seis canais.
  • Porta serial USART.
  • Suporta oscilador externo de até 20MHz.

Microcontroladores PIC

Peripheral Interface Controller (PIC) é fornecido pela Microchip Technology a partir de 1993. Esses microcontroladores foram extremamente bem-sucedidos dentre os de 8 bits.

A principal causa por trás disso é que a Microchip tem atualizado constantemente a arquitetura do dispositivo e incluído muitos periféricos para atender às necessidades dos desenvolvedores.

Comentário

Microcontroladores PIC são muito populares entre amadores e na indústria, causa de ampla disponibilidade, baixo custo, grande base de usuários e capacidade de programação serial.

Existem muitos PICs, iniciados com PIC16F84 e PIC16C84. Mas esses eram os únicos PICs flash acessíveis. A Microchip lançou depois chips flash com tipos atraentes entre 8 e 16 bits, como 16F628, 16F877 e 18F452. O 16F877 tem cerca de duas vezes o preço do antigo 16F84, mas tem oito vezes mais espaço para código, muito mais RAM, muito mais pinos de E/S, uma UART e conversor A/D.

  • Características principais do PIC16F877:
    • CPU RISC de alto desempenho.
    • Até 8K x 14 palavras de memória de programa FLASH.
    • 35 Instruções (codificação de comprimento fixo de 14 bits).
    • 368 × 8 bytes de memória de dados baseada em RAM estática
    • Até 256 x 8 bytes de memória de dados EEPROM.
    • Capacidade de interrupção (até 14 fontes).
    • Três modos de endereçamento (direto, indireto, relativo).
    • Arquitetura de memória Harvard.
    • Modo SLEEP de economia de energia.
    • Ampla faixa de tensão de operação: 2,0V a 5,5V.

Microcontroladores ARM

ARM é o nome de uma empresa que projeta a arquitetura de microprocessadores, licenciando os produtos para vários fabricantes. O microcontrolador ARM é uma arquitetura RISC genuína de 32 bits. São diversas famílias de ARM. A série de núcleos ARM Cortex engloba uma ampla gama de opções de desempenho escaláveis, oferecendo aos projetistas uma grande variedade de opções e a oportunidade de usar o núcleo de melhor ajuste para sua aplicação, sem ser forçado a uma solução de tamanho único. O portfólio do ARM Cortex é dividido em três principais categorias:

Cortex-A

Núcleos de processador de aplicações para sistemas de alto desempenho, como smartphones e tablets.

Cortex-R

Núcleos de alto desempenho para aplicações em tempo real.

Cortex-M

Núcleos microcontroladores para uma ampla gama de aplicações embutidas.

O ARM é um dispositivo sensível ao custo e de alto desempenho que tem sido usado em uma ampla gama de aplicações, como sistemas de controle de instrumentos industriais, redes e sensores sem fio e sistemas automotivos.

Microcontroladores MSP

MSP significa Mixed Signal Processor e é a família da Texas Instruments. Construído em torno de uma CPU de 16 bits, o MSP foi projetado para instruções incorporadas de baixo custo e baixíssima dissipação de energia, a característica principal do microcontrolador.

Outras vantagens estão diretamente relacionadas ao barramento de dados de 16 bits e aos sete modos de endereçamento e ao conjunto de instruções reduzido, o que permite um código de programação mais curto e denso para desempenho rápido.

Microcontrolador ESP32

Criado pela Espressif Systems, o ESP32 é um sistema de baixo custo e baixo consumo de energia em um chip com recursos de Wi-Fi e Bluetooth de modo duplo. Em seu coração há um microprocessador Tensilica Xtensa LX6 de núcleo único ou dual com uma frequência de até 240MHz. O ESP32 é altamente integrado com antena embutida, amplificador de potência, amplificador de recepção de baixo ruído, filtros e módulos de gerenciamento de energia.

Figura 20: Foto de um microcontrolador ESP32 usado em projetos DIY. Fonte: Shutterstock.

Projetado para dispositivos móveis, eletrônicos vestíveis e aplicativos de Internet das Coisas, o ESP32 atinge um consumo de energia ultrabaixo por meio de recursos de economia de energia, modos de energia múltiplos e dimensionamento dinâmico de energia.

Verificando o aprendizado

ATENÇÃO!

Para desbloquear o próximo módulo, é necessário que você responda corretamente a uma das seguintes questões:

O conteúdo ainda não acabou.

Clique aqui e retorne para saber como desbloquear.

Conclusão

Considerações Finais

Discutimos os motivos que levaram ao desenvolvimento e à grande aceitação dos microcontroladores. Além disso, verificamos por que estes são mais eficientes para as aplicações de controle e monitoração em sistemas embarcados, integrando diversos dispositivos.

Avaliamos as principais arquiteturas utilizadas, com suas vantagens e desvantagens, considerando o conjunto de instruções e a forma de acesso à memória. Indicamos também as principais famílias de microcontroladores e como estas se caracterizam dentro do universo de arquiteturas existentes.

Podcast

CONQUISTAS

Você atingiu os seguintes objetivos:

Descreveu a evolução dos microcontroladores

Descreveu os componentes básicos de microcontroladores

Distinguiu entre os diferentes microcontroladores

Identificou microcontroladores, com base nas famílias e tipos existentes no mercado