Primeiros passos com Atmel Studio

Atmel Studio

Atmel Studio é a plataforma de desenvolvimento disponibilizada gratuitamente pela Microchip para desenvolver projetos com seus microcontroladores. Suporta tanto os Atmel AVR quanto os Atmel ARM Cortex. Nesta ferramenta é possível desenvolver projetos em C/C++ ou Assembly, além de depurar o programa tanto com ferramentas externas como em um simulador integrado. Além do Atmel Studio existem outras ferramentas que auxiliam o desenvolvimento com microcontroladores Atmel AVR, entre elas podemos citar o compilador AVR GCC e o programador por linha de comando AVRDUDE, ambos open-source.

 

Nesse artigo vamos exibir os primeiros passos para se criar um projeto em linguagem C utilizando o Atmel Studio e como enviar o programa para a placa Arduino UNO utilizando o avrdude.

 

Atmel Studio

 

Ante de mais nada é necessário fazer o download do Atmel Studio. Você pode baixar diretamente do site da Microchip. É interessante notar que o Atmel Studio, além de possuir um ótimo editor de código com vários recursos, inclui o compilador GCC C e C++, Assembler e um simulador, e interfaces contínuas com depuradores e programadores no sistema para tornar o desenvolvimento dos códigos mais fácil. Outro ponto a ser notado é que a ferramenta é baseada no Visual Studio da Microsoft, portanto só é possível usar a mesma no Windows.

 

Após o download é só instalar seguindo os passos do assistente de instalação no Windows.

 

O AVRDUDE

 

O AVRDUDE é um programador em linha de comando muito popular para linha de microcontroladores Atmel AVR. É um projeto open-source e também é utilizado para upload dos programas na plataforma Arduino.

 

Para este tutorial você pode fazer o download do AVRDUDE que será integrado ao Atmel Studio mais à frente

 

Criando um projeto com o Atmel Studio

 

Para criar um novo projeto no Atmel Studio acesse File > New > Project, conforme exibido na figura 1:

 

Figura 1 - Iniciando um projeto no ATMEL Studio
Figura 1 - Iniciando um projeto no ATMEL Studio

 

Será aberta uma janela para configuração do projeto. Nela é possível escolher o compilador, além do nome e do caminho da pasta onde o projeto será armazenado, conforme exibido na figura 2:

 

Figura 2 - Configurando um novo projeto
Figura 2 - Configurando um novo projeto

 

A seguir será apresentada uma janela para escolha do microcontrolador alvo. Neste caso foi escolhido o ATmega328P, microcontrolador da Arduino UNO, conforme exibido na figura 3:

 

Figura 3 - Escolhendo o microcontrolador
Figura 3 - Escolhendo o microcontrolador

 

Pronto, o projeto foi criado! Além disso também foi criado o código fonte com a função main() já inserida, pronto para digitar o código da aplicação, conforme exibido na figura 4:

 

Figura 4 - Projeto criado no Atmel Studio
Figura 4 - Projeto criado no Atmel Studio

 

Para testar, vamos inserir um código para piscar o LED no pino PB5, que é o pino 13 da placa Arduino UNO. Digite o código a seguir:

 

 

O código apresentado é relativamente simples e os comentários explicam detalhadamente cada linha do programa. Para construir o projeto, você pode acessar Build > Build Solution, conforme exibido na figura 5:

 

Figura 5 - Compilando o projeto
Figura 5 - Compilando o projeto

 

Durante a construção do projeto, na janela Output são exibidas algumas informações desse processo além de detalhes do uso de memória e status final do processo, conforme exibido na figura 6 a seguir:

 

Resultado da Compilação
Figura 6 - Resultado da Compilação

 

A partir desse ponto já foi criado o arquivo .hex e o mesmo está pronto para ser gravado na memória flash do microcontrolador. Para esse processo vamos utilizar o gravador AVRDUDE junto com o bootloader presente na placa Arduino UNO. Dessa forma não será necessária uma ferramenta de gravação.

 

Configurando o AVRDUDE no Atmel Studio

 

Após o download do programa é necessário configurar o mesmo dentro do Atmel Studio para agilizar o processo de upload do .hex para a placa. Inicialmente é interessante criar uma pasta no diretório C:\ com o nome avrdude contendo o executável do programa e os demais arquivos que vieram juntos no download. Próximo passo é configurar dentro do Atmel Studio, para isso acesse Tools > External Tool…, conforme exibido na figura 7:

 

