Logo Hardware.com.br
felipexp8
felipexp8 Super Participante Registrado
555 Mensagens 23 Curtidas

Programar Arduino de outro jeito

#1 Por felipexp8 08/04/2014 - 11:58
Comprei o kit Arduino Nano para utilizar no meu TCC, ele atende todos os requisitos e funciona muito bem, contudo na minha faculdade o Arduino não é bem visto por alguns professores.

Este Kit tem um microcontrolador Atmel Atmega328, eu pretendo dispensar a maravilhosa IDE do Arduino e usar o AVR tools e outras ferramentas da Atmel para programar na Unha (nível mais baixo, tudo em C ou assembly com os ponteiros para registradores, bitmask e outras coisas deste tipo). só pra dizer que não usei Arduino e só aproveitei a placa dele.

Será que é possível programar um microcontrolador do Kit Arduino sem utilizar a IDE do Arduino?
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#3 Por Fergo
08/04/2014 - 14:14
É perfeitamente possível usar o AVR-GCC:
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC

Porém meio que quebra a utilidade do Arduino. Se for partir para o AVR-GCC é melhor simplesmente comprar o AtMega328P standalone e usar um gravador pra AVR. No tutorial que eu mandei ele ainda usa o Arduino e o seu bootloader, o que permite gravar o software via USB, sem precisa de um gravador específico.
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
ripongao
ripongao Veterano Registrado
755 Mensagens 94 Curtidas
#4 Por ripongao
08/04/2014 - 15:10
sempre ou até então, tudo que for feito em assembly para qualquer coisa poderá ser feito usando-se um editor de textos bem vagabundo, uma tradução dos cabeçalhos disponíveis (caso existam, por exemplo .h disponíveis ou tradução das portas, constantes, macros para chavear modos de operação) para o assembler em questão (include algo.inc) e o processo de compilar (montar e vincular - assemble e link) feito por linha de comandos.
Muito radical? então outra forma é sair catando valores hexadecimais e ir montando o quebra-cabeça,digo, ignorando o uso do montador e vinculador, inicialmente colocando endereços fictícios (label - rótulos) para após pronto recalculá-los e ao mesmo tempo estruturando a saída para o arquivo compatível necessário.

Só fui saber o que era IDE depois de muito tempo programando usando o edit do ms-dos, editores hexadecimais e montadores na unha, fiquei maravilhado na hora ao ver o uso de uma IDE, agregava quase tudo numa única ferramenta, muito massa, um botão é é montado o projeto, outro e é vinculado, outro e é feito o backup com diferenças entre versões, outro e é compilado, executado e invocado o depurador, ao escrevermos o começo das funções o recurso autocomplete aparece nos fornecendo uma ajudinha nos parâmetros, cores diferentes para diferenciar instruções de funções/parâmetros, aperto um botão e um editor de recursos (ambientes visuais) nos aparece para desenharmos quadrados (controles) sem precisar calcular nada sobre a tela, quanta facilidade, mas na hora dos problemas eu sabia me virar tranquilamente pois sabia que era só salvar o texto em questão e montar; enquanto outros cruzavam os braços e procuravam por bugs nas IDE's enquanto as vezes o bug estava no montador ou uma simples variável do ambiente que não estava setada, caminho não encontrado,... .

o senhor é dos meus, conhecer as coisas na unha. Infelizmente não brinquei com atmel, mas suponho que seria desse jeito pois com z80 foi assim, x86 foi assim, usando emulador arm e pic foi assim.
Desliguei-me do fórum. Conta canelada.
felipexp8
felipexp8 Super Participante Registrado
555 Mensagens 23 Curtidas
#5 Por felipexp8
08/04/2014 - 17:29
Fergo disse:
É perfeitamente possível usar o AVR-GCC:
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC

Porém meio que quebra a utilidade do Arduino. Se for partir para o AVR-GCC é melhor simplesmente comprar o AtMega328P standalone e usar um gravador pra AVR. No tutorial que eu mandei ele ainda usa o Arduino e o seu bootloader, o que permite gravar o software via USB, sem precisa de um gravador específico.


