Ir ao conteúdo
  • Cadastre-se

PIC Por onde começar no mundo dos micros


Posts recomendados

Olá,

 

Pretendo desenvolver soluções de automação com recurso a microcontroladores. Estava vendo este video

 

https://www.youtube.com/watch?v=a-GW1xF56o8

 

e me surgiu a seguinte dúvida "para avançar no mundo dos microcontroladores devo começar a estudar o quê e por onde? Familia PIC, AVR, ou outras coisas que nem se quer conheço :P ?"

 

Todas as dicas serão bem vindas, preciso de orientação.

Valeu

Link para o comentário
Compartilhar em outros sites

Bom dia,

 

Eu não sei qual sua formação; porém para o estudo de microcontroladores recomendo um estudo prévio sobre circuitos digitais (envolvendo álgebra booleana), eletrônica, lógica de programação e, um plus, microprocessadores.

 

Se você tiver uma boa base de matemática poderá se diferenciar facilmente.

 

A partir disso, você consegue se desenvolver quase que por conta própria em qualquer microcontrolador.

 

Abcs

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Eu penso um pouco diferente. Não acho necessário o estudo de lógica booleana, muito menos matemática.

Mas o estudo de programação é imprescindível.

E para iniciar, recomendo usar um Arduino Uno.

Depois poderá aprender sobre a família AVR, para criar seus próprios produtos e projetos.

 

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 horas atrás, aphawk disse:

Eu penso um pouco diferente. Não acho necessário o estudo de lógica booleana, muito menos matemática.

Mas o estudo de programação é imprescindível.

E para iniciar, recomendo usar um Arduino Uno.

Depois poderá aprender sobre a família AVR, para criar seus próprios produtos e projetos.

 

Paulo

Obrigado pelas respostas e opiniões. Mas a minha linha de pensamento é mais no sentido do @aphawk Possuo já um bom conhecimento eme electrónica (mas afina o que é um bom conhecimento....tenho dificuldade em medir isto!). De momento tenho trabalhado com o PIC16F877A e PIC16F628A. Acontece que ainda existe muita coisa para aprender, o que é de esperar. De momento pretendo/preciso começar a criar soluções que atendam a necessidade do cliente. Por exemplo, criar uma placa que consiga gerir vários entradas e dé sinais para várias saídas. O objectivo é substituir o plc por um pic. Acontece que já ouvi falar nos AVR, nos MIDRange, no arduino, nos pics....mas sinceramente não sei para que lado apostar.

 

