Olá a todos.

Bem, o motivo de ter criado esse tópico é o meu interesse em aprender a programar para AVR usando linguagem C/C++ diretamente. Já "programo" para Arduino há algum tempo, também já programei PICs e já brinquei com FPGA e VHDL. O Arduino é uma excelente ferramenta para aprendizado e iniciação no mundo dos microcontroladores isso não nego, mas é fato que ele é limitado em alguns quesitos. Sim, Arduino não é mil maravilhas. É claro que programar diretamente em C/C++ tem-se um ganho de desempenho muito superior a programar usando as bibliotecas do Arduino, pois elas são programadas visando proporcionar facilidade para o usuário final, hobbistas e programadores, que muitas das vezes, tiveram o contato mínimo com eletrônica e conhecimentos básicos de hardware. Essa facilidade em programar é boa até certo ponto, já que se perde muito desempenho com ela. Além do mais, programar diretamente em C/C++ é mais "profissional" digamos, e se tem mais controle sobre o hardware. 

Já fiz muitas coisas com arduino. Coisas que levaram 5 minutos pela facilidade de programação. Há também muitos materiais disponíveis na internet. Eu mesmo tenho muitos livros e muitas páginas web salvas no meu navegador e quando se trata  de arduino, não tenho dificuldade em encontrar o que preciso ( por qualquer coisa que seja). Por isso, nunca precisei postar nada aqui no lab. Mas, chegou a um ponto em que eu já tinha feito vários projetos grandes, com muita facilidade, e me dei conta que não sei fazer operações bit a bit, como no PIC ou na FPGA. Ora, esse tipo de programação é muito útil, ganha-se um desempenho imenso com operações deste tipo. Tenho um belo exemplo de um Quick Sort otimizado com um simples algoritmo de XOR SWAP. Então, fui atrás de aprender AVR. A maioria dos tutoriais está em inglês, o que não chega a ser um problema pois estou acostumado a ver tópicos do instructables e em comunidades do Google+. Mas me dei conta que quando se trata de arduino, existem pilhas de tutoriais, entretanto, quando se trata de programar diretamente em C/C++, bem, daí a coisa é diferente. Então, este tópico, é uma maneira desesperada de freiar isto. Arduino é bom para iniciar, mas estamos criando uma geração de hobbistas que não sabem operações de baixo nível (e eu me incluo um pouco nisto), acesso direto a memória, ou algoritmos de ordenação e estruturas de dados. Uma geração que está acostumada a pegar códigos e exemplos na internet e montar em casa, e isso já foi diferente um dia. 

Eu tenho fugido um pouco das coisas muito praticas, por acreditar que no futuro existirão tantas ferramentas, frameworks, plataformas e coisas de "alto nível" (ou o que você quiser chamar) que as coisas simples estarão destinadas a uma pequena população de engenheiros e hobbistas que decidiram seguir outro rumo. Da mesma forma, creio que essa geração que escolheu o caminho mais difícil será recompensada um dia. É a velha história da lebre e da tartaruga, onde quem toma o caminho mais rápido, acaba perdendo a corrida. Portanto deixo aqui um pedido a você garagista, hobbista, programador...brasileiro. Siga o caminho mais difícil, o mais árduo, nem que isso lhe custe um pouco.

Tenho me dedicado a aprender a mexer com Linux. Desisti de qualquer software privado faz um bom tempo, hoje com exceção da BIOS do meu computador, flash (para assistir vídeos no youtube) e minha conta Google, não uso qualquer software privado, e estes que eu citei estão com os dias contados. Descobri que existem softwares como avr-gcc e avrdude, sendo o avr-gcc criado pela FSF (Free Software Fundation), o que torna as coisas ainda mais interessantes para mim e para você hobbista, uma vez que estou acostumado a compilar programas usando o gcc e o g++  (também da FSF).

Bem, criei um grupo AVR  que já foi aprovado pela moderação. O que eu tinha a dizer é isto. Gostaria muito que aparecessem os garagistas com conhecimento e/ou interesse nesta área para que pudéssemos ajudar uns aos outros (inclusive a mim). Deve ser duro para eles aturar constantes tópicos de arduino e ver uma geração de  "verdadeiros programadores" sumir no tempo.  Não tenho conhecimento na área de AVRs, mas possuo conhecimento em lógica de programação, estruturas de dados, orientação a objetos, linguagens C/C++ e Java, e uma pouca experiência em microcontroladores e eletrônica digital. Gostaria muito que esse tipo de discussão se tornasse frequente aqui no lab. Um dos meus objetivos é que as postagens sobre AVRs, PICs, FPGAs  se tornem mais frequentes que as de Arduino. Estou também disposto a ajudar com o conhecimento que tenho em outras áreas. 

