Página 1 de 2

cortex e AD!

MensagemEnviado: 30 Set 2010 10:50
por Rodrigo F.
pesoal peguei um exemplo de leitura de ad da seuinte maneira!!

Código: Selecionar todos

  LPC_PINCON->PINSEL3 &= ~(3UL<<30);                        // Reset P1.31 = GPIO
  LPC_PINCON->PINSEL3 |=  (3UL<<30);                               // Config P1.31 is AD0.5
 
 
  LPC_SC->PCONP       |=  (1UL<<12);                               // Enable power to ADC block
  LPC_ADC->ADCR        =  (1UL<< 5) |                              // select AD0.5 pin
                          (1UL<< 8) |                              // ADC clock is 18MHz/2
                          (1UL<<21);


estou tentando configurar o ad para outro pino mas não entendi o que são os UL?? (3UL<<30) ?

alguem dá uma luz?

Re: cortex e AD!

MensagemEnviado: 30 Set 2010 11:02
por tcpipchip
Rodrigo F. escreveu:pesoal peguei um exemplo de leitura de ad da seuinte maneira!!

Código: Selecionar todos

  LPC_PINCON->PINSEL3 &= ~(3UL<<30);                        // Reset P1.31 = GPIO
  LPC_PINCON->PINSEL3 |=  (3UL<<30);                               // Config P1.31 is AD0.5
 
 
  LPC_SC->PCONP       |=  (1UL<<12);                               // Enable power to ADC block
  LPC_ADC->ADCR        =  (1UL<< 5) |                              // select AD0.5 pin
                          (1UL<< 8) |                              // ADC clock is 18MHz/2
                          (1UL<<21);


estou tentando configurar o ad para outro pino mas não entendi o que são os UL?? (3UL<<30) ?

alguem dá uma luz?



Imagine o numero binario 11, deslocando 30 posições para esquerda em um registrador do tipo longo sem sinal....ou seja, voce está assim isolando bits que quer testar, setar, resetar....

MensagemEnviado: 30 Set 2010 11:10
por Rodrigo F.
Certo tcpipchip, no caso o UL seria unsigned long!! não entendi pq o 11?? não seria 3?

MensagemEnviado: 30 Set 2010 15:06
por chrdcv
3 em binário, lembra aquela frase que o pessoal da computação usa?

"No mundo só existem 10 tipos de pessoas, as que conhecem binário e as que não conhecem"

Eu demorei um tempão para entender...

MensagemEnviado: 30 Set 2010 15:43
por Rodrigo F.
chrdcv escreveu:3 em binário, lembra aquela frase que o pessoal da computação usa?

"No mundo só existem 10 tipos de pessoas, as que conhecem binário e as que não conhecem"

Eu demorei um tempão para entender...


chrdcv agora eu compreendi! 3 em hexa é 00000011

MensagemEnviado: 30 Set 2010 15:56
por Jorge_Francisco
Rodrigo F. escreveu:
chrdcv escreveu:3 em binário, lembra aquela frase que o pessoal da computação usa?

"No mundo só existem 10 tipos de pessoas, as que conhecem binário e as que não conhecem"

Eu demorei um tempão para entender...


chrdcv agora eu compreendi! 3 em hexa é 00000011


Em PENTA também! Muito Bom!!! Bons estudos aí!!

MensagemEnviado: 30 Set 2010 16:17
por Djalma Toledo Rodrigues
Em 'trictal' 10

rsrs
DJ

MensagemEnviado: 30 Set 2010 17:44
por RobL
estou tentando configurar o ad para outro pino mas não entendi o que são os UL?? (3UL<<30) ?


Uso do UL :
Há compiladores, relacionados a versões (padronização) do C, que não tratam, por exemplo, 4000000 como unsigned long. Para garantir isso usa-se 4000000UL.
Creio que o autor quer garantir com 1UL, 3UL, etc, evitar alertas, pois poderia algum compilador não interpretar deslocamento em uma unidade com 32 bits sem sinal e sim algo com menor número de bits, ou com sinal e alertar. Naturalemente, o alerta, vai depender do lado direito do shift ser > 16, 32, etc e o padrão C usado pelo compilador.

MensagemEnviado: 05 Out 2010 10:57
por Rodrigo F.
Pessoal estou lendo um sensor LM35, mas meu AD tá oscilando muito, alguém já usou LM35 com o cortex? tem algum macete para ter uma leitura estavel?

MensagemEnviado: 05 Out 2010 11:18
por fabim
Rodrigo F. escreveu:Pessoal estou lendo um sensor LM35, mas meu AD tá oscilando muito, alguém já usou LM35 com o cortex? tem algum macete para ter uma leitura estavel?

Quando você diz oscilando muito, é muito quanto ?

O AD do lpc é ref interna ou externa ?
O LM35 ta usando fiozinho mardito, ou cabinho coaxial ?
Você esta perto de um emissor EMI/RFI ?
etc etc etc ?
etc ?
Eim ? etc ?

Abaços. fabim

MensagemEnviado: 05 Out 2010 12:05
por Djalma Toledo Rodrigues
Capacitores de desacoplamento

RC na entrada do ADC

Soma Leitura do ADC para obter média.

etc. etc. como diz Fabim

DJ

MensagemEnviado: 05 Out 2010 13:26
por Rodrigo F.
fabim escreveu:
Rodrigo F. escreveu:Pessoal estou lendo um sensor LM35, mas meu AD tá oscilando muito, alguém já usou LM35 com o cortex? tem algum macete para ter uma leitura estavel?

Quando você diz oscilando muito, é muito quanto ?

O AD do lpc é ref interna ou externa ?
O LM35 ta usando fiozinho mardito, ou cabinho coaxial ?
Você esta perto de um emissor EMI/RFI ?
etc etc etc ?
etc ?
Eim ? etc ?

Abaços. fabim


Dae fabim blz!

bom vamos lá!

oscila tipo un 4 graus,

exemplo tempreratura está em 29graus, ai aparece 29...32...30...29..31...34...

estou usando um kit de desenvolvimento com lpc 1768

ref interna!

to usando fiozinhuo mardito! hehehe

emissor EMI/RFI, tem uma fonte proximo alimentando e o proprio kit!

Djalma estou usando capacitores de desacoplamento e ja tentei fazer média da soma das temperaturas, oscila do mesmo geito!!

segue o codigo:


Código: Selecionar todos


  LPC_PINCON->PINSEL3 &= ~(3UL<<30);                        // Reset P1.31 = GPIO
  LPC_PINCON->PINSEL3 |=  (3UL<<30);                               // Config P1.31 is AD0.5
  LPC_SC->PCONP       |=  (1UL<<12);                               // Enable power to ADC block
  LPC_ADC->ADCR        =  (1UL<< 5) |                              // select AD0.5 pin
                          (1UL<< 8) |                              // ADC clock is 18MHz/2
                          (1UL<<21);                               // enable ADC

while(1){
 LPC_ADC->ADCR |=  (1<<24);                                    // start conversion
   while (!(LPC_ADC->ADGDR & (1<<31)));                        // Wait for Conversion end
   val= ((LPC_ADC->ADGDR >> 4) & 0xFFF);                        // read converted value
   LPC_ADC->ADCR &= ~(7<<24);                                    // stop conversion

    valor = val;
    Value[0]=(unsigned char)(valor/1000%10);
     Value[1]=(unsigned char)(valor/100%10);
     Value[2]=(unsigned char)(valor/10%10);
 }
 


armazeno o valor em um array e depois jogo este array nos display

MensagemEnviado: 05 Out 2010 13:57
por chrdcv
Eliminada (o minimizadas) as "causas" de hardware, penso que seria interessante a utilização de um filtro simples para a apresentação do valor final ao usuário. Há diferentes tipos e para cada casos, mas pode começar com um de média aparada que é bem simples de implementar e resolve a maioria dos casos não-críticos!

http://en.wikipedia.org/wiki/Average

chrdcv[/url]

MensagemEnviado: 04 Nov 2010 19:23
por Jozias del Rios
Tipicamente:

Código: Selecionar todos
value = value + ( newvalue - value ) / 16;


é um filtro IIR que faz a média que vc precisa. Troque o 16 por outra potência de 2 que desejar.

MensagemEnviado: 04 Nov 2010 20:11
por guest2003
A impedancia de saida do sensor é tão baixa...

não imagino que teria problema o "fiozinho mardito" ...

a menos que seja de 5 metros...

o que convenhamos não é um fiozinho... e sim um fiozão !!

[]'s