Página 1 de 1

AD do Cortex M3 BURST MODE ou nao ?....qual a melhor forma

MensagemEnviado: 27 Set 2011 20:15
por cristian
boa noite, estou com uma problema com o AD deste uC ....

1º ta oscilando muito mesmo pegando 1000 amostras

2° to usando o BURST modo para as conversoes serem feitas por hardware

entao a cada vou lendo o valor do AD somando ao interar o numero de amostra eu converto

mas debugando vejo q sempre o OVERRUN esta em 1 ou seja indicando q perdi uma conversao

oh ocodigo ai

Código: Selecionar todos

lerStatus= LPC_ADC->DR[0]>>31 ;
if(lerStatus)   // se done BIT31 = 1 conversao completa
 {
  aux=(LPC_ADC->DR[0]>>6)&0x3FF; AD0=AD0+aux; //le o AD e soma ao registrador
  if((++NSamplesAD0)>NUM_SAMPLES)
  {
     AD0=AD0/NSamplesAD0;
     ValueVolts =(AD0*VREF)/1023;
     ADx0=(int)(ValueVolts);
    AD0=0;
     NSamplesAD0=0;
    lerStatus=0;
    LPC_ADC->DR[0]=(1<<31);
  //----------------------------------------------
    if(AD0_old!=ADx0)
           {
            ConvIntString(ADx0,1,10,100);
         AD0_old=ADx0;
         }


  }   

 }//status bit da conversao



MensagemEnviado: 28 Set 2011 21:56
por RobL
Supondo que não tenha problema com hardware, ruído e similares:
Normalmente, quando se usa pooling o erro pode aparecer devido a falta de sincronismo no software com relação a frequência na qual o valor está estável para ler.
Certamente se houver uma maior latência entre as leituras(com relação ao seu clock e setagem do ADC), seu valor lido deve ficar dentro do esperado. Porém, deve ser o seu caso, o problema é maior quando precisamos fazer várias leituras, ficando próximo ao limite do ADC.

Veja se isto lhe ajuda:

http://mbed.org/forum/mbed/topic/2003/? ... ment-10468

MensagemEnviado: 29 Set 2011 10:39
por cristian
estou usando em BUST com freq de 4,5khz .... em BUST ele faz a conversao o tempo todo ...o lpc nao espera a tensao estabilizar nao antes de dar o resultado???

nao to usnado interrupçao

estou lendo 4 canais

ou seja ele lê e com um tempo ( q nao sei agora qual) pego o valor lido e salvo .... mas ai ja perdi algumas conversoes

o AD ta aterrado com resistor e mesmo assim ele lê 40mv e fica oscilando

MensagemEnviado: 01 Out 2011 18:44
por cristian
baixei a freq do AD para 1mhz isso quer dizer q em 11ms eu tenho a conversao ??

quando uso 1 canal fica blza mas ao ligar os 4 fica uma oscilaçao

ao usar interrupçes toda hora acontece o INT q chega ate a atrapalhar os outras funçoes

MensagemEnviado: 01 Out 2011 21:04
por pbernardi
Pela descrição, parece ser problema de hardware.

Veja se não valta capacitores de desacoplamento, filtros recomendados, etc.