Aguardo a opinião e a colaboração de todos.

Exibições: 5526

Responder esta

Respostas a este tópico

Caro 

Concordo em número gênero e grau com suas reflexões.

Já tinha me manisfestado em outros post´s demonstrando preocupação ao ver comentários no labdegaragem e em outros fóruns que inclusive propõe o desenvolvimento de produtos comerciais utilizando o Arduino. 

Acho importante alertar que o desenvolvimento de um produto robusto, otimizado em desempenho e recursos, consumo, demanda conhecer a arquitetura, técnicas de programação e etc

Importante ressaltar que a proposta da plataforma Arduino é prototipação rápida.

Combinar o hardware do Arduino com a programação em C, é uma excelente proposta. 

Para dar o pontapé inicial alguns links

http://labdegaragem.com/profiles/blogs/tutorial-arduino-atmel-studi...

http://canthack.org/2010/12/programming-the-arduino-in-pure-c/

http://www.jayconsystems.com/tutorial/atmerpt1/

Sou iniciante em eletrônica, no entanto já deu para notar que o caminho mais adequado a seguir seria programar para AVR diretamente em C.

Assim, sugiro aos futuros participantes que iniciem as discussões partindo do básico mesmo, caso contrário, nós leigos no assunto, seremos afugentados por falta de condições técnicas, coisa que não ocorre com os aficionados em Arduino, motivo de sua larga aceitação.

Mostrem-nos os softwares (aplicativos) e os hardwares a serem adquiridos e/ou baixados e mãos à obra!

Essa tecnologia é o que de melhor e mais avançado existe em automação, mas, nem por isso chega a ser proibitivo aos que não entendem do assunto desde que  tenham acesso a roteiros e tutoriais voltados ao auxilio dos menos favorecidos na consecução desse relevante objetivo.

Olá Mauricio.

Agradeço a sua contribuição.Bem o objetivo é começar do básico mesmo, com tira-dúvidas e tutoriais bem explicativos, que vão desde a instalação dos softwares necessários até exemplos de códigos e projetos, mas conto com a colaboração de todos do lab, inclusive de pessoas que façam perguntas e tirem suas dúvidas. Eu ainda sou um leigo no assunto, portanto, estou estudando algumas apostilas que tenho, minha intenção é compartilhar o que eu for aprendendo.

Já disponibilizei um pequeno material no grupo.

Olá marco.

Que bom que existam pessoas que pensem da mesma forma. Bem, para iniciar nessa jornada, comprei alguns microcontroladores da Atmel que já chegaram. Estou aguardando agora meus gravadores ISP.

Essa semana estava muito agitada por conta de trabalhos da faculdade, por isso nem respondi ao tópico, mas agora já estou de férias e quero dedicar meu tempo livre para trabalhar com os AVRs. Por enquanto, vou gravar os Atmegas usando o Arduino as ISP , porém estou tendo dificuldades com a IDE 1.0.0, então, me resta usar mesmo a IDE 0.22.

Em breve, colocarei meus experimentos, projetos e códigos no grupo.

Concordo com tudo que voce falou, mais parei de ler quando  voce falou que parou de usar tudo que é software "pago", lembre-se que alguem desenvolveu este software que voce usa, alguem quebrou a cabeca para fazer, por traz de um grande software tem sempre uma grande equipe e essas pessoas nao vivem de vento, elas estudaram e precisam ser recompensadas , assim como voce tem que ser recompensado quando fizer algo util a sociedade, eu uso linux a muito tempo, não é tudo que falam não, a nivel mundial ainda esta muito atraz do windows, os grandes softwares de grandes empresas que te dao garantia, atualizacoes,99% fazem para windows isso pq 95% dos usuarios de pc hj usa windows, o povo tem que parar de querer as coisas de graça e comecar a pagar por elas, dai o preço cai e o mundo fica justo.

