Ir ao conteúdo

Posts recomendados

Postado

Boa tarde. Sou iniciante em programação para microcontroladores, recentemente adquiri um  Arduino Uno para poder estudar, porém eu não gostei da IDE do Arduino e queria programar ele sem ela( diretamente em C), mas não encontrei material de estudo( livro, apostila etc.) para poder programar o mesmo, mas a única coisa que encontrei foi material para PIC e queria entender se o mesmo modo que se programa PIC é igual para o Atmega328( microcontrolador do Arduino Uno) e se existe algum material para poder programar o Atmega328 em C .Desde já agradeço se alguém puder esclarecer minhas dúvidas.Desculpem se o tópico estiver no local errado pois sou novo no fórum e também se minhas dúvidas não estivem muito claras !

  • Membro VIP
Postado

 

Mas em relação a material de estudo eu só encontrei para PIC, e queria saber se é possível utilizar o mesmo material para Atmega328 .

E obrigado pela ajuda e esclarecimento. Eu tinha encontrado o Atmel Studio antes, mas como não tenho o "material certo" fica difícil.

Desde já, obrigado !!!!

  • Membro VIP
Postado

Material para ATmega ou PICs só mesmo estudando os datasheets.

Sabe algo de eletrônica digital, portas lógicas AND, OR, E, NOR, Inversores,  XOR,  Contadores, Níveis digitais, conversores A/D-D/A, Shifts Registers, Latches, Flip-Flops, Registradores, Memórias e...  ULA (Unidade lógica e Aritmética).

Amigo... aí fica difícil se não souber um pouco destas coisas.

Um ATmega328p só tem 668 páginas que, se não entender alguns termos citados acima fica difícil entendê-lo. Entendendo um tipo de uProcessador, entenderá a maioria.

Não quero desanimá-lo, mas procure saber os fundamentos básicos da eletrônica e eletrônica digital.

Se tens um simples Arduino UNO, faça primeiro piscar um LED, mesmo através da IDE do Arduino,  e entenda porque ele pisca. O C/C++ do Arduino é praticamente o mesmo C ANSI, basta substituir a sintaxe.

 

https://www.arduino.cc/en/Tutorial/Blink

 

Brasil Robotics: Pisca LED: O primeiro exemplo para Arduino - Blink LED Arduino Tutorial

 

O Arduino Projeto - Piscando LED com efeito Fade com Arduino - O Arduino

 

Precisando de ajuda, estamos aqui.

 

 

 

Postado

Hmmm.. agora entendi, bom deixe eu explicar melhor. Eu decidi estudar programação com o Arduino devido ao fato de meu colégio ser ens. médio técnico e na sua grade curricular possui "Arduino"( para ser mais exato possui : Eletrônica Analógica e digital, Micro. I ( Arduino ), Micro. II (Raspberry Pi) ), mas estava no 1º ano e só estudei Eletrônica analógica, e agora no 2º ano ( em 2016) eu irei estudar Eletrônica Digital e Micro. I e no 3º ano Micro II. Eu tentei adiantar meu estudo porque essas são as matérias que mais me interessam ( Pretendo fazer eng. Eletrônica), mas o estudo de Micro. I ( Arduino) é com a plataforma do arduino e não com uma programação direto em C (do jeito que eu queria :(), e para ter uma bagagem boa até a faculdade eu queria programar ele dessa forma :D ( até porque se eu for ficar grudado com aquela interface do arduino eu não vou aprender muita coisa !!! ) e essa é mais ou menos minha situação.

Há é ... eu esqueci de explicar que meu colégio é Téc. em Telecomunicações e por isso ele não se aprofunda tanto nas matérias de Eletrônica e Micro, e também os alunos já entram no colégio sem base de estudo e ficam com dificuldade ( O colégio é estadual.... a maioria dos alunos eram de escolas públicas que não tinham uma boa qualidade de ensino) e o que já era difícil piora ... ai a parte técnica do colégio decide não dar alguns conteúdos que seriam essencial. E sendo humilde, eu decidi também estudar isso tudo não só pelo gosto da área, mas para poder ter menos dificuldade ;).

 

 

A é.... eu já tenho uma boa base de eletrônica e já sei utilizar bem o Arduino, mas o que eu pretendia com esse "material" de estudo era que ele fosse parecido com o do PIC ( Ele explica como funciona o microcontrolador) mas em vez de PIC fosse para o Atmega328(ou similar). Ai daria meu jeito de estudar, porque eu já procurei de tudo (tudo mesmo :x) e não encontro nada...

Mas mesmo assim obrigado pela ajuda !!!!

  • Membro VIP
Postado

Seu nick parece não traduzir o grau de seriedade com que está se embrenhando neste micromundo.. ainda bem...max fica ixperrto!

 

Aprenda C. você pode não acreditar mas nos meus projetos relativamente complexos (um 'pouco' mais do que pisca led) uso pouco mais do que meia dúzia (ou até menos) de comandos (palavras chave) do C. Aprendeu? Agora veja alguns circuitos internos do seu mc, como inicializá-lo e como ele 'conversa' com o mundo exterior. Comece com os PORTS. Agora como seu compilador 'conversa' com os periféricos do seu mc. O ex. abaixo é do IAR

 

Um rápido pisca led rápido (nos 2 sentidos):

 

DDRB=0xff;//tudo saída
for (;;) PORTB^=0xff;//pisca tudo

Veja no proteus - aliás, outra dica.

 

IAR,KEYL,SDCC são alguns compiladores bacanas pros atmega's que ja tive contato...

 

