Posts Tagged "avr"

Combinando o Arduino com o AVR Studio 5

avr_logoQuase sempre que faço algo com a IDE do Arduino fico com saudades do auto completar ou algum recurso mais aprimorado de verificação de mapa de memória. Quando se trabalha com códigos pequenos até que vai, mas ao utilizar os códigos muito extensos fica meio cansativo ter que lembrar e copiar cada uma das palavras reservadas do sistema. Também por causa de meu aluno José Carlos, que queria utilizar o AVR para seus experimentos.

Como missão dada é missão cumprida fui em frente. Por isso depois de fazer umas “googadas” por aí descobri um site bem legal, disponível nesse link. Tem alguns tutoriais bem interessantes sobre microcontroladores e IDE´s. E decidi seguir um dos tutoriais de integração do AVR Studio 6 – ferramenta bem legal da atmel que é bem semelhante ao Visual Studio da Microsoft e com alguns recursos de desenvolvimento bem legais (se bem para mim o que valeu mais é não ter mais aquela tela de terminal feia de erro do Arduino GUI). Ele pode ser baixado diretamente nesse link, que após um breve cadastro você está apto a utilizar o software. Também no site vocês vão encontrar uns video aulas bem interessantes nesse aqui http://www.atmel.com/Microsite/atmel_studio6/videos.aspx que de certa forma ajuda a se familiarizar com o ambiente.

Logo de cara tive um problema. A versão do AVR Studio que tenho na minha máquina é a 5, mas lendo o tutorial não muda muita coisa da versão 6 para a anterior. Na verdade não muda nada. Porém na outra máquina que tenho em casa a versão da AVR Studio é a 4. E por isso muita coisa mudou… uma atualização vai bem. Lembrando que estou utilizado o SO Windows 7 – 64 bits, porém creio que funcionará bem no Linux. Ainda não testei mas quem testar me manda um feedback para saber se funcionou. E estou usando uma Arduino MEGA 2560P.

Depois de baixar o AVR Studio, aconselho atualizar o software do Arduino no site:

http://arduino.cc/en/Main/Software

Até o fechamento deste post, verifiquei que já tem a versão 1.0.3 do software da Arduino, porém o utilizado na minha máquina é a versão 1.0.2. A versão é muito importante para utilizar a IDE mais adiante. De certa forma versões anteriores podem ser utilizadas em softwares mais atualizados, mas é bom manter a compatibilidade.

Ao baixar o software da Arduino é interessante deixá-lo na raiz do SO. Renomeie a pasta para “Arduino” então a pastinha irá ficar como a seguir:

 

arduino1

 

 

1º passo – Agora é após baixar o AVR Studio. Execute pela primeira vez e escolha a opção “Tools -> Extension Manager…” Na tela que irá aparecer escolha “Online Galery” e mande instalar o Terminal Windows, como na imagem a seguir:

 

arduino2


 

Durante a instalação pode aparecer alguns erros dizendo que o usuário não tem permissão… não foi possível instalar… etc…. para resolver, feche o AVR Studio e abra novamente o programa só que dessa vez mande executar como administrador e repita o passo anterior.

Agora vamos configurar o ambiente:

2º Passo – Para permitir que o AVR copie a imagem .hex para a placa escolha o menu “Tools -> External tools…” A tela que irá aparecer pede para configurar a ferramenta externa coloque:

Title: Arduino UP

Command: C:\Arduino\hardware\tools\avr\bin\avrdude.exe

Arguments: -CC:\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega2560 -cwiring -P\\.\COM2 -b115200 -D -V -Uflash:w:”$(ProjectDir)Debug\$(ItemFileName).hex”:i

Marque a opção “Use Output window

Lembrando que essas opções são para a Arduino Mega. Caso queira saber a versão da sua arduino, aconselho verificar a placa impressa no chip conforme a figura abaixo:

 

 

arduino3


 

Notem que a área de azul tem a versão do chip e a frequencia logo abaixo. Nesse caso o chip é um ATMEGA2560 e a frequência 16MHz.

Caso queira saber o que escrever na tela uma dica bem simples é abrir a IDE original da Arduino e escolher “Arquivo -> Preferências…” e na tela que aparecer deixe conforme a imagem abaixo:

 

arduino4


 

Deixem marcada apenas a opção “carregar”, a de compilação vamos utilizar só mais adiante.

Depois escolha as opções “Arquivo –> Exemplos –> 01.Basics –> Blink“. Tenha certeza que sua placa esteja conectada no computador e as configurações de Placa e Porta Serial estejam corretamente ligadas com a Arduino.

Mande Carregar o projeto na placa. Suba a tela de status e observe as primeiras linhas de carregamento, conforme a imagem abaixo:

 

arduino5


 

As primeiras linhas em branco dizem respeitos aos comandos que devem ser digitados no ambiente do AVR Studio. É só digitar no local informado anteriormente no passo 1 e a única alteração pertinente é ao invés de colocar o caminho do .hex conforme a tela da arduino coloque logo depois do w: a seguinte informação: “$(ProjectDir)Debug\$(ItemFileName).hex”

Não esqueça das aspas. Não feche a IDE da Arduino ainda. Vamos utilizar a mesma no passo seguinte novamente. Feito isso o próximo passo é configurar o ambiente para utilizar a bibliotecas da Arduino.

3º Passo – Dentro da pasta do usuário, no explorer, geralmente o AVR studio cria uma pasta, como: C:\Users\<user>\Documents\AVRStudio 5.1. Dentro dela crie uma pasta chamada ArduinoAVR. Com isso a estrutura no explorer vai ficar: C:\Users\<user>\Documents\AVRStudio 5.1\ArduinoAVR. Neste local que irão ficar todas as referências da IDE Arduino, agora é copiar as bibliotecas para esta pasta. Para saber isso vamos refazer algo bem semelhante ao que fizemos no passo 2. Abra a IDE da Arduino e abra as Preferências. Agora ao invés de marcar Carregar, marque Compilação, conforme imagem abaixo:

 

arduino6


 

Isso é importante pois irá mostrar o caminho no computador das bibliotecas. Mande verificar o mesmo código Blink utilizado no passo 2 e vejas as linhas da tela de status, conforme imagem abaixo:

 

arduino7


 

Notem que essa pasta contem o core da Arduino já configurada para a sua máquina! A uns tempos atrás eu fiz um tutorial de Arduino com Eclipse e tive de gerar esta biblioteca na “mão” para depois utilizá-la. Copiem esse caminho, abra no explorer e copie a biblioteca que tem o nome “core.a” para pasta ArduinoAVR com o nome de “libcore.a“. Isso por causa da IDE que retira o nome lib e a extensão do arquivo em suas compilações.

Agora abra no explorer também a pasta de bibliotecas da Arduino. O caminho é C:\Arduino\hardware\arduino\cores\arduino . Copie todos os arquivos com extensão .h para a pasta ArduinoAVR. Também aproveite e copie o arquivo de pinagem (pins_arduino.h) da sua arduino para a mesma pasta. O caminho C:\Arduino\hardware\arduino\variants . Dentro desta pasta possui várias outras pastas, coloque a pinagem de acordo com sua controladora. Como no meu caso é a ATMEGA, copiei a pinagem da pasta “mega“, se fosse uma Arduino UNO, a pasta seria a “standard“. Copiada as bibliotecas principais, copie agora as secundárias no caminho C:\Arduino\libraries. Pode copiar todas as pastas para a pasta ArduinoAVR. Depois esta pasta irá ficar conforme a imagem abaixo:

 

arduino8


 

Pronto! O próximo passo é criar o projeto.

4º Passo – Abra o AVR Studio 5. Escolha “File –> New –> Project…” Escolha “AVRGCC C++ Executable Project“. O nome coloque qualquer um. No meu caso coloquei TesteArduino. Clique em OK. Na tela da solução, aparece um código que é o padrão do AVR. Pode apagar o mesmo, pois não iremos utilizar. Agora aperte ALT+F7, ou escolha “Project –> Properties…“. Na tela que segue escolha:

Toolchain –> AVR/GNU C Compiler –> Directories. Inclua o caminho da biblioteca C:\Users\<user>\Documents\AVRStudio 5.1\ArduinoAVR e também marque a opção “Relative path

Toolchain –> AVR/GNU C Compiler –> Optimization. Escolha em Optimization Level (Optimization for Size). Marque as 3 primeiras opções (Prepare functions for garbage collection, Pack Structure members, Allocate only as many bytes…) e desmarque a última (Use rjmp/rcall…).

Faça a mesma coisa para a opção Toolchain –> AVR/GNU C ++ Compiler, os passos são os mesmos do anterior. O mesmo ocorre na opção Toolchain –> AVR/GNU C ++ Linker. Inclua em “Libraries” logo abaixo da biblioteca “m” a “libcore”, sem a extensão. e em “Library search path” o caminho C:\Users\<user>\Documents\AVRStudio 5.1\ArduinoAVR e marque a opção “Relative path” e em Toolchain –> AVR/GNU C ++ Linker –> Optimization só deixe marcada a opção “Garbage collect unused sections“. Pronto. Agora salve as alterações. Lembrando que nos caminhos digitados nesse passo onde tem a opção <user> coloque o nome do seu usuário do computador. No meu caso ficaria C:\Users\anderson\… Altere conforme o seu computador.

5º Passo – Digite o seguinte código:

*
 * TesteArduino.cpp
 *
 * Created: 26/12/2012 13:34:08
 *  Author: anderson
 */ 

#define F_CPU 16000000
#define ARDUINO 102
#include "Arduino.h"

int Led = 13;

void setup(){
	pinMode(Led, OUTPUT);
	Serial.begin(9600);
}
void loop(){
	digitalWrite(Led, HIGH);
	Serial.println("LIGADO");
	delay(1000);
	digitalWrite(Led, LOW);
	Serial.println("APAGADO");
	delay(1000);
}

Salve o arquivo. Lembrando que em todo projeto que fizer deve incluir as seguintes linhas:

#define F_CPU 16000000
#define ARDUINO 102
#include "Arduino.h"

A opção F_CPU deve ser de acordo com sua placa, se é 4, 6, 8, 16, etc… A linha do #define ARDUINO 102, diz respeito a versão da arduino baixada. Como anteriormente disse que baixei a versão 1.02, então essa opção deve ser 102, se for a versão 1.03, coloque 103 e assim por diante.  Agora está pronto! Salve o projeto e mande compilar. Aperte F7 ou em “Build –> Build Solution“. Se tudo ocorrer sem erros, vai aparecer a mensagem de 1 solução compilada com sucesso. Depois escolha a opção “Tools” e logo acima da opção External Tools… terá a opção “Arduino UP“. Clique nela e aguarde a mensagem avrdude.exe  done.  Thank you. Pronto! Você verá o blink funcionando na sua Arduino e terá um ambiente de testes extremamente completo (auto completar, debug, terminal, biblioteca de processadores, etc…). Caso queira utilizar um Terminal Serial escolha a opção “View –> Terminal Window” Escolha a porta que está conectada a Arduino e Aperte o botão “Connect“, que está logo ao lado da porta. Qualquer dúvida mande um comentário ou uma mail. Os arquivos utilizados nesse tutorial estão logo abaixo:

ArduinoAVR

ModeloEclipse