Hola a todos y Feliz Año 2005 !!! Les deseo lo mejor para ustedes y sus familias y que cada día aprendamos más y más cosas.
Bueno, pues tengo un pequeño problema... resulta que quiero muestrear dos señales, una por el canal A0 y otra por el canal A1. Cuando solo trabajo con el canal A0 no tengo ningún problema (cabe señalar que las entradas las simulo con un generador de señales), pero cuando conecto el otro generador al canal A1, ambas señales adquiridas se distorsionan y no se que pueda ser, porque a la entrada del pic la señales llegan bien pero despues cuando las grafico en VB salen distorsionadas. Según yo es por las tierras pero no se. Bueno el código que utilizo es el siguiente:
Codigo:
#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#device ADC=10
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include<lcd.c>
long i, dato, muestras;
int tmuestreo;
char datohigh, datolow, temp;
void adquirir()
{
delay_us(tmuestreo);
dato = read_adc();
datolow=dato;
temp=(dato>>8);
datohigh=temp&3;
putc(datohigh);
putc(datolow);
}
main()
{
long dato;
char valor, canal;
int periodohigh, periodolow, muestrashigh, muestraslow;
int tmuestreo;
long periodo, muestras;
setup_adc_ports( ALL_ANALOG );
setup_adc( ADC_CLOCK_INTERNAL );
//set_adc_channel( 0 );
lcd_init();
while (TRUE)
{
while(!kbhit()); //Espera la recepcion de un caracter
valor=getc();
if (valor=="j")
{
output_high(PIN_B7);
putc("8");
while(!kbhit());
muestrashigh=getc();
while(!kbhit());
muestraslow=getc();
while (!kbhit());
periodohigh=getc();
while(!kbhit());
periodolow=getc();
muestras=muestrashigh*256+muestraslow;
periodo=periodohigh*256+periodolow;
tmuestreo=(100*periodo)/muestras;
lcd_putc("f");
lcd_gotoxy(1,1);
printf(lcd_putc,"p=%4lu",periodo);
lcd_gotoxy(9,1);
printf(lcd_putc,"m=%4lu",muestras);
lcd_gotoxy(1,2);
printf(lcd_putc,"tm=%3u",tmuestreo);
for (i=1;i<=muestras;i++)
{
set_adc_channel( 0 );
adquirir();
set_adc_channel( 1 );
adquirir();
}
}
}
}
Gracias