TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kaki en 03 de Agosto de 2010, 20:31:33
-
Hola.
Tengo una duda y es en la configurancion del PIC18F2550 para usar la conversión Analógico-Digital.
La duda es lo siguiente:
setup_adc(ADC_CLOCK_DIV_8);
En esta parte no entiendo bien, osea no si yo uso un cristal esterno de 20MHz y no se si esta bien eso.
Con respeto a esta parte:
set_adc_channel(0);
Aca se elije el Pin donde van a entrar los datos Analogicos??
Saludos perdon por la inoracia!!
-
leyendo encontre que cuando usas un cristalde 20MHz tengo q configurarlo asi:
setup_adc(ADC_CLOCK_DIV_32);
ahora lo que no encontre es el ¿Por Que?
-
Revisa por aquí (http://www.infopic.comlu.com/joomla/index.php/modulo-de-conversion-analogica-16f18f), hay una explicación del funcionamiento para que puedas configurarlo adecuadamente.
saludos!
-
kaki, como puedes ver, Suky ha hecho tan lindos tutoriales en base a lo que dice la datasheet.
Ahi en la datasheet seguro encontraras algunos detalles mas que te ayudaran a configurar correctamente el ADC de acuerdo a tu necesidad particular.
Saludos
-
ya lo lei eso y no entiendo eso del Fosck/32,etc esa es la parte que necesito q me expliquen.
Gracias
-
ya lo lei eso y no entiendo eso del Fosck/32,etc esa es la parte que necesito q me expliquen.
Gracias
Fosc= frecuencia del oscilador externo o interno. 32 una constante seleccionable según divisor de frecuencia :mrgreen:
kaki, como puedes ver, Suky ha hecho tan lindos tutoriales..
Gracias! :oops: :D :D
Saludos.
-
los valores del registro ADCON2 debes ajustarlos a tu necesidad, y los puedes determinar los valores de la practica.
Por ejemplo:
ACQT2-ACQT0 seleccionas el tiempo de adquisición, y
ACDS2-ACDS0 seleccionas el reloj para la conversion
Por ejemplo, el otro dia estaba con unas entradas analogicas usando unos potenciometros para un joystick, y fui ajustando los valores hasta obtener una señal que fuera el equilibrio entre oscilacion y tiempo de ejecucion del bucle principal del programa.
-
a mi me parece que ese valor es para aprovechar al maximo lo que la frecuencia de Osc y en el datasheet ponen el valor recomendado para cada caso
-
Muchas gracias a todos
-
una pregunta que la verdad verdad no encuentro se por que.
Por multiploco * 0.48875 cuando pasa de lo que capturo el ah ºC
A=(Medicion*(0.48875));
lo que tambien noto que el valor de referencia cuando lo cambio cambia el resultado.Por ejemplo probe con estos 2
#device adc= 8#device adc=10
Los resultados son distintos... por que??
-
esa es la resolucion del ADC, con ADC=8 quiere decir que el ADC convertira tu señal analoga en un dato de 8 bits.
Con ADC=10 tendras una conversion de 10bits.
-
Gracias... y como le asigno el voltaje de referencia?? o el voltaje de referencia es el que tengo antes de q llegue al comparador... a ver si me explico mejor.
FUENTE 5V --> Res --> COMVERSOR ANALOGICO DIGITAL
La fuente seria mi voltaje de referencia??
-
De forma general, para el pic que uses, dale una mirada a la carpeta "devices" en donde tienes instalado el compilador, ahi encontraras la forma de configurar los modulos que posea dicho PIC
-
esta parte seria:
////////////////////////////////////////////////////////////////// ADC
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() (aka SETUP_PORT_A),
// SET_ADC_CHANNEL(), READ_ADC()
// Constants used for SETUP_ADC() are:
#define ADC_OFF 0 // ADC Off
#define ADC_CLOCK_DIV_2 0x100
#define ADC_CLOCK_DIV_4 0x04
#define ADC_CLOCK_DIV_8 0x01
#define ADC_CLOCK_DIV_16 0x05
#define ADC_CLOCK_DIV_32 0x02
#define ADC_CLOCK_DIV_64 0x06
#define ADC_CLOCK_INTERNAL 0x07 // Internal 2-6us
// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS 0x0F // None
#define ALL_ANALOG 0x00 // A0 A1 A2 A3 A5 B2 B3 B1 B4 B0
#define AN0_TO_AN11 0x03 // A0 A1 A2 A3 A5 B2 B3 B1 B4
#define AN0_TO_AN10 0x04 // A0 A1 A2 A3 A5 B2 B3 B1
#define AN0_TO_AN9 0x05 // A0 A1 A2 A3 A5 B2 B3
#define AN0_TO_AN8 0x06 // A0 A1 A2 A3 A5 B2
#define AN0_TO_AN4 0x0A // A0 A1 A2 A3 A5
#define AN0_TO_AN3 0x0B // A0 A1 A2 A3
#define AN0_TO_AN2 0x0C // A0 A1 A2
#define AN0_TO_AN1 0x0D // A0 A1
#define AN0 0x0E // A0
#define AN0_TO_AN11_ANALOG 0x03 //!old only provided for compatibility
#define AN0_TO_AN10_ANALOG 0x04 //!old only provided for compatibility
#define AN0_TO_AN9_ANALOG 0x05 //!old only provided for compatibility
#define AN0_TO_AN8_ANALOG 0x06 //!old only provided for compatibility
#define AN0_TO_AN4_ANALOG 0x0A //!old only provided for compatibility
#define AN0_TO_AN3_ANALOG 0x0B //!old only provided for compatibility
#define AN0_TO_AN2_ANALOG 0x0C //!old only provided for compatibility
#define AN0_TO_AN1_ANALOG 0x0D //!old only provided for compatibility
#define AN0_ANALOG 0x0E //!old only provided for compatibility
// The following may be OR'ed in with the above using |
#define VSS_VDD 0x00 // Range 0-Vdd
#define VREF_VREF 0x30 // Range VrefL-VrefH
#define VREF_VDD 0x20 // Range VrefL-Vdd
#define VSS_VREF 0x10 // Range 0-VrefH
// Constants used in READ_ADC() are:
#define ADC_START_AND_READ 7 // This is the default if nothing is specified
#define ADC_START_ONLY 1
#define ADC_READ_ONLY 6
-
exacto, fijate que ahi te dice como se escribe la funcion y seguidamente las posibles configuraciones.
-
me quedaria asi:
setup_adc_ports(AN0|VSS_VDD); para q sea de 0 a 5v ??
-
me quedaria asi: setup_adc_ports(AN0|VSS_VDD); para q sea de 0 a 5v ??
Exacto
-
bien ya lo logre hacer andar.. Muchas gracias.. la unica duda que me quedo
SETUP_ADC(ADC_CLOCK_DIV_32)
No entiendo como se cual tengo que usar dependiendo de mi oscilador.
-
bien ya lo logre hacer andar.. Muchas gracias.. la unica duda que me quedo
SETUP_ADC(ADC_CLOCK_DIV_32)
No entiendo como se cual tengo que usar dependiendo de mi oscilador.
En el articulo que indique anteriormente se explica ese detalle, hay mínimos que hay que cumplir y a partir de allí determinar esos valores.
Saludos!
-
Hola SUky, vi en un mensaje tuyo http://www.todopic.com.ar/foros/index.php?topic=31540.0
que seteabas vss y vdd como referencia para el comparador analogico con la siguiente sentencia
setup_adc_ports(AN0|VSS_VDD);
a mi no me andubo en mi ccs, 4.104, me podes ayudar? me tira este error:
*** Error 12 "main.c" Line 678(21,28): Undefined identifier VSS_VDD
Podes abrir el *.h del microcontrolador que se encuentra en PICC/Devices/ y allí ver las distinas opciones de configuración que presenta la función setup_adc_ports
Puede que haya cambiado de nombre en esta versión.
Saludos!