Qual a diferença em trabalahar com Pic x Arduino ?

Olá Amigos,

 

Para refinar meus conhecimentos, gostaria de saber qual a diferença entre pic e arduino

 

quais suas principais diferença entre ambos no campo de execução de um projeto

 

obrigado

 

 

Exibições: 31682

Responder esta

Respostas a este tópico

PIC é um microcontrolador.

Arduino é uma placa de desenvolvimento que tem como microcontrolador principal a família Atmega/Mega da Atmel.

Ambos vc programa em C/C++, sendo que o compilador utilizado na plataforma do arduino é o AVR/GCC.

A diferença principal é que a IDE oficial do Arduino (podes usar outras) já inclui automaticamente no código fonte uma biblioteca de core que joga para alto nível instruções antes efetuadas em baixo nível, como a inicialização de dispositivos, registradores, manipulação de i/o, etc. Nem sempre de um modo mais eficiente, mas o interesse neste caso é facilitar a programação de sistemas embarcados por pessoas sem conhecimento em hardware. 

Mas vale lembrar que a "linguagem" do Arduino é na verdade uma biblioteca, o que te permite trabalhar em C/C++ direto (sem as funções da libcore) e até mesmo em ASM. Neste caso a vantagem esta na facilidade do upload dos códigos e facilidade na prototipação devido a existência do padrão de conexão dos shields.

No fim, ambos são muito similares, a escolha vai depender do seu projeto e relação as peculiaridades de cada uC.

Maravilha !!!! , obrigado pelo retorno, entao vc conhece algum video que mostra a montagem do pic

pois a vantagem que encontrei no arduino é a facilidade de material para trabalho

 

abs

 

Um dos poucos problemas do PIC é a falta de padronização.

E esse negocio PIC x AVR é tipo marca de carro. Tem muito gosto pessoal envolvido.

Existem modelos de plataformas de prototipação Arduino Compatible com base em PIC. Um dos que conheço é o ChipKit, que usa microcontroladores Max32, bem mais poderosos que os Atmegas. Aí é como falei, depende o projeto.

Comparando-se os microcontroladores, PIC x AVR (comparando por ex 8 bits e mesmo clock), os 2 utilizam a mesma arquitetura, com um conjunto de instruções reduzido ( RISC), já em termos de velocidade de processamento os AVR's dão um banho nos PIC's. Enquanto o PIC executa uma instrução a cada 4 ciclos de máquina, o AVR consegue executar em apenas 1, sendo 4x mais rápido. Se você precisa alta performance e baixo custo vá de AVR sem medo.

PS: Apenas a título de informação, os microcontroladores 8051 são CISC, tendo um set de instruções complexo. Tá mas e daí? O 8051 é bem mais lento, 3x mais que um PIC, por outro lado, os programas ficam menores no 8051 comparado a PIC's e AVR's sendo ele também mais robusto e ótimo para aplicações industriais por ser menos suscetível a ruídos e interferências.

Mas como disse o amigo Jonatas, tudo depende do projeto e suas necessidades.

Abraço.

Essa discussão de qual é o melhor vai mto longe... Ela depende de opinião. 2 pessoas podem estar discordando mas as 2 com toda a razão, pq depende do ponto de vista e depende da bagagem de cada uma. Eu prefiro trabalhar com o que conheço ! isso é fundamental. E consigo defender o que conheço ! 

Então gostaria de colocar minha opinião:

PIC: Otima opção ! Particularmente eu não me dei bem com ele pq meus projetos precisam de mais memória RAM. Acho que a transparencia deve ser fundamental a um fabricante e entendo que o fato de ter um conjunto reduzido de instruções pode facilitar a expansão de sua velocidade. Só isso. Não é uma vantagem. Para quem compra ter mais instruções e mais velocidade deveria ser otimo. Eles vendem como melhor por ter menos instruções.... Quando na verdade o que acontece é que as instruções PICs tem parametros qua às transformam em outras.