Adicionando uma ferramenta externa
Figura 7 - Adicionando uma ferramenta externa

 

Será aberta uma janela para configuração de uma ferramenta externa. Configure o avrdude, conforme  exibido na figura 8:

 

 Configurando o avrdude
Figura 8 - Configurando o avrdude

 

O parâmetro Arguments deve ficar da seguinte forma, para interface com a placa Arduino UNO:

 

 

Dica do leitor :Luís Fernando Chavier

 

 

"Dessa forma dá para usar diferentes configurações de build (ex. "Debug", "Release", etc.) que ele já busca o executável no lugar certo."

 

Obs: Será necessário mudar a COM9, conforme a porta que o Arduino foi conectada.

 

Após a configuração, a ferramenta estará disponível no menu Tools. Com o projeto já compilado, para iniciar o processo de gravação basta acessar o menu Tools e clicar no nome dado à ferramenta de programação, conforme exibido na figura 9:

 

Iniciando o avrdude para programação
Figura 9 - Iniciando o avrdude para programação

 

O status da programação aparecerá na janela de saída e caso ocorra com sucesso aparecerá a mensagem exibida na figura 10:

 

Resultado da programação com avrdude
Figura 10 - Resultado da programação com avrdude

 

Após isso o LED L da placa Arduino UNO começará a piscar em intervalos de 1 seg.

 

E você leitor, que esta acostumado a programar o microcontrolador Atmega328 com o uso da plataforma Arduino, o que acha de começar a explorar os recursos dos Atmel AVR utilizando as ferramentas apresentadas?

 

Saiba mais

 

Arduino UNO

Programe o Arduino UNO com o CodeVisionAVR

 

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Fábio Souza
Engenheiro com experiência no desenvolvimento de projetos eletrônicos embarcados. Hoje é diretor de operações do portal Embarcados, onde trabalha para levar conteúdos de eletrônica, sistemas embarcados e IoT para o Brasil. Também atua no ensino eletrônica e programação pelo Brasil. É entusiastas do movimento maker, da cultura DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e projetos open hardware, como o projeto Franzininho Participou da residência hacker 2018 no Redbull Basement. Quando não está ministrando palestras, cursos ou workshops, dedica seu tempo “escovando bits” ou projetando placas eletrônicas.

39
Deixe um comentário

avatar
 
16 Comment threads
23 Thread replies
5 Followers
 
Most reacted comment
Hottest comment thread
18 Comment authors
Eron AlmeidaMateus LimaMateus LimaDaniel FernandesJoel Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Eron Almeida
Visitante
Eron

É possivel alterar a tensão de trabalho de um atmega 328 ou um 168 para trabalhar com 3.3 V e mesmo assim rodar com a plataforma arduino?

Mateus Lima
Visitante
Mateus L. Fonseca

Olá pessoal estou com um problema , atualmente estou trabalhando SparkFun Geiger Counter e estou usando o Atmel porém estou com alguns erros , alguém pode dar uma força?

Daniel Fernandes
Visitante
Daniel Fernandes

Saudações Fábio!
Tenho um projeto pronto que baixei pela internet aqui: https://www.youtube.com/watch?v=-XuD8idesZo e, dentro de uma pasta, existem vários arquivos como 'Makefile', 'main.c', entre outros; portanto, gostaria de saber qual ou quais arquivos devo usar para gravar no microcontrolador como um ATmega328-P; Obrigado

Mateus Lima
Membro
Mateus Lima

Fábio , me tira uma duvida é possivel rodar o sparkfun geiger counter no atmel ? Ou essa IDE só roda microcontroladores da atmel?

Joel
Visitante
Joel

Como posso usa-lo com o STM32? o STM estará na World Skills e ainda não o aprendi.

William Ferreira
Visitante
William Ferreira

Então, como nesse exemplo não é utilizado as bibliotecas do Arduino, as Creative Commons do Arduino não se aplicam? Caso você tenha uma placa desenvolvida com base em uma placa do arduino e utiliza outro método para programar a sua placa você não precisa deixar o seu Hardware aberto?

Renato Giovanini
Visitante
Renato Giovanini

Obrigado pelo post, Fábio.
Estou tendo um problema. Estou a
tentar programar a placa Arduino Micro (Atmega32u4), e fiz como indicado
(substituindo atmega328 por m32u4), mas a janela de Output não mostra
nada, o processo parece que fica em espera, pois quando clico em Tools
novamente, a opção Arduino Programmer fica com um (stop).
Alguma ideia? Qualquer ajuda seria bem vinda.
Obrigado.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Renato, infelizmente eu não tenho o Arduino Micro para testar. Porém, para o Arduino Leonardo eu configuro dessa forma:

-C "C:avrdudeavrdude.conf" -p atmega328p -c arduino -P COM4 -b 115200 -U flash:w:"$(TargetDir)$(TargetName).hex":i

Habilite as mensagens de saídas na IDE do Arduino para ver as configurações para a Arduino Micro. Acredito que seja algo parecido com o exibido acima.

Me conte o resultado. Abraços

Renato Giovanini
Visitante
Renato Giovanini

Olá, Fábio. Fiz o que sugeriu, agora o campo de argumentos possui a seguinte configuração: -C "C:avrdudeavrdude.conf" -v -p atmega32u4 -c arduino -P COM8 -b 57600 -D -U flash:w:"$(TargetDir)$(TargetName).hex":i Porém, ainda sem sucesso. O que tenho na saída é: avrdude.exe: Version 5.11-Patch#7610, compiled on Aug 31 2011 at 08:02:19 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "C:avrdudeavrdude.conf" Using Port : COM8 Using Programmer : arduino Overriding Baud Rate : 115200 E nada mais. O sistema parece que trava... Alguma sugestão? Obrigado.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Renato, me desculpe. Eu envie a configuração para o 328P. Segue as configurações para o 32u4:
-C "C:avrdudeavrdude.conf" -v -patmega32u4 -cavr109 -PCOM6 -b57600 -D -Uflash:w:"$(TargetDir)$(TargetName).hex":i

Veja se funciona com o micro

Renato Giovanini
Visitante
Renato Giovanini

Nada ainda, Fábio. O processo trava em:
Connecting to programmer: .
Olhei no help do avrdude que existe uma opção para quando o programador é o arduino. Mudando os argumentos para: -C "C:avrdudeavrdude.conf" -v -patmega32u4 -carduino -PCOM8 -b57600 -D -Uflash:w:"$(TargetDir)$(TargetName).hex":i

volto à mesma situação do início.
Pensei que poderia ser problemas na placa, mas na IDE do Arduino, grava normalmente. Mas gostaria de utilizar a placa sem as bibliotecas dessa IDE.

Não faço ideia do que pode ser =(
Obrigado.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Renato, você já viu a saída na IDE do Arduino? Olha como fica a saída para a Leonardo:

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

A configuração para a Arduino Micro deve ser similar. Consegue me mandar o print da saída do avrdude na IDE do Arduino?

Carlos Rodrigues
Visitante

Como posso abrir uma janela dentro do programa de serial monitor? Tem como fazer isso?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Carlos, Não entendi muito bem sua pergunta. Mas acredito que você queira usar um terminal serial dentro da IDE. Tente esse: https://gallery.atmel.com/Products/Details/21a11c8b-2d62-4ad2-b9da-7e665cf15861

Paulo Bueno Júnior
Visitante
Paulo Bueno Júnior

Fabio, ótimo post.
por favor, tentei alterar a configuração do avrdude descrito no procedimento para usar o arduino mega, torcando o processador e a com, porem recebo a seguinte mensagem:
avrdude.exe: stk500_getsync(): not in sync: resp=0x00

avrdude.exe done. Thank you.

e não carrega o programa, estranhei que em nenhum ponto coloquei o stk500

zezao
Visitante
zezao

Fábio, usando o Atmel Studio eu teria alguma alternativa para o Serial Monitor da IDE do Arduino?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá, você pode usar terminais como o putty, realterm, tera term, entre outros.

zezao
Visitante
zezao

Fábio, dessa maneira eu consigo utilizar o microcontrolador da forma "pura" ou ele precisaria do bootloader do Arduino?
Digo, utilizar a placa apenas para fazer o upload do código ao microcontrolador e para facilitar a prototipagem.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá, dessa forma você consegue programar sem as camadas do Arduino. Você pode usar as funções da ARV LIBC: http://www.nongnu.org/avr-libc/ e a liguagem C com acesso ao baixo nível do microcontrolador. Porém é interessante manter o bootloader do Arduino para facilitar o upload do código sem a necessidade de uma ferramenta externa.

Ai a vantagem da placa e bootloder do arduino que facilitam o upload e prototipação. Essa é uma forma excelente para aprender microcontroladores e fazer aplicações. Vale muito a pena estudar assim. Qualquer dúvida entre em contato. abraços