Microcontroladores: diferenças e por onde começar.

Conteúdo

    Introdução

    Microcontroladores são pequenas plataformas capazes de integrar sistemas para que periféricos como sensores e atuadores funcionem de forma conjunta, e, para entender a diferença entre os diversos microcontroladores, precisamos primeiro entender a diferença entre microcontrolador, microprocessador e placa de desenvolvimento.

    Primeiramente, um microprocessador compreende um circuito integrado ou uma arquitetura de processamento de dados que tem uma CPU integrada, em resumo, são dispositivos responsáveis por efetuar cálculos utilizando de registradores internos e necessitam de uma estrutura auxiliar de memórias para funcionar propriamente. No dia a dia, microprocessadores podem ser encontrados em computadores, celulares, laptops e em microcontroladores, além disso, existem duas categorias de microprocessadores: RISC e CISC.

    CPU

    CPU vem do inglês Central Process Unit e é uma unidade que faz parte de um sistema computacional que é responsável pelo processamento no dispositivo, também pode ser chamada de processador.

    Microprocessadores CISC

    CISC vem da sigla em inglês Complex Instruction Set Computer e designa tipos de microprocessadores que admitem em seus registradores instruções complexas em comandos reduzidos e para passarmos estas instruções para um processador de modelo CISC precisamos traduzir via microprogamação, uma etapa intermédiária entre códigos de alto nível e linguagem de máquina. Há algumas vantagens na utilização desses microprocessadores, uma delas é que com instruções mais complexas fica mais fácil do desenvolvedor trabalhar na arquitetura, além disso, nesse tipo de arquitetura, o fluxo de dados para a memória é facilitado pois é permitido que qualquer instrução referencie a memória. As principais aplicações desse tipo de arquitetura são CPU’s de computadores pessoais e servidores com a arquitetura x86 (provável arquitetura do seu computador pessoal).

    Este é o Intel Core i7, famoso microprocessador CISC de laptops e computadores de mesa. Intel e AMD são as principais fabricantes de microprocessadores CISC.

    Registradores

    São espaços de memória dentro da CPU responsáveis pelo armazenamento de bits, são o tipo de memória mais rápido numa arquitetura pois conversam primariamente com o processamento da máquina. Cada arquitetura tem seus próprios registradores e eles podem assumir diferentes tipos de memória para auxiliar em um processamento mais efetivo e específico.

    Códigos de alto nível x linguagem de máquina

    A relação entre baixo e alto nível aqui, computacionalmente, se traduz no grau em que é mais parecido com a linguagem humana, por exemplo, uma linguagem de alto nível tem funções escritas com nomes ao invés de símbolos ou números para proporcionar ao desenvolvedor um foco muito mais em instruções do que em operações internas nos registradores de um processador. Como exemplo, temos: Java, C# e Python, que são consideradas linguagens de alto nível enquanto assembly é considerado baixo nível.

    Microprocessadores RISC

    Enquanto os microprocessadores do modelo CISC são aplicados em dispositivos de alta performance e poder de processamento, os processadores de arquitetura RISC são amplamente utilizados em dispositivos com recursos limitados e que precisam de um processador eficiente energeticamente. RISC vem do inglês Reduced Instruction Set Computer e é um modelo de arquitetura de microprocessadores que executam instruções reduzidas em seus registradores e que são executadas em tempo quase igual, esses microprocessadores são excelentes para aplicações embarcadas e são atualmente utilizadas em videogames, celulares e até laptops, sendo estes os mais econômicos energeticamente. Como exemplo, temos as arquiteturas ARM utilizadas por grandes marcas como Qualcomm (Séries Snapdragon) e Apple (Séries M).

    Risc-V, arquitetura de microprocessadores Open Source com ampla comunidade de apoiadores, fácil de aprender e cada vez mais usual na academia e indústria para otimização de dispositivos. O autor recomenda fortemente o aprendizado da arquitetura.

    Sistemas embarcados

    Um sistema embarcado pode ser descrito como um dispositivo eletrônico feito com um único propósito. Como exemplos, podemos citar: ar-condicionados, controles de TV, mouses de computador e outros. Observe que, nesse conceito, não enquadramos computadores como sistemas embarcados, pois são utilizados com propósitos gerais.

    Open Source

    Open Source é uma filosofia que faz alusão aos softwares de código-fonte livres. Hoje em dia, é bem mais ampla e designa hardware, software e dispositivos que são de livre acesso, modificação e livres de licença.

    Microcontroladores

    Sabendo o que são microprocessadores, podemos partir para os microcontroladores, que são pequenos computadores e de fato arquiteturas um pouco mais complexas do que microprocessadores, pois, diferente dos microprocessadores, os microcontrolodares são circuitos integrados/arquiteturas que englobam uma série de dispositivos internos como memórias RAM, ROM e Flash além de um sistema de entradas e saídas que faz com que o microcontrolador seja capaz de interpretar e processar sinais externos e até mesmo gerar sinais internamente. Existem vários microcontroladores no mercado para quem quer começar a aprender a utilizar e programar esses dispositivos, os mais comuns são Intel 8051, PIC16 (Modelos PIC), STM32 e ATMEL328p (arquitetura AVR). O Intel 8051 é um microcontrolador bem antigo e creditado como o microcontrolador mais popular do mundo, datado de 1977 mas existem arquiteturas compatíveis até hoje, ficou famoso pelo pioneirismo e suas amigáveis instruções em linguagem assembly, além disso, é amplamente utilizado em na indústria, sendo essa sua principal aplicação e talvez você tenha algum dispositivo em sua casa que seja controlado por um 8051. Mesmo que o 8051 seja popular, não o indico para um primeiro contato com microcontroladores, a menos que você seja fascinado por assembly e aplicações industriais. Confira abaixo o diagrama da arquitetura do Intel 8051.

    Circuito Integrado

    Circuitos integrados ou chipes são dispositivos eletrônicos miniaturizados sobre um substrato fino de um semicondutor. Hoje em dia, CI´s são amplamente utilizados no circuito de quase todos os dispositivos eletrônicos comuns, inclusive, microcontroladores são CI´s.

    Linguagem Assembly

    A linguagem Assembly varia de acordo com a arquitetura do microprocessador e é uma linguagem de baixo nível que interage diretamente com os registradores internos da CPU, contendo instruções bem simples. Isso resulta em muitas linhas de código para realizar tarefas relativamente simples, como a multiplicação de polinômios.

    Memória RAM

    As memórias Random Access Memory (RAM) são memórias rápidas e temporárias que os sistemas computacionais usam para armazenar informações em tempo de execução.

    Memória ROM

    As memórias Read-Only Memory (ROM) são memórias não voláteis usadas para armazenar informações permanentes nos sistemas computacionais.

    Memória Flash

    Memórias Flash são memórias rápidas, semelhantes às memórias RAM em chipe; porém, não são voláteis e diferentemente das memórias ROM, podem ser atualizadas em conteúdo. O famoso ‘Pen-Drive’ é um bom exemplo da utilização de um dispositivo de memória Flash.

    Recomendações do autor :: microcontroladores

    Agora irei falar dos 3 principais microcontroladores que indico para quem deseja começar a aprender a utilizar esses dispositivos: PIC16, STM32 e ATMEL328p. PIC16 e ATMEL328p são ambos microcontroladores de 8 bits e ambos possuem uma excelente curva de aprendizado a um custo acessível, além disso são ambos microcontroladores com grande versatilidade que podem ser utilizados em projetos de hobbistas, engenheiros e desenvolvedores de sistemas embarcados. Apesar de podermos utilizar a linguagem assembly para programar esses dispositivos, recomendo utilizar a linguagem C para programar, a menos que você queira aprender um pouco mais de arquitetura de computadores no processo. Além dos comentários apresentados acima gostaria de acrescentar que os microcontroladores Atmel e PIC são de uma mesma empresa, a Microchip, e recomendo como IDE o software Microchip Studio que tem suporte para os dois microcontroladores. Observe abaixo o diagrama da arquitetura PIC, muito similiar à AVR.

    Uma outra série de microcontroladores que indico utilizar ou começar-por é a série STM32, microcontroladores variados de alta eficiência e poder, utilizando como processadores a série ARM Cortex M de 32 bits e conta com mais de 1200 microcontroladores STM32 diferentes. Indico esses microcontroladores pois foi por onde comecei a aprender de fato sobre microcontroladores na disciplina de mesmo nome da faculdade. Além disso, a IDE usual para esses microcontroladores é a STM32CubeIDE que conta com uma série de parâmetros programáveis visualmente utilizando o CubeMX e uma interface bem amigável de configuração para o STM32, além de suportar programação em C/C++ (indico sempre C) e um custo bem acessível para o que oferece em relação às outras placas que já trabalhei. Recomendo o aprendizado através do livro Mastering stm32.

    Placas de desenvolvimento

    Por último, mas não menos importante, temos as placas de desenvolvimento que são plataformas que integram os microcontroladores em uma placa e normalmente servem para facilitar o processo de prototipagem, adicionando um oscilador externo, conectores para cabos mais simples e em certos casos sensores, atuadores e integrando o programador ao microcontrolador para, por exemplo, fazer com que necessite apenas de uma conexão USB com o seu computador para programar o seu microcontrolador. Uma das placas de desenvolvimento mais popular no mundo é o Arduino UNO da Arduino, bastante popular por ser acessível e fácil de programar, utilizando uma IDE própria com programação em C++ e sendo uma placa Open source e ideal para introduzir crianças ao mundo da eletrônica/robótica. As placas Arduino são atratativas pela praticidade na programação e pelo fato de haver uma enorme comunidade de usuários, porém, para um primeiro contato com microcontroladores, recomendo utilizar a STM32 Nucleo-64 da ST que conta com programador integrado e a ESP32 da Espressif que conta com Wi-Fi e Bluetooth integrados para dar um maior suporte aos seus projetos. Não recomendo Arduino por conta de introduzir as pessoas de uma forma que elas não consigam entender exatamente o porquê de aquilo que elas estão fazendo funcionar, o que pode ocasionar em ‘perrengues’ na hora de fazer um projeto mais específico, onde precisará ler Datasheets e fazer configurações mais específicas diretamente no microcontrolador, o qual já citamos anteriormente: Atmega328p.

    Stm32 Nucleo-64, uma placa muito potente, com programador integrado e cheia de recursos de conectividade e periféricos para trabalhar com projetos dos mais variados escopos. Novamente, o autor recomenda fortemente :D.

    Oscilador

    O osclilador ou cristal oscilador é um componente pode ser interno ou externo ao CI de um microcontrolador e serve para atribuir uma frequência de trabalho ao microprocessador em formato de hertz.

    Programador (Assembler)

    O programador ou Assembler é um dispositivo com um circuito integrado que utilizamos para transferir códigos do computador para alguns microcontroladores.

    USB

    Universal Serial Bus (USB) é um padrão de conexão universal criado para conetar os dispositivos eletrônicos aos computadores.

    Datasheet

    Datasheets são documentos técnicos que contém informações gerais e específicas sobre um determinado componente eletrônico, dispositivo ou sistema.

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *