Tempos de amostragem causando "delays"

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Tempos de amostragem causando "delays"

Mensagempor Eduardo Augusto » 26 Ago 2015 09:25

Pessoal!
Tenho uma aplicação que utiliza o protocolo Modbus para transmitir seus dados para um concentrador de dados, até ai funcionando bem, consigo ler e escrever bobinas e variáveis . Contudo, meu concentrador está derrubando a comunicação com o escravo por time out e tenho certeza que é meu método de leitura do adc... Leio 4 sinais com o adc e depois os disponibilizo em um buffer, mas essas leituras estão me gerando "delay's" dentro da rotina de Modbus.....

Minha função de leitura.
Código: Selecionar todos
      ADCON1.F1 = 1;        //Start sampling (SAMP=1)
      Delay_ms(100);        //Wait for 100ms (sampling ...)
      ADCON1.F1 = 0;        //Clear SAMP bit (trigger conversion)
      while (ADCON1.F0 == 0)
      return ADCBUF0;


Não seria possível fazer por interrupção? Por exemplo dou set em um bit para iniciar a a amostragem e quando concluída tenho uma interrupção com a resposta da conversão?
Não é possível dormir com todas mulheres do mundo, mas deve-se fazer o esforço.
Avatar do usuário
Eduardo Augusto
Byte
 
Mensagens: 105
Registrado em: 03 Mar 2014 08:57
Localização: São Paulo, SP

Re: Tempos de amostragem causando "delays"

Mensagempor Alexandro » 26 Ago 2015 10:22

O tempo de 100ms é muita coisa, pode abaixar pra uS, isso deve resolver, mas por interrupção tambem dá.
Avatar do usuário
Alexandro
Byte
 
Mensagens: 436
Registrado em: 23 Out 2006 16:49
Localização: São José do Rio Preto - SP e Sao Paulo-SP

Re: Tempos de amostragem causando "delays"

Mensagempor edsont » 26 Ago 2015 20:22

A rotina do ADC pode esperar, mas a rotina de comunicação não se não tiver controle de fluxo. Imagino que seja RTU ou ASCII (serial).
Se possível eu sugiro usar uma interrupção quando houver dado no buffer de entrada e copiar para um buffer da aplicação.
Sem controle de fluxo, se chegar um byte enquanto o buffer da UART estiver cheio este será perdido, resultando em mensagem incompleta.
Avatar do usuário
edsont
Word
 
Mensagens: 555
Registrado em: 22 Mai 2007 17:19
Localização: Araraquara-SP Brasil - Terra - Sistema Solar - Via Láctea

Re: Tempos de amostragem causando "delays"

Mensagempor Eduardo Augusto » 27 Ago 2015 15:13

Consegui a partir deste material aqui

http://www.electronics-base.com/dspic-t ... dc-example

Meu problema era na consulta do mestre aos valores dos escravos. Quando os escravos iam responder ao chamado da leitura do mestre o pic iniciava o método de leitura das portas analógicas causando time-out na comunicação.
Já resolvido agora por interrupção!
Não é possível dormir com todas mulheres do mundo, mas deve-se fazer o esforço.
Avatar do usuário
Eduardo Augusto
Byte
 
Mensagens: 105
Registrado em: 03 Mar 2014 08:57
Localização: São Paulo, SP


Voltar para PIC

Quem está online

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

x