collapse

* Posts Recentes

Ajuda na identificação de componente de portatil por jm_araujo
[15 de Setembro de 2019, 11:41]


Loja online "McMaster" na europa? por senso
[09 de Setembro de 2019, 23:54]


Carregador Solar para Baterias - EBay por almamater
[09 de Setembro de 2019, 22:47]


Pasta térmica por thx1011
[04 de Setembro de 2019, 19:35]


Livros opensource de electrónica, transístores e OpAmps. por thx1011
[03 de Setembro de 2019, 19:56]


Que métodos utilizam para limpar as vossas placas após soldadura? por KammutierSpule
[21 de Agosto de 2019, 22:42]


Contas para saber a duração das baterias. por vasco
[21 de Agosto de 2019, 11:10]


Fabricantes de PCB e Assemblage (produção em massa) por Kristey
[21 de Agosto de 2019, 08:51]


Máquina de soldar a fio sem gás LIDL por Hugu
[16 de Agosto de 2019, 18:28]


Hugu por jm_araujo
[14 de Agosto de 2019, 00:50]

Autor Tópico: Maneira correta de ler o ADC do Arduino ?  (Lida 1232 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 382
Maneira correta de ler o ADC do Arduino ?
« em: 21 de Outubro de 2018, 22:15 »
Boa noite,

À força de ler código de outras pessoas sobre a leitura de valores analógicos, acabei por ficar com a duvida se há realmente alguma diferença entre fazer simplesmente

Código: [Seleccione]
X=analogRead(A0);
Ou se se deve usar

Código: [Seleccione]
ADMUX=A0;
ADCSRA |= (1 << ADSC);         /* start conversion */
while (ADCSRA & (1 << ADSC));  /* wait until conversion is done */
X=ADCW;

« Última modificação: 21 de Outubro de 2018, 22:43 por vasco »
Stupid men are often capable of things the clever wouldn't dare to contemplate.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.528
  • NERD!
Re: Maneira correta de ler o ADC do Arduino ?
« Responder #1 em: 22 de Outubro de 2018, 00:20 »
Vai dar à mesma coisa.
O primeiro é mais portátil, se mudares para um arduino com um processador diferente eventualmente não precisas de mudar nada (se mantiveres o sinal no A0), no segundo tens de descobrir quais os registos que controlam o ADC e usá-los da forma apropriada, que podem ser completamente diferentes.

A (eventual) vantagem do segundo é que é mais rápido, as bibliotecas arduino são sempre mais complexas. Olha para o código do AnalogRead para AVR: https://github.com/arduino/ArduinoCore-avr/blob/b7c607663fecc232e598f2c0acf419ceb0b7078c/cores/arduino/wiring_analog.c
muita dessa coisa é despachada na compilação (os #if), mas ainda sobra uma chamada a uma função ( analogPinToChannel() ).


Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.433
    • Tróniquices
Re: Maneira correta de ler o ADC do Arduino ?
« Responder #2 em: 28 de Outubro de 2018, 01:44 »
A maneira correcta no Arduino é usares a função que eles providenciam, analogRead().
O código deles podia ser melhor (ya, grande novidade...), em particular no ciclo de espera pelo fim da conversão. Mas também, para o público alvo em questão, não é preciso muito rigor.

Já a maneira correcta, ou melhor dizendo, a melhor, no AVR, depende da aplicação, do que é mais importante, se baixo ruído, resolução, precisão, largura de banda....