Preparando o Eclipse para microcontroladores AVR

Arduino ou Microcontroladores AVR
Este post faz parte da série Programação em C/C++ para Microcontroladores AVR. Leia também os outros posts da série:

Este é o primeiro artigo de uma série que tem como objetivo abordar de maneira prática a programação em C/C++ para Microcontroladores AVR. Nesses artigos utilizarei um Arduino Uno dotado de um ATMEGA328P-PU e um Shield EDU-IFSP para realizar certas atividades, onde apresentarei diversos periféricos do microcontrolador.

 

Neste artigo vamos preparar a IDE do Eclipse como plataforma de desenvolvimento para microcontroladores AVR, e as configurações vistas aqui serão utilizadas em artigos posteriores.

 

 

Plataforma Arduino e Linguagem Arduino

 

O Arduino é uma plataforma de código aberto baseada em um hardware e software, que tem como principal objetivo facilitar o seu uso. Ela diminui consideravelmente a curva de aprendizado, facilita prototipagem e reduz o tempo de desenvolvimento de um projeto. Mas o que devemos ter em mente é que não estamos programando um Arduino e sim um microcontrolador. E apesar da semelhança, não estamos programando em C, e sim na linguagem Arduino.

 

A simplicidade na programação Arduino é evidente quando comparada com o C, porém ela é aproximadamente 6 vezes maior, além de usar memória dinâmica sem nem mesmo declarar uma variável. Isso ocorre porque o ambiente de desenvolvimento integrado (IDE) traduz a programação Arduino (baseada em Wiring) para C/C++, gerando lixo no processo. Isso nos impede de criar códigos otimizados e de utilizar recursos que o hardware do microcontrolador pode fornecer, não tendo total controle sobre eles.

 

C/C++ para Microcontroladores AVR - Comparação entre linguagem C/C++ e linguagem Arduino
Figura 1 - Comparação entre linguagem C/C++ e linguagem Arduino.
C/C++ para Microcontroladores AVR - Compilação da programação C.
Figura 2 - Compilação da programação C.
C/C++ para Microcontroladores AVR - Compilação da programação Arduino
Figura 3 - Compilação da programação Arduino

 

No exemplo acima, a programação Arduino ficou com 928 bytes de programa e 9 bytes de memória dinâmica, já em C o programa ficou com apenas 178 bytes de programa e não ocupa nenhuma memória dinâmica. Essa comparação foi feita entre dois códigos equivalentes. Um deles é o exemplo oficial da Arduino®, o blink (porém sem comentários), que pode ser encontrado em: “Arquivos/Exemplos/Básico/Blink”. Foi utilizada a versão 1.8.5 da IDE Arduino®.

 

 

Ambiente de desenvolvimento

 

Apesar de ser desenvolvido em java, a IDE Arduino utiliza o avrdude e o avr-gcc para realizar a tradução do código C/C++ em linguagem de máquina, o que possibilita programarmos diretamente em C na IDE. Entretanto, podemos utilizar o AVR Studio ou até mesmo o Eclipse. Neste artigo irei utilizar o Eclipse Oxygen.

 

Primeiro temos que baixar e instalar o Eclipse. Aconselho utilizar a versão estável mais recente ou a mesma utilizada neste artigo. Eu estou utilizando a distribuição Linux Fedora workstation 27 com interface gnome shell, mas esse processo funciona com outras distribuições, como o Ubuntu.

 

Utilize o comando uname -a para saber a arquitetura do sistema ou busque por “detalhes” nas configurações, em seguida baixe o Eclipse IDE for C/C++ Developers de acordo com a arquitetura do seu computador:

 

Mova o arquivo tar.gz para o diretório /opt e use o comando tar -xvf para extrai-lo. O arquivo compactado não é mais necessário, então podemos removê-lo:

 

O próximo passo é adicionar o lançador do programa na interface gráfica, que consiste num arquivo de texto padronizado que se localiza em /usr/share/applications/. Vamos criá-lo utilizando o editor nano com o nome “eclipse.desktop”. Fique atento com as localizações e nomes dos arquivos relacionados ao atalho, caso tenha mudado o diretório do Eclipse mude também as linhas Exec e Icon de acordo com a localização escolhida. Verifique também se os nomes do ícone e o executável. Caso necessário, mude-os.

 

 

Agora só nos resta dar a permissão adequada ao arquivo executável do Eclipse. É muito importante nunca dar acesso total usando o chmod 777, isso deixa seu sistema vulnerável. O chmod +x é suficiente para isso, você pode executar o eclipse com o comando ./eclipse &:

 

Pesquise por Eclipse no lançador do seu Linux como mostra a figura 4. Se tudo estiver certo, irá aparecer com o ícone e nome de quando criamos o atalho e irá abrir normalmente.

 

Figura 4 - Eclipse instalado no gnome shell.

 

Temos que instalar os plugins adequados e alguns programas necessários para que o eclipse possa compilar e gravar os códigos que vamos fazer. No Eclipse, vá para o menu Help > Install New Software:

 

Figura 5 - Instalar novo Software.

 

No campo work with insira o link http://download.eclipse.org/tools/cdt/releases/galileo e clique em add. Selecione tudo e dê next até o final. Logo após a instalação, o Eclipse irá reiniciar.

 

C/C++ para Microcontroladores AVR - Instalar plugin CDT.
Figura 6 - Instalar plugin CDT.

 

Repita o processo para instalar o plugin do arv com o link http://avr-eclipse.sourceforge.net/updatesite/:

 

C/C++ para Microcontroladores AVR - Instalar plugin avr-eclipse.
Figura 7 - Instalar plugin avr-eclipse.

 

Após o Eclipse reiniciar novamente, vamos instalar os pacotes de compilação e gravação no Linux:

 

ou para distribuições baseadas em Debian:

 

Por fim temos que configurar o gravador e nesse ponto o processo será o mesmo para qualquer sistema operacional. Conforme as figuras 8 e 9, vá no menu Window/Preferences, procure por AVR/AVRDude e clique em add…

 

Figura 8 - Preferência da IDE.
Figura 9 - Preferência do gravador avr.

 

Insira as configurações adequadas nos campos Programmer Hardware com “Arduino” e em Override default baudrate com 115200. No campo Override default port insira /dev/ttyACM0, porém isso pode mudar de acordo com a distribuição ou sistema operacional. Por exemplo, no Windows seria COM5. Para descobrir o valor deste campo, basta ir na IDE do Arduino em ferramentas/portas.

 

C/C++ para Microcontroladores AVR - Configurando o gravador AVR.
Figura 10 - Configurando o gravador AVR.

 

Para criar o projeto vá na home da aba Welcome e clique em Create a new C++ project:

 

Home da página Welcome do eclipse.
Figura 11 - Home da página Welcome do eclipse.

 

Na Janela que abrir, selecione AVR-CGG Toolchain em AVR Cross Target Application:

 

Home da página Welcome do eclipse.
Figura 12 - Home da página Welcome do eclipse.

 

Não iremos utilizar a ferramenta de Debug, então mantenha selecionada apenas a opção Release:

 

Modo de compilação.
Figura 13 - Modo de compilação.

 

Selecionamos o microcontrolador utilizado e sua frequência de trabalho. Então coloque ATmega328P com 16000000, que corresponde às configurações do Arduino Uno:

 

MCU e frequência de trabalho.
Figura 14 - MCU e frequência de trabalho.

 

No diretório criado clique com o botão direito e vá em New Source File para criar o arquivo onde iremos programar:

 

Figura 15 - Criando arquivo.

 

No caso, em C++ é importante ter um arquivo chamado “main.cpp”, que é onde vamos colocar a função principal do programa:

 

Criando arquivo.
Figura 16 - Criando arquivo.

 

Agora com o botão direito vá em Properties para definir o gravador que vamos utilizar. Na Janela que abrir vá para AVR/AVRDude e no campo Programmer Configuration coloque as configurações que criamos anteriormente:

 

Figura 17 - Propriedades do projeto.
Figura 18 - Selecionar gravador.

 

Considerações Finais

 

O Eclipse é uma plataforma de código aberto que teve início pela IBM em 2001, no entanto ela se torna em uma fundação sem fins lucrativos (Eclipse Foundation) em 2004, onde atua na administração e organização da comunidade que mantém o projeto. O fato do Eclipse ter este formato o torna muito completo, com muitos recursos que podem ajudar na produtividade e desenvolvimento de diversos projetos. Como exemplo podemos programar microcontroladores, sendo que não estamos limitados apenas nos microcontroladores AVR.

 

Neste artigo preparamos nosso ambiente para trabalhar com o microcontrolador do Arduino Uno. No próximo artigo veremos como gravar o microcontrolador, além de algumas de suas características. Em outras palavras, vamos por a mão na massa.

 

 

Saiba mais

 

Arduino Uno

Shield EDU-IFSP do GERSE - IFSP Guarulhos

 

Referências

 

ARDUINO. What is Arduino?. Disponível em: <https://www.arduino.cc/en/Guide/Introduction>. Acesso em: 22 jan. 2017.

 

ATMEL. ATmega328/P: ATmega328/P, DATASHEET COMPLETE. 2016. Disponível em: <http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf>. Acesso em: 22 jan. 2017.

 

AVELINO. Como programar para AVRs em C/C++? E utilizando o Arduino? 2015. Disponível em: <http://pt.stackoverflow.com/questions/64731/como-programar-para-avrs-em-c-c-e-utilizando-o-arduino>. Acesso em: 21 jan. 2017.

 

LIMA, Chaerles Borges. Vilaça, Marco V. M. AVR e Arduino Técnicas de Projeto. 2º edição. Florianópolis 2012, edição dos Autores.

 

LIMA, Chaerles Borges. Programação C para Arduino. 2013. Disponível em: <http://pt.slideshare.net/rodrigorosa395/programao-em-c-para-arduino>. Acesso em: 21 jan. 2017.

 

LIMA, Charles Borges. OS PODEROSOS µCONTROLADORES AVR. 2009. Instituto Federal de Educação, Ciência e Tecnologia de Santa Catarina, Florianópolis. Disponível em: <http://digoreis.net/temp/Apostilas/APOSTILA_ATMEGA8.pdf>. Acesso em: 21 jan. 2017.

 

FLORENCIO, Heitor Medeiros. Sistemas Embarcados: Temporizadores e Contadores. Departamento de Engenharia de Computação e Automação, Universidade Federal do Rio Grande do Norte. Disponível em: <http://www.dca.ufrn.br/~heitorm/aulasDCA/dca0119/DCA0119-09-SistemasEmbarcados-Temp-Cont.pdf>. Acesso em: 21 jan. 2017.

 

SOARES, Márcio José. CONFIGURANDO CORRETAMENTE OS REGISTRADORES DOS MICROCONTROLADORES AVR – parte 1: USO DOS REGISTROS PORTX, DDRX E PINX. Disponível em:

<http://www.arnerobotics.com.br/eletronica/Configurando_corretamente_regsAVR_pt1.htm>. Acesso em: 21 jan. 2017.

 

SOUZA, Fábio. Arduino UNO. Disponível em: <https://www.embarcados.com.br/arduino-uno/>. Acesso em: 02 fev. 2017.

 

wikipédia a enciclopédia livre. Wiring. 2017. Disponível em: <https://pt.wikipedia.org/wiki/Wiring>. Acesso em: 11 mar. 2018.

 

SOUZA, Fábio. Shield EDU-IFSP do GERSE - IFSP Guarulhos. 2017. Disponível em: <https://www.embarcados.com.br/shield-edu-ifsp/>. Acesso em: 02 fev. 2017.

 

Tiago Gala. Eclipse em vez do AVRStudio em Linux ou como Programar o Arduino em C. Disponível em: <https://therandombit.wordpress.com/2011/10/26/eclipse-em-vez-do-avrstudio-em-linux/>. Acesso em: 16 mar. 2018.

 

Edivaldo Brito, Como Instalar a última versão do Eclipse no Linux manualmente. Diponivel em: <http://www.edivaldobrito.com.br/eclipse-no-linux/>. Acesso em: 16 mar. 2018.

 

Raimundo Alves Poelart. Criar atalhos (lançadores) para programas no Gnome. Diponivel em: <https://www.vivaolinux.com.br/dica/Criar-atalhos-(lancadores)-para-programas-no-Gnome> Acesso em: 16 fev.

 

Eclipse, About the Eclipse Foundation. Disponível em: <http://www.eclipse.org/org/>, Acesso em 5 de Abril.

Outros artigos da série

Lendo e Escrevendo nos pinos do Arduino com linguagem C/C++ >>
Este post faz da série Programação em C/C++ para Microcontroladores AVR. Leia também os outros posts da série:

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.

3
Deixe um comentário

avatar
 
2 Comment threads
1 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
FernandoPedro Igor BorçattiDevid Junior Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Fernando
Visitante
Fernando

Parabéns Pedro ! Muito bom !

Devid Junior
Membro
devidjr36

Como ativar o recurso de auto-completar do eclipse (como o existente no Atmel Studio) ?