PIC (linha USB) vs AVR (Arduino)


#1

Qual a melhor plataforma de desenvolvimento tanto para eletrônica quando para a robótica? Tenho visto que o fazedores tem se focado bastante no arduino, até entendo esta posição, pois a atmel popularizou bastante sua plataforma, porém penso que uma coisa que já vem tudo montado e usa uma linguagem de programação tão específica, não contribui tanto para o desenvolvimento do aprendizado daqueles que querem produzir suas próprias ferramentas e plataformas. Penso em utilizar microcontroladores Avr no futuro, mas por hora, os microcontroladores pic me parecem mais interessantes, por serem mais fáceis de encontrar e de eu poder montar tudo, desde o gravador do mcu, até a placa de circuito deste, além dos códigos de bootloader, que são bastante simples de entender e de projetar o seu próprio. Além de poder ser aplicado Linguagem C para a programação, fazendo-o compatível com o que se aprende nos cursos tecnológicos. Enquanto que o arduino foge muito, indo mais para uma linguagem de algorítimo, parecida com portugol. Bem, posso estar errado também, pois não tive contato direto com o arduino. Seria de grande ajuda, e muito bem vinda, qualquer complementação ao meu conhecimento.
Não quero levantar nenhuma briga boba de fanboys, somente uma discussão saudável e madura, para complementar o conhecimento. Fiquem à vontade para comentar, de forma respeitosa e contrutiva, por favor.


PIC ou Atmega328
#2

Olá @Jack_Kun, na realidade não temos nos especializado em Arduino, mas acabamos falando mais deles. Talvez porque eu mesmo conheça mais de Arduino do que de outras plataformas. Mas acho PIC bastante interessante. Se você tiver boas dicas sobre ele pode mandar que tentaremos publicar!


#3

Claro, mando sim, depois que fizer umas práticas com minha placa embarcada, ainda estou tentando encontrar um bom bootloader que funcione com o windows 8.1.


#4

@Jack_Kun eu tenho um professor de eletrônica que defende o PIC até a morte, ele fala que Arduino é para preguiçosos, quando iniciei com microcontroladores tive experiência com PIC, realmente vc aprende a fundo o que é um microcontrolador quando se trabalha com a familia Microchip, pois vc trabalha com seus portos, registradores etc,e entende de fato o PIC, mas quando surgiu o Arduino eu percebi que em comparação com o PIC, temos uma diversidade maior de informações, temos inúmeros projetos a disposição, a diversidade do Arduino é impressionante, e isso me chamou a atenção, num mundo onde tempo é crucial, o Arduino mostrou-se ser uma plataforma ágil, onde sem muita complicação encontramos materiais, projetos e podemos compartilhar informações com mais facilidade e o sucesso é tão grande que praticamente qualquer pessoa com um nível intelectual bem desenvolvido consegue utilizar o Arduino sem grandes dificuldades e a plataforma está ampliando cada vez mais, hoje temos o Raspberry PI, o Intel Galileo, BeagleboneBlack dentre outras plataformas que surgiram baseadas em Arduino, eu acredito que se a fabricante do PIC a Microchip não se adentrar a esses estilos de plataformas talvez há um futuro próximo o PIC será lembrado apenas como o avó dessa atual geração. (OBS. Como você disse em seu post, a Atmel não popularizou o Arduino, e sim quem popularizou foi a comunidade Arduino, antes de lançarem o Arduino, a Atmel era apenas mais um microcontrolador complicado de se trabalhar). Forte abraço amigão, e se tiver algum material, ou projeto ou tutoriais com PIC crie um post, podemos até em pensar em alguns projetos de, como fazer no Arduino e de como fazer no PIC o mesmo projeto, acredito que seja uma ótima ideia para manter o conhecimento em PIC na atividade. Valeu.


#5

A melhor plataforma é aquela que você se identifica e sabe utilizar, se você experimentou uma placa de desenvolvimento baseada em PIC, entendeu, gostou e foi em frente, essa é a plataforma que você deve escolher para o seu projeto, se por outro lado usou uma baseada em AVR (no qual se inclui Arduino), entendeu, gostou e foi em frente, então esta será uma plataforma boa para evoluir suas idéias. Se testou os dois, melhor ainda, terá uma boa base para decidir por si mesmo o que deve usar.

Eu vejo as pessoas falarem de Arduino como se este fosse o microcontrolador e não é, nem de perto, verdade. Arduino é todo o conceito por trás de uma plataforma cujo objetivo é facilitar o aprendizado de eletrônica/programação para microcontroladores, isso inclui placas de desenvolvimento (a mais conhecida e difundida é a UNO, que possui um microcontrolador da Atmel ATMega328), uma DSL (Domain Specific Language) e uma IDE.

A linguagem de Arduino é uma DSL baseada em C e na AVR Libc e você não precisa programar diretamente nela, pois ela abstrai um sem número de conceitos deveras importantes para o aprendizado de microcontroladores, isso inclui os registradores, incluindo os registradores de portas, no Arduino se trabalha com pinos individuais e já vi muitos programas péssimos por causa disso, mas se você quer trabalhar com as portas diretamente, Arduino não impede você… Aliás, se quiser programar sua placa UNO até com assembly você pode, afinal, é para isso que a pinagem do ISP está exposta.

Eu tenho minhas críticas em relação ao Arduino, isso inclui o fato da IDE do projeto ser a pior que eu já vi em minha vida, a DSL abstrair conceitos fundamentais e Arduino ter se tornado extremamente comercial, criando hardware no qual o seu software ainda não suporta, por exemplo, o Due, que até hoje o software não está pronto para produção e ainda assim, eles querem enfiar goela abaixo outra placa 32-bit, no caso a Zero, sem ter um software decente.

Mas é fácil aprender a trabalhar com Arduino, afinal, qual o hobbysta aqui não começou trabalhando com declaração de pinos individuais? Justamente porque é mais fácil entender um pino que faz algo do que entender um registrador de porta e como alcançar um bit específico através dele…


#6

Ótimas informações. Agora, programar em assembly, eu num encaro não viu. Mover bit a bit, registro a registro dá uma trabalheira e o código fica imenso. Mas sua dica foi muito boa, eu comecei com pic e gostei, principalmente por causa da família 18f4550, por ter comunicação usb nativa. Se eu sentir necessidade, mais a frente, experimento o AVR.


#7

Há MCU’s da Atmel que tem core USB por padrão é o caso do ATMega32U4, utilizado no Arduino Leonardo mas eu prefiro trabalhar com MCU’s com mais portas, como o AT90USB1286, por isso que eu uso bem mais Teensy ++ 2 que Arduino para desenvolver idéias.

Edição: Acho que essa postagem se enquadra atualmente em “Arduino” e não em “Robótica”.


#8

Caros
Acho que o principal é não assumir bandeiras quase religiosas do tipo PIC vs. Arduino. Até porque Arduino é uma plataforma feita com um processador da Atmel. Então se ainda quisessemos assumir bandeiras seria Atmel vs. Microchip.
O Arduino é excelente para prototipagem rápida, mas eu mesmo ja fiz alguns experimentos programando o Atmel do Arduino diretamente em C com o excelente Atmel Studio . O desempenho do firmware é bem melhor e o espaço ocupado de memória menor.
Fico preocupado quando vejo pessoas considerando o Arduino para projetos comerciais. Primeiro o Arduino é regido por uma licença de código aberto. Segundo e mais importante criar um sistema embarcado que envolva aplicação critica juntando bibliotecas e um hardware não testado e otimizado pode ser muito perigoso para a segurança das pessoas.
Eu me divirto programando ARM, PIC e Atmel , inclusive Arduino. No momento estou brincando com um PIC18F14K50 que na Farnell Brasil custa 10 reais a versão SMD. Pra funcionar só precisa de um cristal e claro a fonte. Com comunicação USB e bootloader, tenho uma placa de desenvolvimento por menos de vinte reais.


#9

Bom, comecei meus estudos com programação de microcontroladores a pouco tempo, e pelo que estudei entre as duas tecnologias microchip e atmel é a seguinte: O pic era mais adequado para projetos de poucas complexibilidade, mas hoje em dia ele já tem um bom desempenho em projetos grandes. Os micro controladores da atmel, os avrs, alem de ter um bom desempenho, pois tem uma arquitetura RISC, são excelentes tanto para pequenos projetos quanto para projetos mais complexos. Muita gente confundo o Arduino como microcontrolador da Atmel, na verdade o arduino é uma plataforma patrocinada pela Atmel, o objetivo do arduino é familiarizar o jovem desenvoldor com o mundo da programação de microcontroladores e seu sketcher é limitado em relação a flexibilidade de desenvolvimento de código da picpro e atmel studio. Eu gosto do pic, mas para desenvolver um projeto proprio, eu prefiro usar o AVR. Mas pic ou avr, isso vai de cada um. O custo, a facilidade de compra e etc… E tambem vai depender muito do que vc quer desenvolver, mas hoje em dia PIC e AVR são dois concorrentes de peso. Quando for comparar PIC com AVR não ponha arduino no meio, pois o objetivo do arduino não é de competir no mercado e sim de orientar os projetistas no ramo da programação de microcontroladores.