TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pantera en 14 de Diciembre de 2006, 16:41:36
-
Hola
Estoy configurando el ADC y estoy muestreando señales para ver un sistema que tengo cual es la maxima frecuencia de muestreo. Sin embargo por lo que se de los microcontroladores PIC16 hay una frecuencia maxima. Sin embargo nose muy bien como debo de realizar la configuracion.
Y cuales son las cuentas que debo tomar en cuenta. He revisado la hoja de datos pero no estoy muy claro. Alguien podria ayudarme.
El codigo principal es el siguiente.
#include <18F4550.h>
#device adc=10
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN,NOBROWNOUT
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main(void)
{
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_64);
set_adc_channel( 0 );
while (TRUE) {
ADC0=read_adc();
printf("%lu\n\r",ADC0);
}
}
-
Pantera, usas baud=115200 :)
Tienes hipperterminal para hacer una aproximacion? Puedes grabar en TXT los dados recebidos por um tiempo determinado, y hacer la division referente a Aquisicion(lineas grabadas en TXT) y tiempo (algunos minutos para diminuir o erro). Por ejemplo, 225000 aquisicion en 5 minutos = 750 aquision per segundo.
-
Hola pantera, puedes medir una aproximación, mediante un simulador, en el código que pusiste puede colocar un nop que en C sería delay_cycles(1)
ADC0=read_adc();
delay_cycles(1);
printf("%lu\n\r",ADC0);
ahora colocas un BreakPoint en en ADC0=read_adc(); y otro en delay_cycles(1); luego corres el código hasta que pare en el primer BP, tomas el tiempo, arrancas de nuevo y espera a que pare en el segundo nop, tomas ese tiempo y restas con el primero, ese será el tiempo que tardaría (relativamente) el CAD.
si usas el mplab, tendrás que asignar el tiempo de la conversión (usando los calculos teoricos) y sumarselos a los otros ciclos de instrucciónes ejecutados.
dependiendo del código que tengas para el muestreo completo debes elegir exactamente donde termina el código que conforma el bucle (para que cumpla una muestra) y pegas un nop, ó simplemente colocas un BP en esa línea.
Salu2
Pedro
-
Gracias.
Pues finalmente lo que hice fue precionar un boton y apagar con un segundero en mano.
Realice la operacion varias veces y al menos creo que por cada segundo tengo como dos mil datos
Solo me falta un osciloscopio y en generador para probar si lo que digo no es mentira.