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

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

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Señal continua con TSOP1738
« Respuesta #15 en: 28 de Agosto de 2010, 14:57:17 »
Hola jemerylf, para observar el pulso generado puedes simular en PROTEUS y miras la salida de pulsos del pic en el osciloscopio.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5455
    • Electrónica Didacta
Re: Señal continua con TSOP1738
« Respuesta #16 en: 28 de Agosto de 2010, 18:05:05 »
Hola jemerylf, para observar el pulso generado puedes simular en PROTEUS y miras la salida de pulsos del pic en el osciloscopio.

saludos

opino lo mismo, lo que necesitas es saber si la onda generada corresponde con el cálculo. Se supone que el proteus genera la señal basado en los calculos teóricos.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #17 en: 28 de Agosto de 2010, 18:27:48 »
Bueno, acabo de probar con ultimo cambio a setup_timer0(192) y obtengo esto en el proteus:


Lo cual me confunde, no se supone que el periodo de todo el pulso deberia de ser 26.3us?? Estoy realmente confundido... denme una mano porfas.


Gracias por todo.
salu2

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1694
Re: Señal continua con TSOP1738
« Respuesta #18 en: 28 de Agosto de 2010, 19:24:08 »
mm si no estoy mal, se requiere una F=38khz, su periodo es de 26.31uS, entonces habria que entrar en la interrupcion cada 13,15uS y cambiar el flanco
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17909
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #19 en: 29 de Agosto de 2010, 02:57:26 »
Prueba a poner primero el set_timer dentro de la interrupción. No creo que sea la razón de la avería, pero alguna distorsión mete, ya que el output_toggle consume varios ciclos de reloj:

#INT_TIMER0
void Generador(void)
{
   set_timer0(192);
   output_toggle(TX_IR);
}
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #20 en: 29 de Agosto de 2010, 13:52:33 »
El output_toggle solo consume 2 ciclos segun veo. Acabo de deshabilitar el wdt por pobrar y sige igual todo... que puede estar falllando? el proteus? =/

Gracias.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #21 en: 29 de Agosto de 2010, 14:22:16 »
Sera porq tengo cargada la PC casi al 100%???? =/

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Señal continua con TSOP1738
« Respuesta #22 en: 30 de Agosto de 2010, 02:09:40 »
una pregunta tonta... cuando cargaste el .HEX en proteus también modificaste el valor del oscilador a 20 MHz no? por defecto creo que trae 1 MHz si no me equivoco...
LAS MALVINAS SON ARGENTINAS!

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Señal continua con TSOP1738
« Respuesta #23 en: 30 de Agosto de 2010, 05:36:35 »
claro que si jaja

... =S

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Señal continua con TSOP1738
« Respuesta #24 en: 30 de Agosto de 2010, 07:27:07 »
claro que si jaja

... =S

Hola:

En tu circuito no veo el condensador que recomienda el fabricante (4.7 uF) "recommended to suppress power supply disturbances"
Puede que no tenga importancia pero por si acaso puedes probar a ponerlo.

Un saludo

Aitor

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Señal continua con TSOP1738
« Respuesta #25 en: 30 de Agosto de 2010, 14:13:44 »
claro que si jaja

... =S

jajajaja bueno si lo pregunte es porque me ha pasado  :D..... la cosa creo que va así...

necesitamos 38KHz
Código: [Seleccionar]
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1);
De esta manera tenemos que el preescaler se asigna al WDT, además derivamos del clock principal es decir Fosc/4 entonces hasta ahora tenemos nuestros Fclock=20M/4=5MHz. Pero solo se incrementa cuando hay flanco de subida -> Fclock=2,5MHz. (mi error  :mrgreen:). La interrupcion del timer salta cuando se desborda osea que necesitamos 32 ticks para generar una frecuencia de 78KHz, por lo tanto 256-32=224. y ahí queda la cosa....

Código: [Seleccionar]
#INCLUDE <16F876.h>

#FUSES HS, WDT, PUT, PROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

#USE DELAY (CLOCK = 20 000 000, RESTART_WDT)

#DEFINE TX_IR     PIN_A2

#USE FAST_IO(A)
#USE FAST_IO(B)
#USE FAST_IO(C)

#ZERO_RAM
void main (void)
{
   delay_ms(303);
   disable_interrupts(GLOBAL);
  
   setup_wdt(WDT_288MS);
  
   set_tris_a(0b010001);
   output_a  (0b00);
   output_high(TX_IR);
 
   set_tris_b(0b11000000);
   output_b(0x00);
  
   set_tris_c(0x00);
   output_c(0x00);
  
   port_b_pullups(true);
  
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1);
   set_timer0(224);
   enable_interrupts(INT_TIMER0);
  
   enable_interrupts(GLOBAL);
 
   while (true)
   {
      restart_wdt();

   }
}

#INT_TIMER0
void Generador(void)
{
   set_timer0(224);
   output_toggle(TX_IR);
  

}

En proteus tiempo 26,5uS frecuencia 37,7 KHz.

Saludos!
  
« Última modificación: 30 de Agosto de 2010, 17:19:57 por cerebro »
LAS MALVINAS SON ARGENTINAS!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17909
    • MicroPIC
Re: Señal continua con TSOP1738
« Respuesta #26 en: 30 de Agosto de 2010, 16:05:26 »
No he entendido eso de que sólo desborda en flanco de subida, ¿puedes explicarlo?
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Señal continua con TSOP1738
« Respuesta #27 en: 30 de Agosto de 2010, 17:16:46 »
No he entendido eso de que sólo desborda en flanco de subida, ¿puedes explicarlo?
:z) menos mal que has estado atento porque le he pifiado!, eso es cuando el clock es externo  :oops:...

Traducción del datasheet:
Citar
El modo temporizador se selecciona poniendo a cero el bit T0CS ( registro OPTION_REG <5>). En el modo temporizador, el módulo Timer0 se incremento en cada cielo de instrucción (sin el preescaler). Si el registro TMR0 se escribe, el incremento se inhibe durante los siguientes dos ciclos de instrucción. EL usuario puede trabajar teniendo en cuenta esto y ajustando el valor a cargar en el TMR0.

El modo contador se selecciona poniendo a uno el bit T0CS (registro OPTION_REG <5>). El modo contador, Timer0 se incremento en cada flaco de subida o de bajada de la señal que le llega por RA4/TOCK1. El flanco de incremento se determina por el bit T0SE (registro OPTION_REG <4>). Poniéndose a cero T0SE se selecciona el flanco ascendente. Las restricciones de la señal de reloj externa se describen en la sección 5.2.

Ahora esta es la cosa...
la interrupción se genera cuando:
Citar
The TMR0 interrupt is generated when the TMR0 register overflows from FFh to 00h.

y la interrupción se atiende cuando  :shock: (quiere?)



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?.
LAS MALVINAS SON ARGENTINAS!

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1694
Re: Señal continua con TSOP1738
« Respuesta #28 en: 30 de Agosto de 2010, 18:27:12 »
asi es, la interrupcion se genera en el paso de FF a 00, pero no es q se pierda el tiempo, porque segun calculos tu le cargas un valor al timer para que el empieze a contar desde dicho valor hasta FF y cuando pasa a 00 ocurre la interrupcion. Era asi o meti las de caminar hasta el fondo :mrgreen:??
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Señal continua con TSOP1738
« Respuesta #29 en: 30 de Agosto de 2010, 19:11:03 »
es así pero si no estuviese ese retraso el valor exacto sería de 192 como dijo Manolo para que ocurran 64 ticks de TMR0 para 78KHz, como ocurre ese retraso de 32 ticks para que sea exacto hay que cargar otros 32 ticks o sea 224 al TMR0  :? ... yo montaría todo y probaría medir el tiempo real con algún analizador lógico (el pickit2 trae un par) o ir mostrando el valor del TMR0 a la entrada y salida de la interrupción de alguna manera...
jhozate fijate que si utilizamos 196 que son 64 ticks + los 32 del retraso son 96 más los ciclos que perdemos escribiendo el TMR0 y toggle redondeemos a 100 ticks... y eso es mas o menos 20 uS o sea una señal de un período de 40 uS que es lo que está midiendo jeremy (que batata!  :D).
LAS MALVINAS SON ARGENTINAS!