CONVERSÃO AD PELO JEITO MAIS DIFICIL

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor Pask » 10 Jun 2015 12:26

Amigos, eu uso o compilador MikroC que também dispõe de uma biblioteca interna para se trabalhar com o conversor AD dos microcontroladores. No entanto, se essa biblioteca não existisse ou se eu não quisesse usá-la e fazer tudo da forma "mais difícil", digamos assim, como eu poderia ler o resultado em 10bits da conversão AD nos registradores ADRESH e ADRESL do pic de modo a guardar este resultado numa variável de 16bits?

Por exemplo: imaginem que, após uma conversão, o valor obtido foi 945 digital que é representado na forma binária como: 11.1011.0001 => 10 bits
Também, suponhamos que o resultado foi justificado à esquerda tendo os 8 bits mais significativos em ADRESH e os 2 bits menos significativos em ADRESL. Então...
ADRESH = 1011.0001 => esta sequência representa o número 177.
ADRESL = 1100.0000 => esta sequência representa o número 192.

A pergunta é: como juntar ou usar algum recurso da linguagem C para unir os resultados numa única variável que mostrará o valor 945 obtido nesta conversão?


Aguardo uma ajuda.
Editado pela última vez por Pask em 10 Jun 2015 12:27, em um total de 1 vez.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor tcpipchip » 10 Jun 2015 12:27

union struct
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor tcpipchip » 10 Jun 2015 12:28

ou multplica um por 256 (H) e soma com o outro (L)

Programa fica maior :(
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor Pask » 10 Jun 2015 12:29

:? Fiquei na mesma.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor barboza » 10 Jun 2015 12:47

Código: Selecionar todos
u16 u16_ADValue;
u16 u16_ADDecimalValue;

  // Salve the AD value from the register
  u16_ADValue = ((ADRESH << 8) | (ADRESL << 0));

  // If left shifted, right shift them. 6 is 16 - 10 (ad resolution)
  u16_ADDecimalValue = (u16_ADValue >> 6);

  // Your output is "AD is 945"
  printf("AD is %d", u16_ADDecimalValue );
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor ze » 10 Jun 2015 14:11

Que tal isso...
Código: Selecionar todos
unsigned int adcread(unsigned char channel)
{
   ADCON0 = (channel << 3) + 0xC1;      // enable ADC, RC osc.
   ADGO = 1;
   while(ADGO)
      continue;   // wait for conversion complete
return ADRESH*256+ADRESL;
}
//...
unsigned int an0,an1,an2;
an0=adcread(0);
//...
an1=adcread(1);
//...
an2=adcread(2);

Sugiro sujar um pouco as mãos com dando uma olhadela no datashit.
Não esqueça de lavar depois...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor Pask » 10 Jun 2015 15:31

Obrigado, Barboza, pela sua ajuda. Valeu e funcionou legal.

A propósito DWord, não se escreve "datashit" mas sim "datasheet" do "inglês correto" que significa "folha de dados". Quando eu leio datasheets e não datashits, eu não sujo as mãos. Apenas entendo e aprendo aquilo que leio. Não sei se você entendeu, mas não tenho problemas com datasheets. A minha dúvida era sobre como escrever um trecho de código de uma forma pouco usual.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor ze » 10 Jun 2015 16:20

perdão amigo mas vc não entendeu a mensagem subliminar (isso é normal). "conversão ad pelo jeito mais difícil" subentendi que é algo duro de fazer. ou seja hard. Do jeito que sugeri seria um acesso direto ao hardware. E realmente acessar direto o hw (o que eu 'carinhosamente' chamo de sujar as mãos, ver datasheets e etc) também é algo pouco usual pra geração ccs/arduíno (sei que não é seu caso).
Um dia perceberás que a solução que propus transcende um pouco o que pediu. Na ocasião, hás de considerar portanto que a sugestão para passar os olhos pelo d.s. era pra vc entender melhor os nomes dos registros (em maiúsculo) e sua função. Ouça portanto um virtual "de nada" antecipado e, de novo, um tardio "perdão meu amigo"

e por falar em msg subliminar...

Foi mal
Orientei-te como pude
Desculpa, não fui melhor
Agora não posso mais
-
Sou incapaz
Enfim, boa sorte

Ah e obrigado por me corrigir o inglês. É que sempre escrevo o que tenho na cabeça.

relaxa... Jesus te ama
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Re: CONVERSÃO AD PELO JEITO MAIS DIFICIL

Mensagempor EvandrPic » 10 Jun 2015 17:39

Relaxa ze... ele falou com o "Dword"... :mrgreen: :lol:

ze escreveu:perdão amigo mas vc não entendeu a mensagem subliminar (isso é normal). "conversão ad pelo jeito mais difícil" subentendi que é algo duro de fazer. ou seja hard. Do jeito que sugeri seria um acesso direto ao hardware. E realmente acessar direto o hw (o que eu 'carinhosamente' chamo de sujar as mãos, ver datasheets e etc) também é algo pouco usual pra geração ccs/arduíno (sei que não é seu caso).
Um dia perceberás que a solução que propus transcende um pouco o que pediu. Na ocasião, hás de considerar portanto que a sugestão para passar os olhos pelo d.s. era pra vc entender melhor os nomes dos registros (em maiúsculo) e sua função. Ouça portanto um virtual "de nada" antecipado e, de novo, um tardio "perdão meu amigo"

e por falar em msg subliminar...

Foi mal
Orientei-te como pude
Desculpa, não fui melhor
Agora não posso mais
-
Sou incapaz
Enfim, boa sorte

Ah e obrigado por me corrigir o inglês. É que sempre escrevo o que tenho na cabeça.

relaxa... Jesus te ama
EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x