Autor Tema: Explicacion INT_AD y Touch Capacitivo por favor....  (Leído 21803 veces)

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

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Explicacion INT_AD y Touch Capacitivo por favor....
« en: 23 de Diciembre de 2012, 22:35:15 »
Hola gente....

pues vereis, estoy buscando informacion sobre las interrupciones producidas por el ADC del 18f4550 para poder sacar el ucontrolador del sleep mediante una pulsacion del touch capacitivo... el problema es que no encuentro casi nada, solo ejemplos un poco nublados ya que no sale ningun esquema ni explicacion de como se debe de actuar para checar un pulsacion...

como son los pasos que se deben de seguir para que actue la interrupcion? dentro de ella.... como se debe hacer para leer el valor? se podrian leer las 4 entradas ADC desde que actua la interrupcion? no se la verdad... estoy liado y no paro de modificar mi proyecto pero no doy con la solucion....
Aqui en el foro lei en este POST que primero se debe de cargar el condensador de retencion y descargar el de sensado.... no lo pillo... la verdad

por favor decidme los pasos a seguir a grandes rasgos, no busco soluciones, si no la secuencia a seguir explicada por que mi cabeza ya va a petar....
gracias y un saludo a la peña
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #1 en: 24 de Diciembre de 2012, 03:19:29 »
La interrupción del ADC no se ejecuta cuando hay un cambio en la entrada analógica. Funciona de la siguiente forma:
- solicitas una conversión adc
- activas la interrupción int_ad
- suspendes al micro con sleep
- el micro despertará cuando haya terminado la conversión adc y tengas el dato disponible

Puedes ver el proceso en la página 263 de la data:
http://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf

Para hacer lo que quieres, yo usaría la interrupción del timer. Así, tienes al micro dormido durante, por ejemplo, 10ms. Cada periodo se despierta, chequea las entradas ADC y si no detecta pulsación se vuelve a dormir.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #2 en: 24 de Diciembre de 2012, 06:05:44 »
gracias por contestar Nocturno, la verdad es que si me conviene utilizar el timer0 para comprobar las entradas de los pulsadores.... lo habia pensado como segunda opcion si no hacia funcionar la interrupcion int_ad o esta, no se ajustaba a mis necesidades.... cosa que no se ajusta
la otra gran duda que tengo es la de los touchs capacitivos, en el post que puse se puede ver como pone a 1 el estado de la salida del A1 y seguidamente comprueba hace lo mismo con el A0.....
Código: [Seleccionar]
while(TRUE){
     set_tris_a(0b11111100); //Drive secondary channel to VDD as digital output.
     output_high(PIN_A1);
     set_adc_channel(1); //Point ADC to the secondary VDD pin (charges CHOLD to VDD)
     
     output_low(PIN_A0); //Ground sensor line.
     set_tris_a(0b11111101); //Turn sensor line as input (TRISx = 1).
     set_adc_channel(0);//Point ADC to sensor channel (voltage divider from sensor to CHOLD).
     
     value=read_adc();//Begin ADC conversion.
     printf("%lu\n",value);
     delay_ms(50);
  } 


que explicacion hay que para comprobar un valor cambie el estado del A1 si lo que se desea es comprovar el del A0?
primero se debe de cargar el condensador de retencion(imagino que es el condensador conectado exteriormente al pin) y descargar el de sensado(es el que lleva interiormente el pic) no es asi?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...


Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #4 en: 24 de Diciembre de 2012, 09:39:56 »
Sí, esa técnica se llama CVD. Puedes verla explicada aquí:
http://ww1.microchip.com/downloads/en/AppNotes/01298A.pdf


el ingles no es lo mio Nocturno.... uso el traducctor de google pero no me queda aun claro el por que utiliza el canal1 si lo que se quiere en el ejemplo es obtener la medicion del canal0
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #5 en: 24 de Diciembre de 2012, 09:58:46 »
http://www.youtube.com/watch?v=0GmIkyEzHnk&feature=endscreen&NR=1

aqui se explica graficamente.... pero no aparece nada de otro canal del ADC....
como llenar o como vaciar el Condensador de censado? cambiando el estado del pin a alto se llena? seleccionado el canal se vacia?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #6 en: 24 de Diciembre de 2012, 13:32:49 »
1. Drive secondary channel to VDD as digital
output.
2. Point ADC to the secondary VDD pin (charges
CHOLD to VDD).
3. Ground sensor line.
4. Turn sensor line as input (TRISx = 1).
5. Point ADC to sensor channel (voltage divider
from sensor to CHOLD).
6. Begin ADC conversion.
7. Reading is in ADRESH:ADRESL

1.- Establece el canal secundario como salida digital a nivel alto
2.- Selecciona en el ADC al canal secundario (cargará el condensador)
3.- Tira a tierra la línea que vas a sensar (salida a nivel bajo)
4.- Pon la línea a sensar como entrada
5.- Selecciona en el ADC la línea a sensar
6.- Comienza la conversión ADC
7.- Lee el resultado

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #7 en: 24 de Diciembre de 2012, 16:59:06 »
Nocturno, gracias de nuevo por la ayuda
Sí quisiera sensar los canales 2 3 y 4 debería de hacerlo correlativamente siguiendo los pasos que tú me has descrito no?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #8 en: 25 de Diciembre de 2012, 03:00:23 »
Sí, tienes que ejecutar ese proceso con cada pin a sensar.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #9 en: 25 de Diciembre de 2012, 15:13:52 »
hace un rato que he llegado a casa para probar lo aprendido gracias a nocturno.... bueno, pruebo el primer boton touch conectado en el conversor del canal 0 y va perfecto.... el primer boton esta operativo ya...
el problema viene con el segundo boton que esta conectado al canal1...


set_tris_a(0x11111100);               //este va perfecto
   output_high(PIN_A1);
   set_adc_channel(1);
   output_low(PIN_A0);
   set_tris_a(0x11111101);
   set_adc_channel(0);
   valor_ADC[1]=read_adc();
   
   
   set_tris_a(0x11111001);           //este no va
   output_high(PIN_A2);
   set_adc_channel(2);
   output_low(PIN_A1);
   set_tris_a(0x11111011);
   set_adc_channel(1);
   valor_ADC[2]=read_adc();

hay que utilizar un canal "vacio" para cargar el condensados de sensado?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #10 en: 25 de Diciembre de 2012, 16:49:21 »
Prueba así:

Código: [Seleccionar]
   output_high(PIN_A2);
   set_adc_channel(2);
   output_low(PIN_A0);
   output_float(PIN_A0);
   set_adc_channel(0);
   valor_ADC[1]=read_adc();
   
   output_high(PIN_A2);
   set_adc_channel(2);
   output_low(PIN_A1);
   output_float(PIN_A1);
   set_adc_channel(1);
   valor_ADC[2]=read_adc();

No es necesario establecer los tris, porque con los comandos output_x el compilador CCS establece la dirección automáticamente.
Y he usado el canal 2 como canal comodín para cargar el condensador, sensando primero el 0 y luego el 1.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #11 en: 25 de Diciembre de 2012, 17:37:21 »
Prueba así:

Código: [Seleccionar]
   output_high(PIN_A2);
   set_adc_channel(2);
   output_low(PIN_A0);
   output_float(PIN_A0);
   set_adc_channel(0);
   valor_ADC[1]=read_adc();
   
   output_high(PIN_A2);
   set_adc_channel(2);
   output_low(PIN_A1);
   output_float(PIN_A1);
   set_adc_channel(1);
   valor_ADC[2]=read_adc();

No es necesario establecer los tris, porque con los comandos output_x el compilador CCS establece la dirección automáticamente.
Y he usado el canal 2 como canal comodín para cargar el condensador, sensando primero el 0 y luego el 1.

perfecto, gracias nocturno.... yo los iva haciendo correlativamente por eso no me funcionaba... usana el canal 0 y 1, despues el 1 y 2, 2 y 3.... ahora si que si....
ahora mirare de poner a dormir el micro y comprobar con el timer1 cuando se desborde que se ha pulsado algun mtouch y de no ser asi a dormir otra vez....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #12 en: 29 de Diciembre de 2012, 17:06:03 »
Una pregunta me tiene algo intrigado, que hace diferentes a los pics que implementan los touch en su arquitectura a los que no la llevan?
Los que tienen este tipo de hardware la lectura es de idéntica forma que el resto?
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #13 en: 29 de Diciembre de 2012, 19:36:42 »
En esos Pics el hardware ya resuelve mucho de esto que has logrado con programación...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Explicacion INT_AD y Touch Capacitivo por favor....
« Respuesta #14 en: 29 de Diciembre de 2012, 21:14:25 »
En esos Pics el hardware ya resuelve mucho de esto que has logrado con programación...

ya estube dandole un vistazo a la web del ccs.... asi se miran.... con estas funciones.... gracias MGLSOFT... siempre estais los mejores para solventar las dudas....

#USE TOUCHPAD ( )
touchpad_state( )
touchpad_getc( )
touchpad_hit( )
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...


 

anything