Postado

Aprender a linguagem C não é problema ... o meu problema são como utilizar as portas diretamente em C ( Sem ser DigitalWrite( pin , 13) ).... mas obrigado pela dica.

 

E eu só coloquei esse nome de usuário por não ter outro em mente..... mas obrigado pelo alerta..

Postado

Bom!

Eu pesquisei na internet sobre AVR e baixei cerca de 3,5GB de material.

Tirando C e Basic, aí restaram 1,9GB.

Pesquise bem que você acha.

MOR_AL

Postado
Em 25/12/2015 at 10:38, Leonardo42 disse:

Aprender a linguagem C não é problema ... o meu problema são como utilizar as portas diretamente em C ( Sem ser DigitalWrite( pin , 13) ).... mas obrigado pela dica.

 

E eu só coloquei esse nome de usuário por não ter outro em mente..... mas obrigado pelo alerta..

 

 

  Amigo, acho que esta faltando um pouco de "foco" para você, tipo decidir "é isso!!" e ir fundo no que escolheu.

.

Já decidiu que compilador vai usar? Já baixou e deu uma conferida no datasheet do ATmega328p? Eu pergunto por que estes são os primeiros passos.

 

  Se quiser minha recomendação, eu uso um compilador chamado winAVR (é a versão para windows do AVR GCC) só que é necessário configurar um front end (uma IDE) para ele, eu particularmente uso o Eclipse...

 

  Se quiser usar o AVR Studio é o mesmo compilador (se não me falha a memoria) só que usa o Visual Studio da microsoft como IDE (é bem pesado na verdade mas ja vem tudo configurado é só baixar e instalar) o AVR Studio tem algumas vantagens como o ótimo Debbuger.

 

  E detalhe, é o mesmo compilador usado pela IDE arduino, inclusive nada te impede de programar na IDE do arduino sem usar as bibliotecas (cores) do arduino...

 

  Se quiser acessar os Ports do uC comesse lendo esta seção do Datasheet estude os registradores que influenciam os ports (DDR, PORT e PIN) veja pra que serve cada um e tentes escrever algum código com base no que você estudou....

 Posso te adiantar que a linguagem C não deixa você acessar os bits de um registrador individualmente então se quiser alterar apenas um bit vai ter que usar alguns aperadores específicos (AND, OR e o operador Shift)... Já que você disse que a sintaxe do C não é o problema acho que você deve se focar mais em estudar o ATmega mesmo....

 

  • Membro VIP
Postado

de trás pra frente

-deixa acessar bits sim. você pode montar na raça com struct, union e tal. Mas de fato nem precisa pois os '#include' já tem (deve ter) os nomes dos bits dos regs pra você acessar diretamente. E tem váaarias maneiras de você manipular bits 'in natura' em c. Qualquer dia te mostro alguma

-penso que você não precisa ler gigas de informação. Um ou dois d.s. e uma lida rápida em algum exemplo que deve vir com seu compilador e você já pisca led

-"o meu problema são como utilizar as portas diretamente em C ( Sem ser DigitalWrite( pin , 13) )".. tamo junto! Também odeio esta sintaxe amadora. Veja isso... PORTB=0xaa; e a=PORTC|0b10000000; //p.ex. uai! O compilador pensa que ports e registros são simples variáveis. O bacana é que você nem precisa criá-las pois já nascem no "#include avr.h" (p.ex.). Não perca tempo tentando entender como é feito. E em 99,9% das vezes elas têm o mesmo nome que estão no d.s.

-e perdão.. eu sou a última pessoa que pode criticar nicks.. kk

Postado
23 horas atrás, Isadora Ferraz disse:

de trás pra frente

-deixa acessar bits sim. você pode montar na raça com struct, union e tal. Mas de fato nem precisa pois os '#include' já tem (deve ter) os nomes dos bits dos regs pra você acessar diretamente. E tem váaarias maneiras de você manipular bits 'in natura' em c. Qualquer dia te mostro alguma

 

Isadora, acho que não me expressei muito bem.

 

  O que eu quis dizer é que tem uma nomenclatura muita usada em compiladores, tipo:

 

  PORTD.B6 = 0;

 

  E o winAVR não aceita este tipo de nomenclatura nativamente (não que eu saiba pelo menos), portanto é necessário escrever no port "inteiro" e usar alguma logica para alterar apenas o bit que você quer.

 

PORTD &= ~(1 << 6); 

 

  Na verdade foi isso que eu quis dizer....  XD

 

  E uma curiosidade sobre o digitalWrite(), o maior problema dele nem é a "sintaxe Amadora" (kkkkk) e sim a otimização, esta rotina usa mais de 50 linha de assembly para gravar em um simples port, isto ocorre pois são feitas algumas verificações tipo se o numero indicado do port é valido, pois nada impede o usuário de digitar

 

digitalWrite( 584 ,LOW);

 

  Fora algumas verificações se o port esta configurado com saída digital ou analógica e tal.....   No geral verificações desnecessárias, caso o "programador" saiba o que esta fazendo...

  • Membro VIP
Postado

Generalizando ainda mais, veja estas macros que não fazem discriminação de compilador...

#define setbit(var,bitno) ((var) |= 1 << (bitno))
#define clrbit(var,bitno) ((var) &= ~(1 << (bitno)))

Ex. de uso...

setbit(PORTD,6);

 

Bom... numa microanálise sobre o que você disse, a sintaxe até que pode ser bem profissional mas "literalmente" feita para amadores kk. Mas claro, tem seu valor...

 

abç

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!