Por ex: Em 8051: INC A e INC (#MEM) são 2 instruções pq tem opcodes diferentes.

Já no PIC INCF, W  INCF, F fazem algo semelhante mas são apenas 1 instrução, com 1 parametro diferente.... Mas tem opcodes diferentes... 

Resumindo, a Microchip criou uma nova forma de contabilizar o numero de instruções para fazer seu produto ser "o mais RISC" do mercado, vendendo a ilusão de que os "mais RISCS" são melhores, em detrimento especialmente dos ARMs e AVRs, que também são RISCs, mas tem mais instruções.

Alem dessa nova forma de contar foram eliminadas instruções como a divisão e multiplicação. Que pra mim fazem falta...

Por outro lado a Microchip criou um numero absurdo de exemplos, ferramentas, compiladores, gravadores, placas, manuais, palestras, distribuidores, etc,etc, etc, focados nos iniciantes. Deixando o aprendizado de um microcontrolador mais fácil para os iniciantes.

Eles são os melhores se vc precisa de coisas simples, pouca memória. Robustez (eles não queimam !!!) e não faz questão de contas de divisão em assemblem (faz em C e esquece isso).

Os compiladores são gratuitos.

8051: Otima opção! Mas não se considerar os originais, de 1978... Esqueça ! A fiat fabricava FIAT 147 naquela época e nem por isso alguem te recomendaria comprar um 147 hoje. Mas não precisa deixar de comprar fiat pq fizeram aquilo... Hoje os 8051 evoluiram para modelos com muita velocidade, muita memória, interface USB, CAN, LIN, etc. Exatamente como todos os outros. E exatamente como todos os outros querem esconder.. sempre comparando suas criações ao 8051 original... Se for trabalhar como essa linha considere esses fabricantes: 

http://www.silabs.com/products/mcu/Pages/8-Bit-Microcontrollers.aspx <- Os microcontroladores de 8 bits mais rápidos do mundo, chegando a 100MIPs (equivale a um PIC a 400MHz). E são instruções "complexas".

http://www.nxp.com/products/microcontrollers/8_16_bit_legacy/lpc900/ <- São 8051 e 2 clocks/instrução tb cheios de hardware integrado e mta memoria.

O grande problema é que os 8051 não tem bons compiladores gratuitos. Eu uso o Keil, que a empresa comprou. Não é absurdamente caro como já foi, mas é caro... Tem versões demonstrativas e "alternativas" rolando por aih. Alem de outros compiladores full gratuítos mas com interface pobre...

As bibliotecas são muito profissionais, mas focadas por fabricantes. Não são muito ricas. Quem faz a biblioteca entende que quem vai programar se vira bem com perifericos como LCD e não iria mesmo fazer uma lib pra isso.

Mas algumas placas que o fabricante vendem podem ser o seu projeto pronto, como essas:

http://www.silabs.com/applications/automotive/pages/default.aspx

AVRs: Otima opção também!  É microcontrolador que une as vantagens de 2 mundos: Modelo RISC e ao mesmo tempo com instruções poderosas, boa quantidade de memória, etc.. São muitas instruções !!! Isso ajuda muito quando vc vai fazer um compilador C, embora dificulte a programação assembler. Ou seja: Programe em C e seja feliz !!!

Os AVRs tem ainda a vantagem de terem sido adotados pelo criador da plataforma Arduino. Então todas as bibliotecas podem ser aproveitadas para vc fazer placas com o AVR solto. Elas incluem funções que vão muito alem do proprio microcontrolador. Acionam os mais diversos periféricos como vc pode ver lá no arduino.cc . Essa vantagem é unica. Até é possivel achar um ou outro exemplo para acionamentos por aih mas com a documentação e fartura do Arduino não tem.

O compilador é gratuito (GCC) que pode ser encapsulado com uma telinha de poucos botões para facilitar o iniciante (interface do Arduino)

Eu profissionalmente venho usando a anos o 8051F340 e 8051F500, e estou satisfeito, mas estou migrando para novos projetos usando o AVR com as bibliotecas do Arduino focando em "qualidade de vida", já que acredito que conseguirei chegar mais longe no projeto em menos tempo. Provavelmente algumas bibliotecas ainda terão que ser reescritas, como a de acionamento de IO. Ela é demasiadamente burocratica...  Mas é isso aih. O Arduino é algo novo e já está assim. Imagine na versão 6.0...

Fora esses ainda tem os ARMs, que hoje equipam até os produtos da Apple. Mas vamos deixar eles para outro post... Só queria comentar que estão saindo versões do Arduino com processador ARM. Que serão um canhão !

Acho que é bem por ai a questão dos AVRs

Eu vim do Atmega16 (usado na cadeira de microcontroladores do meu curso) pro Atmega168p (Arduino). Ou seja, já estava em casa, por isso a migração foi automática... Na verdade eu não diria nem migração, pra mim tudo se resume num #include pra quem já mexia com AVR/GCC. PIC, para nós brasileiros sempre teve duas vantagens inter-relacionadas: disponibilidade e preço. Qualquer lojinha de eletrônica vende um PIC16F... da vida. Já pra comprar meus primeiros Atmega foi difícil, ainda mais numa época que e-commerce ainda era novidade. Projetos de programadores por porta paralela, RS232, USB, achava de tudo. Pra AVR a coisa era mais fechada. Mais "elitizada". Ou seja, inverso do que é hoje: AVR pra hobby/prototipação X PIC para aplicação comercial.

E tai o resultado: Uma geração de hobbistas que conhece muito de PIC a ponto de fazer aplicações comerciais com ele. E é o que ta acontecendo com o AVR na "pessoa" do Arduino hoje em dia, claro que, catalizado com a absurda diferença de acesso a informação (eu tenho 26 anos e ainda cheguei a consultar datasheet impresso - e vendido. Mas a gurizada mais nova nem de datasheet precisa, tem tudo pronto no tutorial). E vejo isso como uma tendencia pros ARMs da vida: friendlyArm, Raspberry Pi, ST, etc, etc...

Aí, o conhecimento é que vai separar os profissionais dos hobistas. pois como vc falou é canhão pra matar pardal (se aparecer um blink como exemplo para um processador de 1GHz, tem q surrar o programador).

Os bons desenvolvedores dão saber quando um Atmel Mega2560, um Atmega328p, um PIC16F, ou até mesmo o oldschool 8051 são mais eficazes e comercialmente viáveis.

Pra questão: Qual eu começo a estudar?

Repondo com uma pergunta: Queres pra hoje ou pra vida inteira?

Se é hoje, imediatista, vai na modinha. Só lembre que a modinha passa!

Se você quer ter algo que dure pra sempre, comece por uma base sólida, láaaa atrás estudando Arquitetura de Computadores e Linguagem de Máquina.

Olá,

Concordo com tudo o que foi postado pelo Jonatas e pelo Eduardo, e gostaria de enfatizar que além da boa base em programação, um conhecimento sólido de eletrônica também é fundamental, pois tem muitos que sabem programar mas quando partem para a montagem, ficam na dúvida sobre qual terminal é o anodo e qual é o catodo de um LED, ou se devem usar um resistor de pullup ou pulldown em uma entrada, ou como polarizar um transistor para usar com um relé.

Sem falar das dúvidas quando se refere à montagens definitivas, onde se deve levar em conta proteções contra surto, interferências eletromagnéticas, fontes de alimentação "decentes", layout de pci, etc.

Já cansei de ver "projetista" tentando economizar cortando capacitores de desacoplamento do circuito ou usando uma fonte de alimentação ruim, e depois ficar pedindo ajuda em foruns para o circuito que fica travando, ou resetando "sem mais nem menos", e no final ainda fica pondo a culpa na família do microcontrolador, dizendo que não confia em tal componente. Mas não admite que o projeto dele é uma droga. 

Hoje em dia as informações estão muito mais acessíveis do 20 anos atrás, não tem comparação. Mas as facilidades também tem um lado negativo, tem deixado muita gente preguiçosa.

Veja o caso do Arduino, que tem a vantagem de ter uma "curva de aprendizado" muito rápida, qualquer garoto pode ver umas aulas no youtube e colocar na net um webserver com a temperatura do seu quarto pro mundo todo ver.

Ok, maravilha, mas o garoto não pode ficar apenas no CTRL+C CTRL+V. É só fazer o vídeo e por no youtube e ficar tirando onda de galera, olha oque eu fiz! O negócio tá funcionando mas será que quem montou sabe como é que a coisa realmente funciona?

Será que essa geração vai conseguir transcender de um mero usuário de "library" , "examples", "applications notes" e outros enlatados para se tornar um programador que faz as suas próprias bibliotecas?

A galera do 8051 e do PIC (não vale o mikroC) que já usou um LCD 16x2 com certeza sabe mais (pelo menos um pouco) como é que se faz a inicialização e o acionamento do LCD,  mas e a turminha que só sabe colar um  #include library qualquer coisa? Fica perdida quando vê uns "quadradinhos" na tela do display... o pior é que alguns não sabem nem fazer uma pesquisa no GOOGLE.

A certeza é que só quem se dedica ao estudo dos fundamentos, consegue transpor os modismos e sobreviver neste nosso mundo em constante mudança.

Fica o alerta para quem quiser entender.

 

Abraços.

 

 

 

 

Maravilha, realmente é um topico muito interressante em discusão,

trabalho com atmega 328 (arduino) e uso a biblioteca do arduino para desenvolver os projetos,

é fantastico e facil para desenvolver projetos

 

o que senti de facilidade é a riquesa de detalhes em tutoriais e as bibliotecas de programação que ajudam bastante( so que sem Hardware montado corretamente nada adianta as bibliotecas),

 

fiz essa pergunta pois fiz um seminario da atmel e vi uma grande possibilidade em chip que esta a  no mercado que é o cortex , que consegue rodar linux e android,

 

ai como os amigos relataram, o arduino é praticamente pronto, entao para aumentar meus conhecimentos gostaria de saber, por onde começo a estudar para montar uma placa , que consiga rodar um sistema operacional o mais simples que seja, mais independente.

salve aos amigos e a este forum que possuem pessoas tão proativas para ajudar em nossos estudos, gerando uma grande comunidade

abs

 

Começa estudando embed. Na loja do LAB tem hardwares embed, com processador ARM.

O Cortex é um ARM.

Tudo vai depender de seu projeto.

Quando compramos um PC para usar sempre pensamos no futuro. Algo como superdimensionar ao máximo dentro das possibilidades financeiras para ficar o maior tempo possivel com ele.

Já com microcontrolador o sentimento é oposto. Vc deve tentar usar o menor dispositivo que atende as suas necessidades. Quando esse produto for para o mercado e demandar R$1,00 por unidade a mais sem necessidade e estiver sendo fabricado aos milhares isso vai pesar...

Alem de outros topicos como consumo e tamanho. Quando mais potente costuma consumir mais e tal.

Se vc realmente precisa de um sistema operacional é melhor começar com placas montadas como o colega sugeriu, raspbery, embed, gumstix, etc.

A galerinha que não sabe nem usar o Google é a pior. O cúmulo da preguiça.

Pra esses ja tenho aqui na minha barra de favoritos: http://lmgtfy.com/

É como eu falo: Arduino amplificou o "compilador", que é o cara que não sabe programar, só Ctrl+c, Ctrl+v,[Compilar], [Gravar].

Mas o mesmo aconteceu com o advento dos computadores padrão ATX (com tudo coloridinho, encaixe único,...), onde qualquer "formatador" era técnico de informática.

Um detalhe importante...

As bibliotecas da comunidade Arduino geralmente são criadas por usuários e sob demanda de um projeto específico. Dificilmente alguém para pra sentar e criar uma biblioteca genérica, pensando em desempenho.

Tem bibliotecas que realmente são "gordas". Pega por exemplo a já nativa Servo.h. Pra quem quer só acionar um servo passando como parâmetro o angulo desejado, ela faz um bucado de coisa desnecessária, coisa que um bom programador pode driblar.

Jonatas

O debate vinha acirrado e eu lendo a mil...

até que entrei no link http://lmgtfy.com/

ri sozinho!

'galerinha que não sabe usar o google!' me aguarem!

Esse vai pro meu favoritos!

A um tempo atras eu estava em um debate parecido entre "ARDUINO vs CLP comercial"

outra batalha épica!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço