TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Keiper en 16 de Febrero de 2006, 04:48:00
-
Estoy trabajando con el compilador CCS y tengo un problema cuando realizo la conversion porque no se donde me guarda ls 10 bits del resultado de la conversion.
Asi como en ensamblador estan los registros ADRESH y ADRESL , hay algún registro en el CCS donde se guarden estos valores?
Yo hago lo siguiente:
setup_port_a( RA0_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL);
set_adc_channel( 0 );
delay_ms( 50 );
value = read_adc();
que tendré en value?
GRACIAS
-
Escrito originalmente por Keiper
Estoy trabajando con el compilador CCS y tengo un problema cuando realizo la conversion porque no se donde me guarda ls 10 bits del resultado de la conversion.
Asi como en ensamblador estan los registros ADRESH y ADRESL , hay algún registro en el CCS donde se guarden estos valores?
Yo hago lo siguiente:
setup_port_a( RA0_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL);
set_adc_channel( 0 );
delay_ms( 50 );
value = read_adc();
que tendré en value?
GRACIAS
Es el resultado que devuelve la función read_adc() que si no me equivoco te devolverá un resultado de 16 bits. Consulta el manual y ten cuidado de si usas justificacion izquierda creo que te tomará valores realmente altos pero este punto no lo recuerdo ya que hace tiempo no uso el ccs.
Saludos
-
Un valor de 16 bits??? No creo que esto sea asin porque el conversor analogico digital de la serie 16F87X es de como màximo 10 bit de resolucion. La funcion read_adc() te devolvera el resultado de la conversion con el numero de bits que hayas definido.
Salu2
-
Escrito originalmente por piriots
Un valor de 16 bits??? No creo que esto sea asin porque el conversor analogico digital de la serie 16F87X es de como màximo 10 bit de resolucion. La funcion read_adc() te devolvera el resultado de la conversion con el numero de bits que hayas definido.
Salu2
Creo que el confundido eres tu.
La funcion read_adc() devuelve un valor de 16 bits, que los 6 primeros bits sean 0 es otra cuestión.
En C no hay variables de "10 bits".
Una cosa es que "valor" tomará la función y otra es el "tipo de valor" que devolverá la funcion.
Saludos
-
Escrito originalmente por Keiper
Estoy trabajando con el compilador CCS y tengo un problema cuando realizo la conversion porque no se donde me guarda ls 10 bits del resultado de la conversion.
Asi como en ensamblador estan los registros ADRESH y ADRESL , hay algún registro en el CCS donde se guarden estos valores?
Yo hago lo siguiente:
setup_port_a( RA0_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL);
set_adc_channel( 0 );
delay_ms( 50 );
value = read_adc();
que tendré en value?
GRACIAS
Mira hay varios detalles, para ocupar el adc en CCS primero tienes que definir con cuantos bits deseas trabajar con el ADC, con la siguiente directiva, la cual va al inicio del código:
#DEVICE ADC= 8 , lo cual quiere decir que trabajaras con 8 bits menos signifiativos del ADC., Aqui te pongo las demás opciones:
#DEVICE-----8 bit-------10 bit--------11 bit--------16 bit
ADC=8-------00-FF------00-FF--------00-FF--------00-FF
ADC=10-----x------------0-3FF---------x --------x
ADC=11-----x------------ x--------------0-7FF-------x
ADC=16-----0-FF00-----0-FFC0--------0-FFEO---- 0-FFFF
Note: x is not defined
Respondiendo tu pregunta, depende que que directiva estes ocupando, value puede ser de 8 o 16 bits
Si #DEVICE ADC = 10 entonces value debe ser de 16 bits, pero el máximo valor que podras esperar es de 0x03FF
Si #DEVICE ADC= 8 entonces value debera ser de 8 bits, pero el máx valor que puedes esperar es 0xFF= 255
Espero haberte ayudado......................SALUDOS
-
Tienes toda la razon maunix!!! Claro, si son 10 bit de resolucion lo ha de guardar en una variable de 16.
Salu2
-
OK!!!! Lo tengo clarísimo, moltes gracies per tot, con ayuda asi todo resulta más fácil. Saludos