Página 1 de 1
Conversor A/D Brochante...

Enviado:
05 Mar 2008 16:27
por Bardelli
Olá All.
Estou fazendo uma aplicação com PIC que preciso de uma velocidade bem alta no conversor A/D. Porém quando eu fiz isso com PIC (utilizando PICC como compilador) fiquei muito decepcionado com o resultado, simplesmente a conversão A/D do pic16f877A é ridicula... Alguem pode confirmar quanto tempo o pic leva para fazer essa conversão??
abraços

Enviado:
05 Mar 2008 16:32
por fabim
Amigo o datasheet do dito cujo tem essas informações bem destacadas.
Não confunda tempo de conversão, com tempo gasto pela função do PICC. São coisas totalmente diferentes.
Quando se precisa de velocidade e ja sabe como proceder, entra o lindo e maravilhoso ASM.
ASM
ENDASM;
Sou da forma que seu compilador compreenda.
Da uma estudadinha no asm da rotina de leitura que seu compilador tem na liby, com toda certeza ela perde muito tempo.
Fabim

Enviado:
05 Mar 2008 16:49
por ze
se tu consideras 1.6uS (de hw) para conversão como uma eternidade, sugiro que use outra solução (de + custo) para seu ad. É claro, some-se os tempos de entrada e saídas da função o que para xtal de 20MHz é desprezível. Mas creio que se fizer em asm não vai ganhar muita coisa não. O picc é superotimizado. Confira na sua lib. Tente ver o asm que ele gera pra sua func.
Nosso amigo neandertal está parcialmente correto: talvez seja os tempos de suas OUTRAS funções. Não só a do ad.
abrçs

Enviado:
05 Mar 2008 16:54
por fabim
lellis escreveu:Nosso amigo neandertal está parcialmente correto
Sugiro um pouco mais de respeito e cuidado com as palavras.
Até hoje nunca me desentendi com ninguem aqui no forum em 4 anos, espero que não seja você o primeiro.

Enviado:
05 Mar 2008 17:10
por ze
amiguim nervosim por motivim picknim. tadim.
desculpe então.
nosso amigo neandertal está TOTALMENTE correto.
rs

Enviado:
05 Mar 2008 18:42
por proex
Vcs dois estão disputando pra ver quem é o mais bonito é?
O PIC pode fazer até 4.700 conversões por segundo. Claro se:
1- A impedância de saída do circuito que esta fornecendo a tensão, for bem baixa, e as rotinas de forem escritas em Assembler.
Se precisar de velocidade maior que essa, é melhor adotar um conversor externo com barramento SPI.

Enviado:
06 Mar 2008 08:50
por xultz
Ô Fabim, o Lellis tava fazendo brincadeira com o teu ícone, que é lazarento de feio, se acalma aê, poxa.

Enviado:
06 Mar 2008 09:32
por ze
o miguim deve ter um diodo no senso de humor. só ele pode brincá cu zoto. rs
sugestão eletrocriptoliterográfica:
troque seu varistor que está no seu pino irritabilidade por um de menor tensão. Tenho um Amigo que fornece um tipo especial variável. Ele é peculiar: só consigo baixar a voltagem (maior proteção) e não posso ligar no terra e sim num fio especial que Ele fornece. Ele me disse que usa a energia do fio pra converter alguma coisa em outra ou alguém em outro e bláblábá que não entendi m**** nenhuma. Mas ele pediu pra tomar cuidado com o fornecedor concorrente.
Ei, mestre, desculpe pelo neandertal. Pode ser homoerectus? homohabilis? homosapiens? quase homo? homoss...? numdeu! rsrsrs
aloprô perdeu a razão. rsrsrsrs
Aí em orlândia tem rio? qquer apareço aí pra gente pescá!!
1 forte abraço!!
*/
#endofftopic

Enviado:
06 Mar 2008 11:38
por Bardelli
Calma Pessoal..
Para vcs terem uma idéia como estou p da vida com isso, eu estou conseguindo um tempo de conversao acima de 1 segundo no Osciloscopio
Aqui vai o código:
#include <16F877.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT,NOLVP
unsigned long int a,b;
#int_EXT
EXT_isr()
{
a=a+1;
}
void main()
{
unsigned int freq;
unsigned int freqp;
enable_interrupts (global);
enable_interrupts (int_ext);
setup_ADC_ports(RA0_analog);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
a=0;
while (1)
{
a=0;
delay_ms(100);
b=a;
freq=b*3;
freqp=read_adc();
if(freq>=freqp)
output_low(pin_c1);
else
output_high(pin_c1);
}
}

Enviado:
06 Mar 2008 12:30
por LeandroPIC
ha mas é CCS ai fodi tudo mesmo!
Primeiro troque de compilador pode ser o Hitech, ai vc abilita a int do conversor AD e não use o clock interno esse e muito lento e é claro use um cristal de 20MHZ.

Enviado:
06 Mar 2008 14:30
por Bardelli
Putz achei o erro...
O problema éra a Taxa de REFRESH do meu Osciloscópio.....
Diminui a escala de tempo nele, e ai sim consegui ver as coisas em tempo real...
obrigado a todos..