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

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

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

Mensagempor cristian » 27 Set 2011 20:15

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


Editado pela última vez por cristian em 01 Out 2011 18:42, em um total de 1 vez.
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor RobL » 28 Set 2011 21:56

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
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor cristian » 29 Set 2011 10:39

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor cristian » 01 Out 2011 18:44

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor pbernardi » 01 Out 2011 21:04

Pela descrição, parece ser problema de hardware.

Veja se não valta capacitores de desacoplamento, filtros recomendados, etc.
But to us there is but one God, plus or minus one - Corinthians 8:6±2. (xkcd.com)
pbernardi
Word
 
Mensagens: 707
Registrado em: 12 Out 2006 19:01
Localização: Curitiba-PR


Voltar para ARM

Quem está online

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

x