Resumindo, para quem está começando, e que quer continuar a estudar todo o tipo de electronica, que tipo de solução aconselham aprender/dedicar mais tempo? (PIC, AVR's, MidRange, ou outros que eu nem sei!)

 

Valeu

Link para o comentário
Compartilhar em outros sites

Não tenho muito a dizer pois o máximo que fiz com um microcontrolador foi piscar alguns leds com Arduino, mas sei que é essencial o conhecimento em programação. Então se você já não tem conhecimento nessa área, foque os estudos em C ou Assembly. Creio que o excedente a isso seja a prática, você testará suas habilidades quando surgir um desafio para você implementar uma solução.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@ilovepic ,

 

Olha .... para ser bem realista, por dentro quase não há diferença entre um Pic e um Avr, digo em termos do que existe dentro deles de maneira geral.

 

Eu trabalhei pouco com Pics, e quando mudei para os Avrs me senti bem mais à vontade, inclusive no Assembler que é muito semelhante ao que eu  fazia nos 8080 ou 6502. O modelo de memória dele também é linear, diferente dos Pics.

 

Hoje, um Arduíno Uno é uma plataforma de desenvolvimento bem completa, pois basta ligar ele numa porta USB e pronto, já pode programar direto nele sem nenhum programador.

 

Pode usar a Ide do Arduino, com a sua linguagem muito semelhante ao C, ou pode programar em qualquer outra, eu uso Basic e Assembler quando preciso de muita velocidade, juntos no mesmo programa.

 

Nos últimos 10 anos, mais de 90% de todas as aplicações mais modernas foram desenvolvidas com os Arduínos. Ou seja, em termos de comunidade de desenvolvimento e aprendizado, e principalmente quantidade de informação disponível na Internet, nada se compara com ele.

 

Com os Pics, que possuem uma relação custo-benefício pior, fica difîcil voce fazer projetos que precisem de bastante Ram, coisa que é bem farta nos Avrs.

 

Mas como te disse no início, as duas familias compartilham internamente os módulos de Timers, Conversor A/D, interface Serial, I2C, SPI, comparador analógico, Interrupções, PWMs, mas você dificilmente vai encontrar nos Pics os recursos que tem num simples e barato Atmega328, cheio de memória, 20 Mhz de

clock, quase 20 Mips de processamento, interrupções em tudo que é pino, 3 timers, 8 canais ADC, interface serial, SPI, I2C, 6 saidas com PWM, 32K de memória de programa e 2K de Ram, mais 512 bytes de Eeprom.

Algo parecido na linha dos Pics custa umas 4 vezes mais caro....

 

A maneira mais simples de aprender a usar esse poder todo é comprar um Arduíno Uno, já vem tudo montado e é super barato !

 

Mas lembre disto : tem de estudar todos esses periféricos que tem dentro dos microcontroladores, saber para que servem, como funcionam internamente, e assim você comeca a saber como resolver o problema usando todos esses periféricos internos.

 

Para mim, o mais fundamental é saber a fundo sobre os Timers, depois os conversores A/D, depois as interfaces seriais ( incluem I2C e SPI ) e assim sucessivamente.

 

Depois, entender bem os conceitos de interrupção, para que servem, como controlar elas , como interagir uma interrupção com o programa principal, e acho que depois disto tudo só precisa de um pouco de prática.

 

Claro que ainda tem os conceitos mais avançados, como Watchdog por hardware, modos de economia de energia, mas aí você já pode se considerar um craque no assunto !

 

Paulo

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Que tipos de trabalho fazia com o 8080 e 6502? Apenas para ter uma ideia e perceber onde podem ser aplicados.

 

Assembly já comecei a aprender, pelo canal do wrkits. Mas Basic não faço a minima do que seja :) Está a falar de Basic, a linguagem que se utiliza nas ferramentas da microsoft?

 

Pensei que os AVR's eram mais caros e o pic fosse mais barato, porém mais limitado, mas por isso mais barato. Interessante. Que modelos e locais(marcas) sugere começar a aprender AVR's. Gostava de pegar um modelo e assim começar a estudar, a dar os primeiros passos.

Encontei este livro e artigo, https://www.embarcados.com.br/livro-avr-e-arduino/, aconselha começar por este livro?

 

Tal como voce disse já me tinha apercebido que os pics são um poucos limitados em termos de recursos. Não estou a falar mal deles, até porque não tenho conhecimento suficente para poder fazer esse tipo de critica. Mas por exemplo, limitação de pinos, limitação de conversores, limitação de timers. Já me começo aperceber que com o pic por vezes fico limitado.

Por fim, obrigado pelas suas dicas e orientações.

 

Concordo consigo no que toca a perceber e aplicar cada tipo de funcionalidade em um projecto individual e depois começar a utilizar isso tudo em um projecto só. Assim percebo melhor como trabalhar com cada funcionalidade.

Algo com o que tenho ficado encravado é a leitura do datasheet. Por exemplo, se for ler o datasheet do pic16f628A metade não percebo e a leitura acaba por ser complicada. Por isso os livros são sempre bons para começar a dar os primeiros passos e receber um rumo na aprendizagem.

 

Valeu

Link para o comentário
Compartilhar em outros sites

@ilovepic ,

 

O 8080 foi o processador que eu usava para fazer controle de processo industrial, eu usei ele e o Z80, programação quase idêntica, em produtos que a empresa que eu trabalhei fazia sob encomenda para a Petrobras. Tudo em Assembler.

 

Para interface com o usuário, usava IBM PC e APPLE ][ , com os processadores 8088 e 6502. Estes eu programava em Basic e em Assembler.

 

Existem modelos de microcontroladores PIC que são bem baratos, mas sao para uso em grande escala, SMD, de pouquíssima memória e recursos, esses sao mais baratos do que os Attiny equivalentes.

 

Mas quando tratamos de modelos para uso normal, para fazermos teste, usamoa modelos DIP para facilitar nossa montagem. Esses a linha AVR tem preço mais baixo e muito mais recursos internos.

 

Quanto ao Basic, sim, falo do Bascom Avr, um compilador Basic derivado do velho Basic da Microsoft, só que agora é estruturado, a grande vantagem é que existem comandos especializados para fazer todo o hardware interno funcionar como queremos.

 

Por exemplo, em um só comando eu defino o display que vou utilizar, bem como os pinos usados e qualquer outra informação.

 

Outro comando prepara o Timer para trabalhar como eu quero, se vai ser timer ou Counter, se vai gerar PWM, e um outro comando define se vai existir interrupção nesse Timer e qual a rotina que será chamada.

 

Outro comando define como vou trabalhar com o conversor ADC, e qual canal irei utilizar, e mais um comando define se vou trabalhar com interrupção e qual a rotina a ser chamada.

 

E por aí vai .....

 

Hoje todo mundo faz isto em C, mas eu não consigo entender como essa linguagem trabalha, quem como eu se iniciou programando anoa e anos em Assembler tem muita dificuldade com o C, mas também lembre-se que estou com 58 anos, e não consigo mais aprender truques novos kkkkk

 

De qualquer maneira, quando preciso de muita velocidade ou tenho de tratar eventos muito rápidos, integro o Assembler dentro de meu programa em Basic, isso é natural nesse compilador e assim faço coisas que as pessoas que usam o C puro não conseguem.

 

Quanto a ler datasheets, eu também não entendo mais de 60% do que tem neles,

mas também não preciso disso, então não se assuste !

 

Se você quiser ver um pouco dos Avrs, tem um tópico meu destacado na parte superior deste Fórum. Logo no primeiro post tem um link do meu tutorial, acho que vale a pena você baixar e dar uma lida nas primeiras páginas.

 

O importante é entender como funcionam todos os periféricos.

 

Eu começaria comprando um Arduíno Uno, não importa a linguagem que você irá programar, pois dentro dele tem um Atmega328P rodando a 16 Mhz, e vai te facilitar muiiiiito a fazer as experiências!

 

Paulo

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@ilovepic ,

 

Sobre o livro que você citou :

 

Eu dei uma olhada, me pareceu bom, mas reparei que apenas os primeiros capítulos falam sobre tudo o que existe dentro do Atmega328. Menos de 10% .... os outros 90% sao sobre a programação da IDE do Arduino....

 

Eu ainda insisto em voce saber o máximo possível sobre todos os periféricos que existem dentro do Atmega328.

 

Entender como funcionam, e na minha opinião, de que maneira voce pode utilizar para ajudar a fazer o programa e resolver o problema é o mais importante de tudo !

 

Depois disso, você pode utilizar qualquer linguagem, concorda ?

 

Eu uso os Avrs faz um bom tempo, se você quiser que eu te explique alguma coisa é só falar ok ?

 

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Tem livros ou apostilas sobre o 8080 e Z80 que possa partilhar? Pois através do wrkits estou estudando assembly e gostava de continuar a avançar nessa matéria. Entretanto também vou pesquisar na internet sobre o assunto!

 

Está a falar deste cara aqui:

 

ibm_pc_01-100676482-large.jpg

 

quando fala do IBM PC?Estive a ler a história e é bastante interessante (https://pt.wikipedia.org/wiki/IBM_PC). Interessante os 8088, de 1981, ainda estarem operacionais :)

 

Fui ver o que era o ATtiny 85 (https://www.microchip.com/wwwproducts/en/ATtiny85) é gostei desta linha

"By executing powerful instructions in a single clock cycle, the device achieves throughputs approaching 1 MIPS per MHz, balancing power consumption and processing speed." É mesmo muito rápido, para o tamanho! :) E para um encapsulamento tão pequeno faz bastante coisas! Mas como programo este cara? Apenas em assembly?

 

Resumindo, pela sua descrição vale a pena estudar o compilador Bascom AVR (https://www.mcselec.com/index.php?Itemid=41&id=14&option=com_content&task=view), certo? Em relação a linguagem de programação o meu objectivo é aprender a linguagem mais próxima da máquina possível. Segundo o que li é mais vantajoso! Mas pretendo também continuar a aprender C.

 

Em relação aos datasheet acabou de me tirar um peso de cima :) kkkkkk

 

Vou ler o seu tópico,

Então o que sugere é comprar um arduino uno e começar a trabalhar com os periféricos que este tem. Pode ser um arduino uno do chines ou do mercado livre? Assim é mais barato. Ou tem que ser mesmo o original?
Existem apostila com os exercicios para o arduino ou o canal do wrkits é um bom exemplo do que se pode fazer/aprender com o arduino?

 

Em relação ao livro pensei que fala-se a fundo sobre o atmega328. Vi o vídeo e li o indice e até já o tinha começado a ler. Mas lá está.....para quem é novo na matéria tudo é bom :P hehehe (não sei filtrar a matéria)


Sendo assim,uma vez que você é o meste e eu o discípulo (na casa dos 40 kkkk), o que sugere ler sobre o arduino(atmega328)? Sei que posso ir ao site da arduino(atmega328), também sei que existem milhares de apostilas por essa internet fora, mas o que aconselha ler/seguir?


Sugere começar então pela C, para perceber como funcionam os periféricos, e quando isso estiver bem sólido passar para assembly com o compilador, por exemplo, o BASCom AVR? (pois nessa fase já estarei a utilizar os AVR) Certo?

 

Obrigado pela disponibilidade e pela partilha de informação! Valeu

Link para o comentário
Compartilhar em outros sites

@ilovepic ,

 

Opa animou ein !!!!

 

Pode comprar o Uno chinesinho mesmo, desde que seja o Arduino Umo R3 .

Vai funcionar igualzinho ao original.

 

Quanto ao Pc, sim era esse mesmo !!!!

Quanta saudade hehehe !

 

A linha Attiny na programação e no hardware é a mesma coisa que os Atmega, apenas tem menos pinos, mas tem o mesmo poder. 20 Mips atende qualquer aplicação de automação com bastante folga.

 

Bom, você não está tão “novo” como eu supunha .... experimente aprender primeiro a linguagem da IDE do Arduino.

Se você se sentir bem confortável com ela, depois irá programar em C puro, baixando o compilador C para a linha AVR, que é gratuito. 

 

Mas se você se sentir muito sem entender a linguagem, a estrutura dela, eu sugiro que experimente o Bascom. 

O compilador é grátis e nessa condição ele gera código objeto até 4k de tamanho.

 

Dá para fazer muiiita coisa com 4k, não é igual à IDE do Arduino que gera codigo objeto enorme .....

 

Se voce gostar do Bascom, depois pode comprar ele, custa cerca de 79 euros. Aí seu limite é a capacidade do microcontrolador.

 

Quanto ao Assembler, embora seja a linguagem mais simples de todas pois é linear ( porisso que eu sempre programei em Basic também ! ) eu deixaria para a ultima etapa, pois você já estará acostumado com a eletronica interna do microcontrolador.

 

Será muito difîcil aparecer algo que tenha de ser resolvido com Assembler, digo em termis de automação.

 

Mas a programação exclusivamente em Assembler é tediosa, difícil de se achar algum erro, e programar para usar um periférico externo como

um display TFT exige 100 vezes mais tempo e conhecimento profundo do display, coisa que em C ou no Arduino ou no Bascom você faz em um minuto e nao precisa se perder com datasheets dos display .....

 

Eu gosto do Bascom porque posso fazer tudo de maneira muito simples, preparar todo o hardware, escrever no display, e caso precise de alguma coisa muito rápida, que não possa ser feito nas linguagens de alto nível, eu simplesmente escrevo em Assembler quando preciso, e o Bascom vai compilar junto sem nenhum problema !

 

No meu tutorial, eu nem uso Assembler.

 

Mas no tópico destacado, depois da metade dos posts você vai ver que eu começo a aprender o Assembler dos Avrs e começo a usar em alguns projetinhos.

 

Vale a pena ler conforme você ir evoluindo, ok ?

 

Quanto a alguma leitura, sugiro o próprio site do Arduino, tem muita coisa lá, se não me engano tem o Arduino University, que ensina bastante coisa sobre a linguagem.

 

E sobre o Atmega328, lembre-se que ele é um AVR, existe muita informação sobre AVR para iniciantes, acho que vale a pena começar por isso.

 

Boa diversão !

 

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Em 07/09/2018 às 14:55, aphawk disse:

@ilovepic ,

 

Opa animou ein !!!!

 

Pode comprar o Uno chinesinho mesmo, desde que seja o Arduino Umo R3 .

Vai funcionar igualzinho ao original.

 

Quanto ao Pc, sim era esse mesmo !!!!

Quanta saudade hehehe !

 

A linha Attiny na programação e no hardware é a mesma coisa que os Atmega, apenas tem menos pinos, mas tem o mesmo poder. 20 Mips atende qualquer aplicação de automação com bastante folga.

 

Bom, você não está tão “novo” como eu supunha .... experimente aprender primeiro a linguagem da IDE do Arduino.

Se você se sentir bem confortável com ela, depois irá programar em C puro, baixando o compilador C para a linha AVR, que é gratuito. 

 

Mas se você se sentir muito sem entender a linguagem, a estrutura dela, eu sugiro que experimente o Bascom. 

O compilador é grátis e nessa condição ele gera código objeto até 4k de tamanho.

 

Dá para fazer muiiita coisa com 4k, não é igual à IDE do Arduino que gera codigo objeto enorme .....

 

Se voce gostar do Bascom, depois pode comprar ele, custa cerca de 79 euros. Aí seu limite é a capacidade do microcontrolador.

 

Quanto ao Assembler, embora seja a linguagem mais simples de todas pois é linear ( porisso que eu sempre programei em Basic também ! ) eu deixaria para a ultima etapa, pois você já estará acostumado com a eletronica interna do microcontrolador.

 

Será muito difîcil aparecer algo que tenha de ser resolvido com Assembler, digo em termis de automação.

 

Mas a programação exclusivamente em Assembler é tediosa, difícil de se achar algum erro, e programar para usar um periférico externo como

um display TFT exige 100 vezes mais tempo e conhecimento profundo do display, coisa que em C ou no Arduino ou no Bascom você faz em um minuto e nao precisa se perder com datasheets dos display .....

 

Eu gosto do Bascom porque posso fazer tudo de maneira muito simples, preparar todo o hardware, escrever no display, e caso precise de alguma coisa muito rápida, que não possa ser feito nas linguagens de alto nível, eu simplesmente escrevo em Assembler quando preciso, e o Bascom vai compilar junto sem nenhum problema !

 

No meu tutorial, eu nem uso Assembler.

 

Mas no tópico destacado, depois da metade dos posts você vai ver que eu começo a aprender o Assembler dos Avrs e começo a usar em alguns projetinhos.

 

Vale a pena ler conforme você ir evoluindo, ok ?

 

Quanto a alguma leitura, sugiro o próprio site do Arduino, tem muita coisa lá, se não me engano tem o Arduino University, que ensina bastante coisa sobre a linguagem.

 

E sobre o Atmega328, lembre-se que ele é um AVR, existe muita informação sobre AVR para iniciantes, acho que vale a pena começar por isso.

 

Boa diversão !

 

Paulo

Já chegou o meu Funduino Mega2560 :) Vou estudar a linguagem e vamos conversando! Obrigado pelas optimas dicas e força!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...