Amigo, o motivo de ter falado que uso Software Livre é porque existem ferramentas livres para compilar e fazer upload dos códigos para AVRs, quis dar importância a este fato. Não tenho nada contra quem usa software privado, é uma questão de escolha, uma questão de liberdade. Diferente do que você pode ter entendido, Software Livre não está ligado a "liberdade de preço" mas sim a liberdade de estudar o código do software e entender como ele funciona, distribuir o software para quem você quiser, usar o software para o quê você quiser e alterar o software para suas necessidades. Isso não significa que o software é grátis. Há Softwares Livres que são pagos, mas obedecem essas quatro liberdades que citei, que são fundamentais para que você não fique refém de empresas, refém de sua espionagem, patentes e outros meios que usam para iludir o usuário e obter controle sobre ele. Além que tem-se um melhor controle sobre o seu hardware e software.

Vale ressaltar, que o Projeto Arduino é uma alternativa de Software Livre, visto que eles disponibilizam o código fonte e que o projeto segue as quatro liberdades. A IDE do Arduino é feita em Java que também é Livre, o Arduino usa o avrdude por debaixo dos panos e por aí vai...

Como diz Richard Stallman: "Entenda Software Livre como liberdade de expressão e não como cerveja grátis".

Mas bem, o objetivo desse tópico não é discutir sobre Software Livre e sim sobre AVR, portanto, você pode usar as ferramentas que citei, que são LIVRES, para rodar no seu Windows ou no seu Linux e se quiser pagar por isso a Free Software Fundation que fez estes softwares e que disponibiliza seu código fonte, aceita doações pelo PayPal. Se você quiser contribuir pode fazer isso aqui. A FSF e o Movimento do Software Livre agradecem!



Fiz meu pedido de inscrição ao Grupo. Enquanto aguardo gostaria de receber alguma orientação sobre os softwares a serem instalados bem como os Hardwares e CI's a serem adquiridos. Gostaria de iniciar em algo como controle de pequenos motores CC através de Ponte H. Quanto aos softwares, se forem "open source", melhor!

Amigo, já aprovei sua solicitação e gostaria de dizer que aqui todos nós somos aprendizes. Eu não manjo nada de AVR, mas estou muito empenhado em aprender a dominá-los e conto com a ajuda de todos vocês.

Sobre os softwares, bem, se você usa Windows pode usar o AVR Studio que a própria Atmel oferece. Há uma versão para Linux, porém ela está desatualizada (mas é boa de qualquer forma). Se você usa Linux, terá que compilar via avr-gcc e fazer upload via avrdude (se não quiser usar o Atmel desatualizado), encontrei alguma coisa no blog do DQ (que é membro aqui do Lab inclusive):

http://dqsoft.blogspot.com.br/2011/07/avrdude.html
http://dqsoft.blogspot.com.br/search?q=avr+gcc

Eu ainda não pesquisei, mas acho que existem IDEs gráficas para Linux para programar AVR, de qualquer forma o Atmel Studio (mesmo o antigo) parece ser bom.

Se você usa Linux pode baixar aqui:
http://www.atmel.com/tools/STUDIOARCHIVE.aspx?tab=overview
//O Software parou no tempo na versão 3.4.1, pode correr o mouse ou usar o Ctrl+F

Já o Atmel Studio para Windows está na versão 6:
http://www.atmel.com/tools/ATMELSTUDIO.aspx

Já na parte de Hardware é recomendado que você tenha um gravador ISP como esse da foto aqui:



Eles são chamados de USBasp também (só a título de servir para você fazer alguma pesquisa).

Se você for um pouco "Chuck Norris", "masoquista" e tiver bastante tempo e disposição =), pode fazer seus próprios gravadores:

http://diy4fun.blogspot.com.br/2009/01/simple-serial-programmer-for... Interface Serial
http://www.scienceprog.com/tag/avr-isp/ Várias interfaces.
http://avrprogrammers.com/avr_serial_port_programmers.php Várias interfaces e modelos
http://www.fischl.de/usbasp/ Várias interfaces e modelos + decorados com tinta plástica.
http://www.arnerobotics.com.br/eletronica/gravador_AVR.html Via porta paralela (Se você ainda tiver um dinossauro que use isto)
http://aplnx.blogspot.com.br/2012/04/gravador-avr-para-usb.html  USB (Aêêêê)

