Autor Tema: ADC ¿Que hago mal?  (Leído 2586 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kn

  • PIC10
  • *
  • Mensajes: 6
ADC ¿Que hago mal?
« en: 30 de Julio de 2007, 13:22:20 »
Tengo un problemilla, pero antes de nada queria advertir que soy novato del todo en esto.

Estuve viendo el tema y probando y no consigo obtener un resultado satisfactorio con el conversor ADC (valores metidos con un potenciometro)

Probe con el firmware que hay en la pagina de un forero de aquí (redpic) y recogiendo los datos con un programa hecho visual basic en vez
de delphi como utiliza el. El programa en Visual Basic tambien me base en el codigo de otro forero (PICUSB en VB).


Bueno, en principio conseguí fácilmente (a pesar de lo novato que soy) encender un led y apagarlo con el programa en visual basic y leer la version devuelta por
el pic pero luego queria probar el conversor adc así que le meti un potenciometro consiguiendo valores pero varian normalmente entre tres valores sin mover
el potenciometro.


En el codigo del pic añadi:
...
   setup_adc_ports(AN0_TO_AN3|VSS_VDD);
   setup_adc( ADC_CLOCK_DIV_64 );
...

Y luego:

            if(RecCommand==COMMAND_GETADC1){
               set_adc_channel(0);
               delay_ms(30);
               value = Read_ADC();
               usb_put_packet(1,value,1, USB_DTS_TOGGLE);
            }


Luego con visual basic envio '3' (COMMAND_GETADC1) y ejecuto:

 Call MPUSBRead(myInPipe, VarPtr(data(0)), 1, SentDataLength, 1000)

Y recibo datos pero no fijos, alternan por ejemplo entre 0,36,100 siempre igual y si muevo
el potenciometro cambia pero entre otros tres valores.

¿Que hago mal?

Desconectado kn

  • PIC10
  • *
  • Mensajes: 6
Re: ADC ¿Que hago mal?
« Respuesta #1 en: 31 de Julio de 2007, 13:52:48 »
Después de horas y horas de probar (ya me estaba desquiciando) y leer ejemplos que había por el foro y fuera de este
conseguí averiguar que tenia mal gracias a un post por ahí que mencionaba que habia que guardar el valor en un array :(

En definitiva no era problema de Visual Basic si no del código del pic que tenia:

int value
...
value=read_adc()

Y había probado con todo int/int8 long... menos con int value[1] :(

Una vez cambiada esa linea todo de maravilla excepto mi cabeza que esta destrozada y rayada  :mrgreen: