Como programar o microcontrolador AVR com Arduino

Índice

Program the AVR Microcontroller with Arduino

No mundo dos microcontroladores e da eletrônica, existem muitos tipos diferentes. Um dos tipos mais populares de microcontroladores é a família AVR. Esses microcontroladores podem ser usados em uma variedade de projetos ou produtos, pois têm muitos usos e funções.

 Se você deseja começar um projeto Arduino, mas não sabe como programar o microcontrolador AVR com o Arduino, não se preocupe! Nesta postagem do blog, abordaremos todas as suas opções!

O que é um microcontrolador AVR?

Um microcontrolador AVR é um microcontrolador que utiliza o conjunto de instruções AVR. O AVR é um microcontrolador de chip único RISC de 8 bits com arquitetura Harvard modificada, desenvolvido pela Atmel em 1996. Os microcontroladores AVR são frequentemente utilizados em placas Arduino e, ao programar para placas Arduino, você utilizará o microcontrolador AVR.

avr microcontroller

Forma completa do microcontrolador AVR

A forma completa do microcontrolador AVR é Atmel AVR. É um tipo de microcontrolador que foi originalmente projetado para dispositivos embarcados, como carros, telefones celulares, eletrodomésticos, sistemas de monitoramento doméstico e muito mais! Os microcontroladores AVR são frequentemente usados em placas Arduino e, ao programar para placas Arduino, você usará o microcontrolador AVR.

Recursos do microcontrolador AVR

Baixo consumo de energia – Uma das melhores características dos microcontroladores AVR é o seu baixo consumo de energia. Dependendo do que você estiver fazendo com o dispositivo, o consumo pode variar de insignificante a alguns watts.

Ampla faixa de temperatura – Embora a temperatura possa afetar a velocidade do dispositivo, os microcontroladores AVR podem suportar temperaturas que variam de -40 graus Celsius a 85 graus Celsius.

Arquitetura de 8 bits – Outra característica dos microcontroladores AVR é sua arquitetura de 8 bits. Isso permite que seu dispositivo tenha mais memória e mais poder de processamento.

Fácil de programar – Por último, mas não menos importante, os microcontroladores AVR são fáceis de programar. Isso os torna uma ótima opção para iniciantes e entusiastas que desejam criar seus próprios projetos.

Arquitetura do microcontrolador AVR

A arquitetura AVR é baseada em uma arquitetura de computador com conjunto reduzido de instruções (RISC). As arquiteturas RISC tornam o processo de programação muito mais simples e eficiente, o que é uma das razões pelas quais o AVR se tornou tão popular.

Conjunto de instruções – O conjunto de instruções da arquitetura também é reduzido. Embora isso possa parecer que tornaria a programação mais difícil, na verdade facilita, pois menos instruções significam instruções menos complexas.

Caminho de dados de 8 bits – A arquitetura de 8 bits também significa que ela tem um caminho de dados de 8 bits, o que significa que pode processar mais dados de uma vez.

Memória de programa – A memória de programa é onde todos os seus programas são armazenados. É como um disco rígido para o seu dispositivo.

Memória de dados – A memória de dados é onde seus dados são armazenados. Por exemplo, se você deseja armazenar um número no dispositivo, ele é armazenado na memória de dados.

Diagrama dos pinos do microcontrolador AVR

Existem diferentes tipos de microcontroladores AVR e o diagrama dos pinos varia consoante o tipo. No entanto, existem alguns diagramas de pinos que são comuns em muitos tipos de microcontroladores AVR, como o ATmega328P.

AVR ATmega328P pighixxx
Pino AVR ATmega328P

Configuração dos pinos do ATmega328P

RESET – RESET é uma linha que é acionada quando o dispositivo é reiniciado. Isso pode interferir no programa se os dois estiverem conectados.

GND – GND significa terra. Esta é a conexão que o seu dispositivo usará para completar o circuito.

VCC – VCC é a tensão usada para alimentar o seu dispositivo.

RX – RX é um pino de entrada que recebe dados de outro dispositivo.

TX – TX é um pino de saída que envia dados para outro dispositivo.

Diagrama de blocos do microcontrolador AVR

O diagrama de blocos do microcontrolador AVR é o diagrama que mostra todas as partes internas do microcontrolador. Modelos diferentes terão partes diferentes, mas cada modelo é geralmente o mesmo em termos de funcionalidade.

Memória de programa – A memória de programa é onde o seu programa é armazenado. É como um disco rígido para o dispositivo.

Memória de dados – A memória de dados é onde seus dados são armazenados.

Contador de programa – O contador de programa mantém o controle de onde você está no programa.

Registro de instruções – O registro de instruções contém a próxima instrução que será executada.

ALU – ALU significa unidade lógica aritmética. Ela executa todas as operações matemáticas do seu programa.

Arquivo de registros – O arquivo de registros é uma coleção dos registros da ALU. – Temporizador/contador – O temporizador/contador é usado para medir o tempo ou contar vários eventos.

O que é Arduino

Arduino é uma plataforma de código aberto que facilita o design e a criação de projetos eletrônicos para pessoas com pouca ou nenhuma experiência em programação. As placas Arduino são capazes de controlar uma variedade de luzes, sensores e outros dispositivos. As placas Arduino usam um software específico para serem programadas. Se você deseja programar o microcontrolador AVR com Arduino, é necessário usar uma placa projetada especificamente para isso.

Programação de microcontroladores AVR com Arduino

Se você deseja programar o microcontrolador AVR com o Arduino, será necessário usar uma placa Arduino projetada para microcontroladores AVR. Essas placas são projetadas especificamente para lidar com a programação do microcontrolador AVR. Programar o microcontrolador AVR com o Arduino é tão fácil quanto carregar um programa na placa. Depois de carregar o programa, você precisa reiniciar a placa Arduino e, em seguida, desconectar a fonte de alimentação. Quando você reconectar a fonte de alimentação, o microcontrolador AVR com Arduino estará programado.

1. Configurar programador-Arduino

Primeiro, você precisa configurar o "programador-Arduino" (o Arduino que você configurou como programador) como ISP. Por padrão, os esboços (código) estão disponíveis em Código de exemplo no menu Arquivo do IDE do Arduino. O esboço do ISP do Arduino passa as instruções necessárias para o Programador-Arduino para configurá-lo no modo de programação.

Select Arduino ISP option
Select Arduino ISP option

2. LED conectado ao Arduino

Como segundo passo, o status do Programador-Arduino pode ser monitorado usando os LEDs conectados, conforme mostrado. O código ISP do Arduino é pré-programado para essa funcionalidade.

Arduino-LED connection
Arduino-LED connection

Notas sobre os LEDs:

Pino 7 = programação (acende durante a programação)

Pino 8 = Erro (acende quando há erro de programação)

Pino 9 = Normal (permanece aceso quando o programador é ligado)

Depois que o Programador-Arduino estiver configurado, a conexão entre o Programador-Arduino e o Arduino de destino será estabelecida. A configuração dos pinos precisa ser feita exatamente como descrito no código ISP do Arduino.

3. Configurar a comunicação SPI

O Arduino ISP comunica-se usando o protocolo Serial Peripheral Interface (SPI) para programar o microcontrolador AVR. A comunicação SPI usa 4 sinais lógicos: MOSI, MISO, SCLK e SS. Além do I2C, o SPI é um dos modos de comunicação mais comumente usados para MCUs. O SPI segue uma arquitetura mestre-escravo, o que significa que um dispositivo mestre pode se comunicar com vários dispositivos escravos usando os mesmos pinos de dados, e o dispositivo escravo de destino é selecionado usando a linha de seleção de escravo.

Se houver um cartão de memória, a seleção é usada para selecionar um chip específico entre vários chips. No entanto, quando você está usando o Arduino como uma ferramenta de programação, o sinal de seleção escravo é usado apenas para reiniciar o microcontrolador. Reinicie o microcontrolador em um estado de aceitação de comandos do Arduino do programador.

No Programador-Arduino, os pinos 10, 11, 12 e 13 são usados como pinos de dados. A configuração é a seguinte:

pino 10 = reinicialização

Pino 11 = MOSI

Pino 12 = MISO

Pino 13 = SCK

4. configurar os pinos do conector ICSP

A Programação Serial em Circuito (ICSP) é a capacidade de programar um microcontrolador sem interromper o circuito. O conector ICSP está disponível como 6 pinos na placa Arduino. Conecte os pinos 11, 12 e 13 do Arduino de destino aos pinos 11, 12 e 13 do programador Arduino. Observe que o pino 10 do programador Arduino deve ser conectado ao pino de reinicialização do Arduino de destino. Alternativamente, os pinos do conector ICSP podem ser usados para comunicação SPI.

ICSP header for Arduino
ICSP header for Arduino

5. Configure o Arduino como ISP

Depois de conectar tudo acima, você precisa definir que está usando o modo Programador no PC host. Vá para Ferramentas no menu e selecione "Arduino como ISP" na opção "Programador".

Configure Arduino as ISP
Configure Arduino as ISP

6. Grave o Bootloader no Arduino

Em seguida, carregue o bootloader na memória do Arduino de destino e defina o "fusível". No mundo Arduino, um fusível é um conjunto de instruções usado para definir várias funções em um microcontrolador. Por exemplo, a frequência do chip e a fonte do relógio são definidas nos fusíveis. Os microcontroladores são sensíveis às tensões de operação e podem apresentar mau funcionamento se os níveis de tensão forem inferiores aos especificados. A tensão mínima de operação também é definida dentro do fusível.

burn bootloader to Arduino
burn bootloader to Arduino

Precauções

#1. Se o microcontrolador ou a placa Arduino puderem se comunicar com o programa Arduino IDE, há várias vantagens, como a possibilidade de usar o monitor serial do Arduino IDE para verificar os resultados em tempo de execução. (O Monitor Serial abre em uma janela separada, atuando como um terminal separado para receber e enviar dados seriais.)

#2. Se o bootloader não estiver carregado no microcontrolador, ele não poderá usar as funções do Arduino e não poderá se comunicar com o Arduino IDE. O bootloader ocupa parte da memória. Em alguns casos, não é necessário usar o Arduino IDE, portanto, o bootloader não precisa ser programado. Se o bootloader não for programado, mais memória poderá ser liberada para o esboço do programa principal. Por exemplo, no Arduino UNO, o tamanho total da memória é de 32 KB, e 0,5 KB de memória é alocado para o bootloader. Se o bootloader não estiver instalado, a memória total disponível para o esboço do programa principal será maior.

Resumo

O microcontrolador AVR é um chip fácil de usar e poderoso que pode ser programado para uma ampla gama de aplicações. É um ótimo chip para iniciantes que desejam entrar no mundo dos microcontroladores e da eletrônica. A plataforma Arduino é uma ótima maneira de começar a usar microcontroladores e foi projetada especificamente para iniciantes.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote