Autor Tema: Señal continua con TSOP1738  (Leído 14591 veces)

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

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1697
Re: Señal continua con TSOP1738
« Respuesta #30 en: 30 de Agosto de 2010, 19:15:48 »
es q algunas temporizacion con tmr0 en C  :z) , las formulitas van a la fija con el assembler, ahi toca ir ensayando con el timer para ajustar, yo lo simule en proteus pero primer no me dieron los 38K sino 37K y con una valor bastante diferente del que da la formula, la otra es que en simulacion podes usar la herramienta counter timer y lo pones en modo frecuencia
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #31 en: 31 de Agosto de 2010, 01:39:03 »
No me fío de Proteus, ese tmr0=32 al entrar en la interrupción es muy raro.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #32 en: 31 de Agosto de 2010, 20:25:35 »
Vaya, entonces ni de lo que dice proteus me puedo fiar.

Lo mejor, como dicen, seria gestionar esto con algun instrumento pero en estos momentos no cuento con alguno.

Por otro lado, es muy raro eso que hace proteus al agregar 32 ticks cada salta de timer 0... Desde cuando y porq pasa esto?!! Consecuentement, esto m deja dudas d como este el pic generando la onda en fisico, pero bueno.


De todas forma, gracias a todos.

Un gran saludo.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #33 en: 06 de Septiembre de 2010, 16:43:05 »
Hasta el momento lo que he echo es enviar por unos 200us una señal continua de 38khz y por unos 200us nada asi sucesivamente. En el receptor, en la salida, he puesto un condensador de 1uf asi tengo un 1 o un 0.

Por otro lado, sigo pensando que no es posible que el tsop1738 me entrege un 1 continuo con una señal de 38khz continua, pues a pesar de q no me esta funcionando a mi, como ya lo abia dicho, en esta parte de su datasheet mencionaan que el tsop1738 suprime cualquier señal continua de 38khz...



Siempre tendre la duda... xD

Salu2.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #34 en: 06 de Septiembre de 2010, 17:58:21 »
Pues sí lo hace, te lo aseguro.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #35 en: 07 de Septiembre de 2010, 00:27:32 »
Te creo, no lo dudo. Pero entonces como debería interpretar eso que dice su datasheet? Y, mas importante, por que a mi no me pasa lo mismo que a ti =S

Gracias.
Salu2.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #36 en: 07 de Septiembre de 2010, 01:16:31 »
No sé cómo interpretarlo, parece que el cacharro elimina cualquier ruido que le llegue a 38KHz o cualquier otra frecuencia, es decir, elimina cualquier ruido.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #37 en: 07 de Septiembre de 2010, 14:45:19 »
Bueno, probe con cargando el timer 0 a 224. En proteus sale 38khz y probe en vida real con el analizador del pickit 2, obteniendo estos resultados:


Como se ve, la frecuencia es la misma, entonces esta bien en 224. Porqe? Aun no lo entiendo, creo q es un error del compilador ? =/


De todas formas, aun así, al poner frente a frente el led ir con el tsop1738, este ultimo vota un 0 por unos 2 o 3 segundos y despues vota 1, como si lo suprimiera o algo asi... ya nose que hacer ahroa si  :( :( :(


Gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #38 en: 07 de Septiembre de 2010, 14:46:30 »
¿No tienes otro TSOP1738 para probar?

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #39 en: 07 de Septiembre de 2010, 15:02:43 »
Tengo uno mas, ambos se comportan igual...


NOO! el otro si funciona! Vaya, que me vino defectuoso o que?!! seguire probando...
« Última modificación: 07 de Septiembre de 2010, 15:05:45 por jeremylf »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #40 en: 07 de Septiembre de 2010, 15:14:23 »
Ánimo, que ya lo tienes

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Señal continua con TSOP1738
« Respuesta #41 en: 07 de Septiembre de 2010, 15:37:28 »

 :mrgreen: lo sospeche desde un principio  :D


Entonces la interrupción se genera cuando el timer pasa de FF a 00 pero la rutina recien se atiende cuando TMR0 tiene un valor de 32  :shock: ahí esta la perdida de tiempo es casi del doble de lo que se necesita, creo que posiblemente sea un retardo de CCS  :x porque lo probe para varios valores de TMR0! y siempre tarda los 32 ticks del TMR0, perooo en donde se pierde o invierte este tiempo?.


Tengo uno mas, ambos se comportan igual...


NOO! el otro si funciona! Vaya, que me vino defectuoso o que?!! seguire probando...

quizás... quien sabe el trato que ha recibido el probre hasta llegar a tus manos  :(...
LAS MALVINAS SON ARGENTINAS!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18271
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #42 en: 07 de Septiembre de 2010, 15:51:13 »

quizás... quien sabe el trato que ha recibido el probre hasta llegar a tus manos  :(...


O incluso en tus manos  :D :D :D

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #43 en: 08 de Septiembre de 2010, 04:03:33 »
Hola..
 
Alfinal, CREO ya tener solucoinado los delos 38khz y la recepcio del tsop1738 y blabla.. lo que me carcome el cerebro ahora es ese maldito retraso de 32 ticks del timer0... desde cuando pasa eso ? porqe? con todos los pics es asi? nunk m abia pasado esto! ahora se convierte en una jarana trabajar asi! Deberia cambiar de pic? usar timer1 ? pasara lo mismo? WAAAAAAA!!!


Gracias a todos.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #44 en: 09 de Septiembre de 2010, 03:59:51 »
Bueeeeeeeeeeeeeno, dandole y dandole... la mejor forma que pude hacerlo fue a lo malo (metiendome mas a lo assembler y asi). Verá, noc q coños hará el CCS en el timer0 cunado termina porque hay un GOTO hacia otro lado.. asi que (como antes ya lo habia echo) use la interrupcion global del CCS:

Código: [Seleccionar]
#INT_GLOBAL
void IntGlobal(void)
{
   if (T0IF)
   {
      set_timer0(192);
      output_toggle(TX_IR);
   }
   
   clear_interrupt(INT_TIMER0);
}

Así, todo lo que hacia el CCS en #INT_TIMER0 ya no la hará aqui. De esta forma, ya es posible escbriri 192 en la precarga como lo manda las ecuaciones y la teória.

Muy aparte, por mi programa en el while, por alguna razon, no regresaba al while o se trababa en un lugar a causa de esta nueva modificación... aun asi no era motivo para regresar al molesto #INT_TIMER0. Asi que a investigar, entonces intentando entender lo que hacia el CCS en el #INT_TIMER0 para que no pasara esto pero al mismo tiempo para que no demore tanto (sus benditos timer0 = 32...).. me tope con un ejemplo del CCS (concretamente ex_glint.c) que hacen uso de este tipo de interrupcion (global). Ahi, en assembler crean rutinas de salvaguarda o algo asi de registros del CORE delprocesador que hacen que no se malogre la rutina o lo que estaba haacineod el pic antes de la interrupcion y lo siga haciendo despues de esta. De esta forma, mi interrupcion final quedaria asi:

Código: [Seleccionar]
#INT_GLOBAL
void IntGlobal(void)
{
   static int8 cont;

   #asm
   //store current state of processor
   MOVWF save_w
   SWAPF status,W
   BCF   status,5
   BCF   status,6
   MOVWF save_status
   // Save anything else your code may change
   // You need to do something with PCLATH if you have GOTOs

   // remember to check to see what interrupt fired if using more than one!!
   #endasm

   if (T0IF)
   {
      set_timer0(200);
     
      if (++cont < 32)
         output_toggle(TX_IR);
      else if (cont < 64)
         output_low(TX_IR);
      else
         cont = 0;
     
      us++; //1000us / 14us = 71.4285 veces.
   }
   
   clear_interrupt(INT_TIMER0);

   #asm
   // restore processor and return from interrupt
   SWAPF save_status,W
   MOVWF status
   SWAPF save_w,F
   SWAPF save_w,W
   #endasm
}

A causa, de algunas cosa mas que tenia que hace en el timer, tuve que poner la precarga a 200. Pero igual se mantiene y todo corre de las mil maravillas =D!!!


Muchas gracias a todos por su atención y apoyo!
Ya vamos caminando!!


Un gran saludo!


 

anything