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.

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.
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.

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.

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.

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".

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.

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.