Ok, deu certo, obrigado. rindo_ate_agora.png.

Utilizei o Atmel Studio 6.0 para gerar o .hex, ele já vem com o AVR-GCC e ainda tem a opção de programar direto em assembly.
Depois eu peguei o .hex e aproveitei o programa de command line AVRDude que tinha no kit do Arduino para enviar os bytes pela UART, até montei um arquivo .bat pra automatizar.

O Arduino Nano tem uma interface ISP para receber o novo programa na flash via UART, assim não precisa de gravador. Utilizar o AtMega328p standalone seria o mais ideal para um TCC de engenharia, porém terei que fazer um placa de circuito impresso e não poderei usar encaixe DIP no microcontrolador (a não ser que eu consiga um Atmel com menos pinos, 10 pinos GPIO já é o suficiente) por causa das especificações do meu TCC, o projeto é em miniatura para portar num pulseira.

Vou pesquisar... vou ver onde tem para comprar o uC Atmega e um gravador ou kit JTAG, porque lá na 24 de maio não vai ter estas coisas. Por enquanto, na fase de testes, farei na placa do Arduino, depois, o próximo passo: integrar no kit zigbee para fazer a comunicação sem fio.
Felipe
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#6 Por Fergo
08/04/2014 - 17:34
Vai na Pares (fica entre a 7 e a Visconde). Lá eles tem tem gravadores (pelo menos de PIC). Dependendo da sua habilidade de solda, não precisa de circuito impresso, pois bastam 2 capacitores e um cristal para deixar o "Arduino" funcionando apenas com o AtMega.
Por falar em miniatura, você consegue algumas boas funcionalidades do Arduino com um AtTiny, baixando o core certo.
http://code.google.com/p/arduino-tiny/
http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips

E pra programar um AtTiny, você pode usar o próprio Arduino:
http://www.instructables.com/id/Program-an-ATtiny-with-Arduino/?lang=pt
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
felipexp8
felipexp8 Super Participante Registrado
555 Mensagens 23 Curtidas
#7 Por felipexp8
08/04/2014 - 17:41
ripongao disse:
Muito radical? então outra forma é sair catando valores hexadecimais e ir montando o quebra-cabeça,digo, ignorando o uso do montador e vinculador, inicialmente colocando endereços fictícios (label - rótulos) para após pronto recalculá-los e ao mesmo tempo estruturando a saída para o arquivo compatível necessário. [...] o senhor é dos meus, conhecer as coisas na unha.




LOL, é assim mesmo, eletrônica na veia, eu já fiz isso usando 8051 em assembly, tinha que levar em consideração todo o mapeamento de memória, pra não gravar nada no lugar errado e perder o software monitor que usava pra depurar.

Já fiz até mais low-level ainda, num projeto de FPGA, fiz uma calculadora de operações básicas, daí queria automatizar com uma sequencia se operações para representar uma formula matemática, aí coloquei instruções em binário, representando os chaveamentos dos blocos de aritmética e barramentos, foi bom fazer um projeto insano assim porque revisei todos os conceitos de circuitos digitais e aprendi como uma FPGA funciona.
Felipe
felipexp8
felipexp8 Super Participante Registrado
555 Mensagens 23 Curtidas
#8 Por felipexp8
08/04/2014 - 17:51
Fergo disse:

Por falar em miniatura, você consegue algumas boas funcionalidades do Arduino com um AtTiny, baixando o core certo.

E pra programar um AtTiny, você pode usar o próprio Arduino:
http://www.instructables.com/id/Program-an-ATtiny-with-Arduino/?lang=pt


Bem pensado rindo_ate_agora.png. Assim vai facilitar muito. No meu caso, não preciso de muito processamento, basta 8bits, 8Mhz e mais menos 10 pinos GPIO. Assim fica fácil para ligar no outro bloco do meu projeto do kit zigbee.
Felipe
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal