Autor Tema: Touch Rotary MPR083 y Touch Pads MPR084  (Leído 190678 veces)

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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #225 en: 10 de Septiembre de 2009, 22:07:55 »
Yo de nuevo (q pesado jeje). Me las he rebuscado con unos FET para comunicar el pic por el puerto serie de la pc, asi puedo ver q esta pasando. Escribi un programita q en cada operacion de lectura o escritura del bus i2c me diga q tal salio la operacion, y sobre el final me devuelve la lectura de los pads cada un segundo. Aca hay un log de una prueba q hice:
Código: [Seleccionar]
inicializando...
direccion 0x5D ack=1
registro de conf. 0x13 ack=1
reset ack=1
finaliza secuencia de inicio...
direccion 0x5D  ack=1 pads=FF
direccion 0x5D  ack=1 pads=00
direccion 0x5D  ack=1 pads=FF
direccion 0x5D  ack=1 pads=00
direccion 0x5D  ack=1 pads=00
direccion 0x5D  ack=1 pads=00

Parece q el integrado funciona ya q recibe los comandos, pero la lectura de los pads da cualquier cosa :? por q podra ser??

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Dark208

  • PIC10
  • *
  • Mensajes: 2
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #226 en: 11 de Septiembre de 2009, 20:17:26 »
hola gera, estuve viendo los comentarios de como NANO hizo funcionar el sensor y
posiblemente el problema que tengas sea debido al codigo del  microcontrolador.

Hago unas posibles correcciones al codigo fuente:

Código: C
  1. #include <16f877a.h>
  2. #fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
  3. #use delay(clock=4000000)
  4.  
  5. #use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3, force_hw, slow)
  6. #byte PORTB=0x106
  7.  
  8. void main(void)
  9. {
  10.   set_tris_b(0x00);
  11.  
  12.   PORTB=0xFF;
  13.   delay_ms(500);//retardo, por si acaso no da tiempo al esclavo a "inicializarse"
  14.  
  15.   i2c_start();// inicia condicion de start
  16.   i2c_write(0x5D<<1);    //direccion 0x5D               (no estabas respetando el bit de lectura escritura)
  17.   i2c_write(0x13);    //registro de configuracion
  18.   i2c_write(0b00010101);//resetea, modo2 (escaneo contínuo), habilita escaneo electrodos
  19.   i2c_stop();
  20.  
  21.   PORTB=0x00;
  22.   delay_ms(500);
  23.  
  24.   while(TRUE)
  25.   {
  26.      i2c_start();     // inicia condicion de start
  27.      i2c_write((0x5D<<1)|1);   //direccion 0x5D
  28.      i2c_write(0x02);   //direccion del touchpad status register
  29.      PORTB = i2c_read();    //touchpad status register  
  30.      i2c_stop();
  31.      delay_ms(100);
  32.   }
  33. }
  34.  

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #227 en: 11 de Septiembre de 2009, 21:22:12 »
Hola Dark208!! Tenes toda la razon, se me estaba escapando el bit de R/W, pasa q es mi primera vez con el bus i2c jeje. Ya suky me aclaro la duda y ahora estoy probando con este codigo:

Código: C
  1. #include <16f877a.h>
  2. #fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
  3. #use delay(clock=4000000)
  4.  
  5. #use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3, force_hw, slow)
  6. #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
  7.  
  8. #define addr_w 0xBA  // 0xb10111010
  9. #define addr_r 0xBB   // 0xb10111011
  10.  
  11. void main(void)
  12. {
  13.    char ack[3], pad=0;
  14.    disable_interrupts(GLOBAL);
  15.    
  16.    delay_ms(500);      //retardo, por si acaso no da tiempo al esclavo a "inicializarse"
  17.    printf("inicializando...\n");
  18.  
  19.    i2c_start();      // inicia condicion de start
  20.    ack[0] = i2c_write(addr_w);   //direccion 0x5D modo escritura
  21.    ack[1] = i2c_write(0x13);     //registro de configuracion
  22.    ack[2] = i2c_write(0b00010101);//resetea, modo2 (escaneo contínuo), habilita escaneo electrodos
  23.    i2c_stop();
  24.    
  25.    printf("addr_w = %d   reg.conf= %d   write= %d\n",ack[0],ack[1],ack[2]);
  26.    
  27.    while(TRUE)
  28.    {
  29.       i2c_start();
  30.       ack[0] = i2c_write(addr_r);
  31.       pad = i2c_read(0x02);    //touchpad status register  
  32.       i2c_stop();
  33.  
  34.       printf("ack = %d pad = %X\n",ack[0], pad);
  35.       delay_ms(500);
  36.    }
  37. }

Pero no anda ni pa atras, ni pa adelante. A veces los ack me dan 0, a veces 1, y el led q representa el sounder esta constantemente encendido. Asumo q es un problema de hardware, asiq me voy a armar otra plaquita y la voy a soldar con extremo cuidado. Eso si, tengo q esperar q me lleguen mas muestras porq se me acabaron, y pinta q tengo para esperar bastante.

Muchas gracias por la ayuda!!!
« Última modificación: 11 de Septiembre de 2009, 21:25:08 por gera »

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #228 en: 12 de Septiembre de 2009, 06:33:37 »
hola! Dark208 bnvenifo al foro!  8)...
importante descubrimiento muchachos.... olvidarse el primer bit R/W es un garron!... a mi tambien me paso en algun momento... suele ocurrir...
bueno a ver espero resultados gera...
saludos
 8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7871
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #229 en: 12 de Septiembre de 2009, 07:35:32 »
Tienen las resistencias de pullup del bus I2C colocadas??? :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Dark208

  • PIC10
  • *
  • Mensajes: 2
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #230 en: 12 de Septiembre de 2009, 11:38:06 »
gera, en el anterior comentario, hice dos correcciones:
1.  no considerabas el bit de r/w         (resuelto)
2.  no mandabas la direccion de memoria que querias leer

no se si estoy equivocado, pero me parece que la funcion i2c_read(0x02) es incorrecto
la ayuda del ccs dice lo siguiente:

Código: [Seleccionar]
Syntax:
             data = i2c_read();
             data = i2c_read(ack);
             data = i2c_read(stream, ack);

Parameters:
      ack -Optional, defaults to 1.
             0 indicates do not ack.
             1 indicates to ack.
             stream - specify the stream defined in #USE I2C

o sea que solo se puede mandar como parametro "1" o "0"
no se si el parametro 0x02 es la dirccion de memoria que esperas recibir

aumenta la siguiente codigo en la linea 22:

Código: [Seleccionar]
22.              i2c_write(0x02);   //direccion del touchpad status register
23.              i2c_read();

por defecto envia ack, si no da, prueba con nack (0) y si nada siempre, diria que es la targeta


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #231 en: 12 de Septiembre de 2009, 12:52:50 »
Tienen las resistencias de pullup del bus I2C colocadas??? :shock:

MGLSOFT, tengo colocadas resistencias de pullup de 4.7K. Q es lo q recomienda en la hoja de datos del mpr083.

gera, en el anterior comentario, hice dos correcciones:
1.  no considerabas el bit de r/w         (resuelto)
2.  no mandabas la direccion de memoria que querias leer

no se si estoy equivocado, pero me parece que la funcion i2c_read(0x02) es incorrecto
la ayuda del ccs dice lo siguiente:

Código: [Seleccionar]
Syntax:
             data = i2c_read();
             data = i2c_read(ack);
             data = i2c_read(stream, ack);

Parameters:
      ack -Optional, defaults to 1.
             0 indicates do not ack.
             1 indicates to ack.
             stream - specify the stream defined in #USE I2C

o sea que solo se puede mandar como parametro "1" o "0"
no se si el parametro 0x02 es la dirccion de memoria que esperas recibir

aumenta la siguiente codigo en la linea 22:

Código: [Seleccionar]
22.              i2c_write(0x02);   //direccion del touchpad status register
23.              i2c_read();

por defecto envia ack, si no da, prueba con nack (0) y si nada siempre, diria que es la targeta



Claro!!! q gil q soy!!! Tengo q hacer un write de la direccion y despues leer con un read. Cierto q esto no es igual q el write y read de POSIX jajaja.
Muchas gracias por su ayuda!!! Ahora mismo voy a probar a ver q pasa. Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #232 en: 12 de Septiembre de 2009, 13:05:14 »
no te olvides gera que el MPr083 no posee ajuste parcial de la sensibilidad,... por lo tanto debes elegir un buen valor de resustencia de pullups en cada electrodo.-
espero tus avances gera.... saludos...
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #233 en: 12 de Septiembre de 2009, 13:59:52 »
no te olvides gera que el MPr083 no posee ajuste parcial de la sensibilidad,... por lo tanto debes elegir un buen valor de resustencia de pullups en cada electrodo.-
espero tus avances gera.... saludos...

Gracias nano! pero me confundi, ahora estoy probando con el mpr084. Es q me los confundo jeje, podrian haberle puesto un nombre mas descriptivo :P
Bueno, ya corregi eso q me dijeron e hice unas pruebas. Pero anda cuando quiere, y espero q mi olfato me engañe, pero senti un olorcito a tostado :S Asiq asumo q la plaquita esta mal soldada o las pistas no salieron muy precisas.
Como hiciste nano para q la plaquita y la soldadura te quede tan prolija?
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #234 en: 12 de Septiembre de 2009, 20:55:12 »
hola gera!,.... la hice con Éste metodo....
Saludos  8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #235 en: 12 de Septiembre de 2009, 23:46:45 »
Con razon te quedan tan bien definidas las pistas jeje. Yo utilizo el metodo de transferencia termica con una plancha, y por ahi algunas pistas quedan mas anchas q otras y es un problema cuando soldas componentes tan pequeños. Voy a ver si consigo hacerme una insoladora. Tengo mucho trabajo q hacer para echar esto a andar.
Muchas gracias por toda la ayuda!! cada vez estoy mas cerca de la victoria jeje.

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #236 en: 13 de Septiembre de 2009, 06:25:20 »
muy bien gera!,... no le aflojes... "hasta la victoria... Siempre"
saludos  8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5467
    • Picmania by Redraven
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #237 en: 19 de Septiembre de 2009, 08:24:47 »
Me tiro de cabeza a leerme las doce páginas de post a ver si logro aprender (es que soy muy burro)

Tengo ganas de hacer algo capaci-acoplado.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7871
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #238 en: 19 de Septiembre de 2009, 09:26:11 »
Alguien sabe que versión de CCS trae la librería de touchpad para usar el modulo capacitivo interno de los micros que lo tienen??
La 4.093 no la tiene o al menos no la encuentro... :) :)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Touch Rotary MPR083 y Touch Pads MPR084
« Respuesta #239 en: 19 de Septiembre de 2009, 10:56:43 »
Alguien sabe que versión de CCS trae la librería de touchpad para usar el modulo capacitivo interno de los micros que lo tienen??
La 4.093 no la tiene o al menos no la encuentro... :) :)

me mataste MGLSOFT... ni idea... a ver algun forero más informado?.... de todas formas me agarró la curisidad, voy a buscar y luego te comento.-
saludos  8)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -