TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Rick_x en 17 de Diciembre de 2009, 01:08:42

Título: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Rick_x en 17 de Diciembre de 2009, 01:08:42
nececito leer dos entradas ADC de forma simultanea es decir que la muestra de ambas señales se tome al mismo instante, estoy usando la pic 16F877A
como puedo hacer esto???

la otra duda que tengo es si uso conversion ADC de 10 bit requiero una variable de entera de 16 bit para almacenar el valor leido del ADC, pero en MPLAB v8, no me permite definir  int16 ni tampoco Long que puedo hacer para solucionarlo

muchisimas gracias de antemano
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: MLO__ en 17 de Diciembre de 2009, 01:40:02
Hola.

Creo que eso no se puede hacer (fijate en el datasheet, figura 11-1, pagina 129).

MPLAB es el IDE, mas no el compilador. Que compilador usas?

Saludos
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Suky en 17 de Diciembre de 2009, 06:15:37
No, no se puede hacer, porque las entradas analógicas están multiplexadas a un único conversor A/D por aproximaciones sucesivas.


Saludos!
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Rick_x en 17 de Diciembre de 2009, 12:23:00
Primero, Gracias por responder

Estoy usando CCS C compiler, cuando escribo int16 para usar una variable a la que le asigno la lectura del conversor, no reconoce el comando, habitualmente deberian cambiar a azul las letras de int16, pero no ocurre y esto me genera un error. bueno ahora identifico mi variable como long y esto funciona, pero aun me queda la duda de porque no funciona int16.

Me pueden recomendar algún microcontrolador PIC que si permita hacer conversón analógica de dos entradas de forma simultanea, osea una pic qeu tenga dos ADC.

muchas gracias.

Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: migsantiago en 17 de Diciembre de 2009, 12:31:25
Hola, me parece que si declaras int en mplab o c18 se genera una variable signed de 16 bits. Checa la ayuda de C18 para confirmar lo que te digo.

Sobre un pic que cuente con 2 ADCs internos no los encontré en microchip.com. Talvez te convenga usar el ADC interno del pic para una señal y un ADC externo para otra. Así disparas la medición simultáneamente.
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: gera en 17 de Diciembre de 2009, 12:39:01
Hola!! Podes multiplexar en tiempo la lectura del ADC de la siguiente manera:

Código: C
  1. void ADC_GetAllAxis(void)
  2. {
  3.    set_adc_channel(0);
  4.    delay_us(20);
  5.    Sample_X=read_adc();
  6.    
  7.    set_adc_channel(1);
  8.    delay_us(20);
  9.    Sample_Y=read_adc();
  10. }

saludos!!
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: migsantiago en 17 de Diciembre de 2009, 13:03:24
Cierto, talvez 20us no afecten su medición simultánea.
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Rick_x en 17 de Diciembre de 2009, 13:55:45
Muy buena idea multiplexar en tiempo.

no afecta para nada los 20us el tiempo entre cada lectura del puerto ADC para cada señal lo haré cada 250 us

aun no puedo solucionar el problema de int16,
int es para 8 bit
y necesito int16 para la lectura del ADC que es de 10bit


muchisimas gracias a todos
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: migsantiago en 17 de Diciembre de 2009, 14:05:35
aun no puedo solucionar el problema de int16,
int es para 8 bit
y necesito int16 para la lectura del ADC que es de 10bit


muchisimas gracias a todos

En la página 82 de este documento se muestra que un int en C18 de MPLAB es de 16 bits.

http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_C18_Getting_Started_51295f.pdf
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Suky en 17 de Diciembre de 2009, 14:22:40
Pero esta usando C18 o CCS C?  :?

Porque en C18 no existe int16! Se debe colocar unsigned int para indicar una variable de 16 bits sin signo.


Saludos!
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Rick_x en 17 de Diciembre de 2009, 15:08:45
estoy usando el compilador CCS :-)
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: MLO__ en 17 de Diciembre de 2009, 15:32:39
Hola.

En CCS no te cambia el color al escribir int16, pero si es un tipo de variable valido, así como el int8 y el int32.

Saludos
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: Suky en 17 de Diciembre de 2009, 15:59:59
Hola.

En CCS no te cambia el color al escribir int16, pero si es un tipo de variable valido, así como el int8 y el int32.

Saludos

En realidad si, por lo menos en la 4.093 y que me acuerde en las anteriores igual  :?

Saludos!
Título: Re: como usar dos entradas ADC que muestreen simultaneamente 16f877a
Publicado por: migsantiago en 17 de Diciembre de 2009, 18:16:21
Lo que ha de pasar es que tiene vinculado CCS en el IDE de MPLAB y por eso talvez no se colorea la palabra.

Pero si usa CCS entonces int8, int16 e int32 son válidos.