Autor Tema: conversion A/D 16f876  (Leído 3398 veces)

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

Desconectado Keiper

  • PIC10
  • *
  • Mensajes: 10
conversion A/D 16f876
« 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


Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: conversion A/D 16f876
« Respuesta #1 en: 16 de Febrero de 2006, 06:09:00 »
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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: conversion A/D 16f876
« Respuesta #2 en: 16 de Febrero de 2006, 06:25:00 »
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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: conversion A/D 16f876
« Respuesta #3 en: 16 de Febrero de 2006, 07:07:00 »
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
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado grouchy

  • PIC10
  • *
  • Mensajes: 39
RE: conversion A/D 16f876
« Respuesta #4 en: 16 de Febrero de 2006, 08:54:00 »
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

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: conversion A/D 16f876
« Respuesta #5 en: 16 de Febrero de 2006, 14:57:00 »
Tienes toda la razon maunix!!! Claro, si son 10 bit de resolucion lo ha de guardar en una variable de 16.

Salu2

Desconectado Keiper

  • PIC10
  • *
  • Mensajes: 10
RE: conversion A/D 16f876
« Respuesta #6 en: 20 de Febrero de 2006, 05:04:00 »
OK!!!! Lo tengo clarísimo, moltes gracies per tot, con ayuda asi todo resulta más fácil. Saludos


 

anything