Eu não te recomendo fazer porque você vai cair em um Deadlock. Você vai precisar gravar um código no teu gravador e para você gravar esse código vai precisar de um gravador! Entendeu né? Além de sair um pouco caro e ter o trabalho de fazer a placa (Se você conseguir resolver o Deadlock) e mais um monte de chatices...

O LAB vende gravadores para AVR, disponível aqui e aqui. O primeiro usa uma interface de 6 pinos, você vai pode gravar o Arduino com ele também. Já o segundo é uma shield para arduino, você vai upar o sketch ArduinoISP e gravar o código por lá.

Eu comprei no exterior, paguei 2.66 dólares e estou esperando chegar. No Brasil é um pouco mais caro, mas você não corre o risco de pagar imposto. Por enquanto vou usando o ArduinoISP que é uma alternativa.

Além dos gravadores você vai precisar de microcontroladores, é claro. Recomendo o Atmega328 visto que ele é barato, fácil de encontrar, além de ser o mesmo usado no Arduino. Ah! as bibliotecas vão poder ser aproveitadas (talvez precisem de algumas modificações) e... estou usando vou usar eles também (Atmega328), então podemos trocar códigos.

Sobre seu projeto, podemos controlar motores sim, inclusive daria de pegar as bibliotecas do arduino, que são feitas em C, e tentar entender e adaptar o código. Tenho interesse em controlar motores também, quero fazer um seguidor de trilha usando AVR =).

Bem, é isto. Vou tentar fazer alguma coisa nesse domingo 7/7/2013 e assim que tiver resultados satisfatórios (isso é, funcionar) eu posto o resultado e o passo-a-passo de como fiz para funcionar lá no grupo. Já postei alguns materiais lá e depois vou pegar este meu post aqui e fazer um mini-tutorial lá, além de postar algumas apostilas de AVR que tenho salvas no meu computador.

E o que vocês acham deste hardware (USB SP300 Programmer for 51/AVR/ATMEL/MICROCHIP/SST/STC/PIC/AT 93/24/25/29/39/49):LINK REMOVIDO POR VIOLAÇÕES AOS TERMOS DE SERVIÇO Não é muito barato, mas (se servir) achei o preço até acessível.

----

Avelinux, esses "gravadores ISP" (USBasp) não necessitariam de um adaptador para ser ligado num Arduino UNO para funcionar?

Bem, Cardoso, se ele tiver 6 pinos não, pois o UNO tem um conector de 6 pinos, já esse daí da foto tem 10 pinos, mas 4 deles são GND, como você pode ver nas fotos:



Logo, bastaria fazer uma gambiarra adaptação, e puxar os fios. Ou comprar o conector acima. =)

(Eu comprei este gravador daí da foto no ebay, paguei 2.66 dólares =D )

caro colega

quais controladores o gravador USBASP ISP Programmer suporta?

Valeu e parabéns pela iniciativa

Olha, ele suporta vários microcontroladores. Você teria que ver como é feita a gravação do microcontrolador que você quer. Se ele tiver gravação via ISP há boas chances dele ser compatível. Uma outra dica é ver os pinos do microcontrolador e ver se ele os mesmos pinos que o ISP, neste caso pinos como: SCK, MOSI, MISO, RESET, além de GND e VCC. Nesta ilustração, há um exemplo disto com o nosso clássico Atmega328.

Os vendedores do ebay costumam colocar alguns dos microcontroladores compatíveis, embora a lista seja extensa, talvez o microcontrolador que você quer não esteja aí. Isso não significa que não é compatível.

Supported microcontrollers include:

  • Mega Series
  • ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
  • ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
  • ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
  • ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
  • ATmega3290 ATmega64 ATmega640 ATmega644 ATmega649
  • ATmega6490 ATmega8515 ATmega8535
  • Tiny Series
  • ATtiny12 ATtiny13 ATtiny15  ATtiny22 ATtiny24 ATtiny25 ATtiny26
  • ATtiny44 ATtiny45 ATtiny84 ATtiny85 ATtiny861 ATtiny2313
  • Classic Series
  • AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
  • AT90S4433 AT90S4434 AT90S8515 AT90S/LS8535

Além destes, o Atmega328 e/ou Atmega328p (e derivados) também são suportados, inclusive o Arduino propriamente dito, mediante uma pequena adaptação para gravadores que contém 10 pinos, como dito no post acima.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço