Guia passo a Passo para a Programação de Microcontroladores
Este é um guia passo a passo para quem deseja iniciar com a Programação de Microcontroladores. O artigo começa com a introdução de alguns termos básicos que serão utilizados no guia, uma lista de ferramentas, linguagens de programação e, no fim, um exemplo de um código para download com um guia passo a passo que você pode usar para praticar a programação de microcontroladores.
mas antes de mergulhar na programação do microcontrolador. Vamos definir os dois primeiros termos básicos: Hardware e Software.
o Hardware consiste nos componentes físicos do sistema, como chips, teclado, mouse, monitor, memórias, dispositivos de E/S. O Hardware é mais difícil de desenvolver em comparação com o software, tem que ser projetado para aplicações muito específicas e é uma solução muito eficiente e perfeita em sistemas de alta velocidade.
o Software são os componentes não físicos ou os aplicativos que são executados no hardware, como sistemas operacionais, jogos de computador e aplicativos de rede. O Software é altamente configurável, fácil e rápido de ser desenvolvido, também muito barato em comparação com o hardware.
o que é um microcontrolador
para entender o que é um microcontrolador, precisamos entender primeiro o que é um microprocessador ou uma CPU (Unidade Central de processamento). Uma CPU é um coração de qualquer sistema de computador, é como o cérebro humano ao realizar uma tarefa. Podemos basicamente dividi-lo em duas partes essenciais:
unidade de controle: Esta unidade é usada para buscar os dados da memória.
unidade de execução: Esta unidade é usada para executar ou executar os dados.
tipos de processadores
existem muitas categorias de processadores, como processadores de uso geral, processador de Sistema Específico de aplicativos e sistema multiprocessador. Processador de propósito geral tem muitos tipos:
▪ Microprocessador
▪ Microcontrolador
▪ processador Embarcado
▪ processador de sinal Digital
Microprocessador é um dispositivo semicondutor ou um computador em um chip, mas não o pleno funcionamento de um computador. Sua unidade central do processador contém
▪ JANTES de
▪ Programa de contadores
▪ Registra
▪ Outros circuitos (relógio de tempo de interrupção)
Um microcontrolador é um circuito integrado que contém um microprocessador e alguns periféricos para ser um funcional completa do computador, periféricos, por exemplo, a ADC, RAM, ROM, DAC.
História do Microcontrolador
Originalmente, a Intel corporation foi o primeiro fabricante de microcontroladores. O primeiro Microcontrolador foi produzido em 1971 nos EUA. Era um microcontrolador de 4 bits com o nome i4004. Ultimamente, a Intel produziu modelos mais sofisticados na época com um microcontrolador de 8 bits e depois disso um microcontrolador de 12 bits foi desenvolvido pela Toshiba.
aplicações de microcontroladores
microcontroladores têm muitas aplicações em muitas indústrias, por exemplo, automotivo, médico, automação industrial, aeroespacial, robótica.
Na indústria automotiva, por exemplo, os carros modernos têm hoje mais de 100 microprocessadores para sistemas de ar condicionado, ABS, EBD e também ADAS ou avançados sistemas de assistência à condução, tais como o adaptive curies controlador e o lane assist, a seguir é uma imagem de uma ECU ou unidade de controle eletrônico.
no domínio médico, existem dispositivos médicos que incluem microcontroladores, como ressonância magnética, conjunto de teste de glicose, ECG portátil. A imagem a seguir, é um dispositivo de teste de glicose.
no setor aeroespacial, a maioria das aeronaves foi projetada com novos sistemas aviônicos usando microcontroladores. Além disso, existem sistemas de controle de vôo, sistema de controle de tráfego aéreo, sistemas de navegação e clima que são todos baseados em microcontroladores.
microcontroladores populares
existem muitos tipos e plataformas de microcontroladores, mas a seleção de um microcontrolador depende de muitos fatores:
▪ Aplicação
▪ Orçamento
▪ Desempenho
▪ Número de pinos GPIO
▪ tamanho da Memória
▪ Temperatura do ambiente de operação
▪ consumo de Energia
Microcontrolador AVR
a imagem A seguir contém um diagrama de bloco de AVE12DA, um dos mais populares do microcontrolador famlily — o microcontrolador AVR:
microcontroladores AVR é produzido pela Atmel corporation (hoje: Microchip), Atmel tem 6 famílias de microcontroladores AVR, 4 famílias como microcontroladores de uso geral e 2 como microcontroladores de propósito específico. De propósito geral, os microcontroladores são:
▪ 8 bits – mega AVR
▪ 8 bits EM Minúsculo
▪ 8 & 16 bit – AVR Xmega
▪ 32 bits – AVR
finalidade Específica microcontroladores são:
▪ Automotivo AVR
▪ Gerenciamento de Bateria
Automotivo do AVR, a partir de seu nome, ele foi desenvolvido para aplicações automotivas. Pode trabalhar sob temperaturas muito altas até 150 Celsius, e inclui sistemas de proteção para problemas de curto-circuito.
o microcontrolador de gerenciamento de bateria é desenvolvido para sistemas de gerenciamento de bateria para proteger as operações de carregamento e descarga.
Exemplos de AVR Plataformas
▪ Arduino UNO
▪ Adafruit fruta Azul Micro
▪ Raspduino
▪ Digispark Pro
BRAÇO Microprocessador/Microcontrolador
BRAÇO microprocessador é o mais popular do processador no mundo, principalmente, em aplicações de consumo. Você pode ter um dispositivo baseado em processador ARM, mas não sabe! O ARM é principalmente um componente-chave de qualquer sistema embarcado de 32 bits bem-sucedido. O primeiro braço foi desenvolvido em 1985.
RISC Technology
ARM é usado RISC technology, RISC significa computador com conjunto de instruções reduzido, é uma filosofia de design fornecer instruções simples dentro de um único ciclo. Depende mais do software. Por outro lado, a tecnologia CISC depende mais do hardware.
a tecnologia RISC se concentra na redução do conjunto de instruções do processador. Por outro lado, o processador CISC possui um número não fixo do conjunto de instruções.
ARM Features
Arm tem muitos recursos para cada designer de sistema embarcado está procurando, por exemplo, Baixo consumo de energia devido ao seu tamanho compacto, também alta densidade de código é outro recurso, uma vez que estamos desenvolvendo sistemas embarcados, teremos recursos limitados na maioria dos casos.
estrutura interna do microcontrolador baseado em ARM
esta figura mostra a estrutura interna da maioria dos dispositivos baseados em ARM:
as caixas representam funções, as linhas representam ônibus. Vamos falar mais sobre cada componente em detalhes:
▪ O BRAÇO processador é o principal componente é responsável pelo processamento de operações
▪ Controladores são utilizados para coordenar as funções do sistema, como memória e controladores de interrupção
▪ Periféricos são usados para fornecer o sistema de entradas e saídas
▪ Um barramento é usado para troca de dados entre os diferentes componentes do sistema
Exemplos de plataformas ARM
Existem muitos dispositivos e plataformas embarcadas que ter braço microprocessador e.g.
▪ Arduino Due
▪ Raspberry Pi
▪ STM32F103C8T6
▪ NXP LPC1768
Outros Microcontrolador e Plataformas
Como já disse antes de selecionar um microcontrolador ou uma plataforma depende de muitos fatores (orçamento, número de pinos, etc.…). Existem também outros microcontroladores e plataformas, por exemplo.
▪ Microcontroladores PIC
▪ 8051
▪ ESP32
▪ Motorola Microcontroladores
Microcontrolador Ferramentas de Software e Hardware
Desde a criação do microcontrolador, tem havido muitos tipos de software e ferramentas de desenvolvimento de hardware. Claro, algumas das ferramentas podem ser usadas em vários tipos de microcontroladores, mas algumas são muito específicas por microcontrolador. Antes de começar com a programação do microcontrolador, você pode querer se familiarizar com as ferramentas de programação do microcontrolador e, por último, mas não menos importante, o processo de desenvolvimento.
Usando o embedded ferramentas de desenvolvimento, podemos precisar de ferramentas da seguinte forma:
Montador
é uma ferramenta de software que converte seu código-fonte em assembly para código de máquina, por exemplo (GNU assembler).
compilador
é um programa de software que cobre seu código-fonte em uma linguagem de programação de alto nível em linguagem assembly ou código de máquina. Compilação pode ser:
▪ Nativo: isso significa que você executar o compilador e o código gerado na mesma máquina
▪ Cruz: Isto significa que você executar o compilador em uma máquina e o código gerado é executado em um computador diferente (processador de arquitetura).
vinculador e localizador
um vinculador é um programa que coleta e vincula as compilações e monta operações e produz um único exe.
um localizador é uma ferramenta de programa que pode ser usada para alterar o mapa de memória da saída do vinculador.
Simulator
é um programa que imita cenário real, produz uma aproximação dos sistemas em tempo real. Um simulador é usado:
▪ se o hardware real não disponível
▪ perigosas ambientes de teste e cenários
Depurador
É um programa de software e de hardware do dispositivo que pode ser conectado ao meu PC para o meu incorporado de destino. Um depurador é usado:
▪ definir pontos de interrupção
▪ para rastreamento de execução
▪ despejo de memória
Hardware depurador pode ser
▪ in-circuit debugger
▪ depuração do software de agente de bordo
Flash loader
é um programa e dispositivo de hardware que pode ser usado para:
▪ Programa de ROM/Flash
▪ observar as variáveis
▪ Apagar ROM/Flash
Profiler
Profiler é uma ferramenta para monitorar o desempenho do software de código
Ambiente de Desenvolvimento Integrado
é um programa de software que tem a maioria das ferramentas tudo em um. Pode incluir
▪ editores de Texto
▪ Compiladores
▪ Depuradores
▪ criadores de perfil
▪ Simuladores
▪ Vinculadores
Microcontrolador Linguagens de Software
, podemos classificá-los em dois tipos:
Alto nível
▪ C/C++
▪ Java
▪ Ada
Usando este tipo de fornecer uma abstração de hardware de nível
Baixo nível
código de computador
é 0 e 1s e difícil de ser escrito por seres humanos, mas fácil de computadores para compreender a
Assembly
é um mnemônico código e o pseudo-instruções para melhorar a legibilidade
Exemplos:
uma instrução consiste em mnemônico (opcode) + operandos
Opcode é uma operação realizada por um processador de máquina
operandos é o alvo final; o opcode tem que tomar uma operação para.
a linguagem Assembly é legível e compreensível mais do que o código da máquina, mas você precisa usá-la em um processador específico e ter conhecimento de sua arquitetura.
C/C++ Linguagens de Programação
linguagens de Alto nível têm as seguintes características
▪ Fácil escrever
▪ Flexível
▪ Processador independente
▪ Alta produtividade
Programação de Microcontroladores Exemplo Usando o AVR ATMEGA16
ATmega 16 tem as seguintes características:
▪ 16 Kb de sistema de Auto memória flash programável
▪ 512 Bytes de EEPROM
▪ 1 Kbyte Interno SRAM
▪ Programação de Bloqueio de segurança
Recursos Periféricos
▪ em Tempo Real Contador Separado para o Oscilador
▪ Programável Serial USART
▪ Quatro Canais PWM
▪ 8-canal, de 10-bit ADC
▪ On-chip Oscilador
▪ Energia em Repouso e Marrom-limite de Detecção
▪ Oscilador RC Interno e Interrupção Fontes
▪ Tensões (de 2,7 v a 5.5V)
LED Piscando exemplo de programa usando ATmeg16 e Proteus
LED piscando programa em sistemas embarcados como o programa “hello world” no desenvolvimento de aplicativos. No exemplo a seguir, você aprenderá e usará o Proteus simulator para executar seu primeiro programa. Para baixar os arquivos de origem, vá para esta pasta.
Gravar seu programa usando Atmel studio
Depois de baixar o IDE,
abrir e escolha new project e escolha o local do arquivo hex como na imagem a seguir
O próximo passo é escolher o microcontrolador da família
Depois que você vai receber a seguinte janela com acionador de partida de código
E agora, por favor, escreva o seguinte código
O próximo passo é construir o seu programa pressionando F7
Depois que você vai encontrar o arquivo hex no local escolhido,
O próximo passo é utilizar o simulador Proteus
E, agora, criar um diagrama esquemático de um modelo
E escolha a não criar um layout de PCB
Finalmente, estamos a fazer, mas precisamos adicionar o arquivo hex como na imagem a seguir
Agora editar CKSEL Fusíveis
Salvar e clique em play
E você pode ver que o LED está desligado para 500ms (lado esquerdo) e para 500ms (lado direito)
Programa de Explicação, linha por linha
Para baixar os arquivos de origem, por favor, vá para esta pasta.
#define f_CPU 100000UL // para criar uma constante e escolher a velocidade do processador
#include <avr/io.h > / / para recuperar alguns arquivos para entradas e Saídas
#include <avr / delay.h> // recuperar este arquivo para usar funções de atraso
int main(void){ // a função e o programa principal
DDRA = 0b0000001; // configurar o pin como uma saída / direção
While(1){ // loop para sempre
PORTA = 0b00000001; // para fazer o PA0 = 1 e a saída 5v (LED)
_delay_ms(500); // atraso de meio segundo
PORTA = 0b0000000; // para fazer o PA0 = 0 e a saída de 0v (LED desligado)
_delay_ms (500); //atraso de meio segundo
}
retorno 0;
} //final do programa
Conclusão
Hoje em dia, os sistemas embarcados são utilizados na vital e pode ser usado para proteger e guardar um monte de pessoas, como na área médica e outras aplicações. Você deve continuar aprendendo depois de obter uma visão geral e introdução sobre programação de microcontroladores. Seu próximo passo deve ser aprender design de software incorporado e sistemas acionados em tempo real.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
microcontrolador AVR e sistemas embarcados: Pearson New International Edition: usando Assembly E C, Muhammad Ali Mazidi, DeVry University
ARM System Developer’s Guide Designing and Optimizing System Software um volume na série Morgan Kaufmann em Arquitetura de computadores e Design Book • 2004