Está en la página 1de 2

// se adquieren 2 seales analogicas via USB CDC la cual se visualiza en labview #include <18F4550.h> // Definicin de registros internos.

#device ADC=10 //eleccion de la resolucion del ADC en este caso 10 bits #fuses XTPLL,PLL1,CPUDIV1,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,VREGEN,NOPBA DEN #use delay(clock=48000000) // Frecuencia mxima de trabajo. #BYTE ADCON1 = 0x0FC1 // se gestiona el registro a traves de la ram en dicha dir reccion // Fuses utilizados: /* XTPLL: utilizamos un cristal xt MCLR: Utilizamos reset por hardware NOWDT: No utilizamos el perro guardan. NOPROTECT: Desactivamos la proteccin de cdigo. NOLVP: Desactivamos la programacin a bajo voltaje. NODEBUG: No entramos al modo debug. USBDIV: signfica que el clock del usb se tomar del PLL/2 = 96Mhz/2 = 48Mhz. PLL1: significa que el PLL prescaler dividir en 1 la frecuencia del cristal.4Mhz/ 4 = 4Mhz necesarios para el PLL. CPUDIV1: El PLL postscaler decide la divisin en 2 de la frecuencia de salida del PLL de 96MHZ, si queremos 48MHZ, lo dejamos como est. VREGEN: habilita el regulador de 3.3 volts que usa el mdulo USB */ #include "usb_cdc.h" // Descripcin de funciones del USB. #include "usb_desc_cdc.h" // Descriptores del dispositivo USB. float resolucion=5.0/1023.0; //se declara la variable resolucion la cual almacen ara el valor de la resolucion del adc float voltaje=0; float voltajedos=0; char a='a',b='b';

void tomacero_adc(void){ set_adc_channel(0); //Seleccin del canal 0 (RA0) delay_ms(1); //estabilizacion del adc voltaje=resolucion*read_adc();//se guarda el valor leido en el canal 0 delay_ms(1); //estabilizacion del adc } void tomauno_adc(void){ set_adc_channel(1); //Seleccin del canal 1 (RA1) delay_ms(1); //estabilizacion del adc voltajedos=resolucion*read_adc();//se guarda el valor leido en el canal 1 delay_ms(1); //estabilizacion del adc } void main() { setup_adc(adc_clock_internal); //frecuencia a la cual se van a tomar la mues tras en este caso la misma del reloj

ADCON1=0b1010;

//puerto A entradas analgicas:RA0,RA1,RA2,RA3, y RA5

usb_cdc_init(); // Configuramos al puerto virtual. usb_init(); // Inicializamos el stack USB. while(!usb_cdc_connected()){} // espera a detectar una transmisin de la PC (Se t_Line_Coding). do{ usb_task(); if (usb_enumerated()){ // Espera a que el dispositivo sea enumerado por el h ost. tomacero_adc(); printf(usb_cdc_putc,"%c",a); printf(usb_cdc_putc,"%.2g\r",voltaje); delay_ms(10); tomauno_adc(); printf(usb_cdc_putc,"%c",b); printf(usb_cdc_putc,"%.2g\r",voltajedos); delay_ms(10); } }while (TRUE); // bucle infinito. }

También podría gustarte