Autor Tema: (Hsync y Vsync ) Quien me ayuda con esto  (Leído 2819 veces)

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

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
(Hsync y Vsync ) Quien me ayuda con esto
« en: 03 de Septiembre de 2008, 17:57:50 »
Hola a todos. Se que hay varios maestros de la programación aca.

Quien me da una mano generando dos señales en un mismo PIC. Quiero sacar por una pata una señal cuadrada de 31.25Khz y por otra pata una señal cuadrada de 50 hz. Estas deberían estar sincronizadas entre sí.

Por mi parte he intentado hacerlo con el tmr0, y si bien obtengo la señal de 31.25khz, cuando empiezo a programar mas codigo esta frecuencia varía.

Escucho sugerencias.

Desde ya muchas gracias a todos por su tiempo.

Marcelo

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #1 en: 03 de Septiembre de 2008, 18:20:30 »
si puedes poner tu programa, te puedo hechar la mano, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #2 en: 03 de Septiembre de 2008, 23:22:52 »
hola chelomiche!
q pic estas usando? yo te sugiero q uses alguno q tenga pwm.
saludos!

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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #3 en: 04 de Septiembre de 2008, 13:42:50 »
Hola.

Pues a mi se me ocurre que generes bien la de 31.25kHz con el timer0 u otro y cuentes 625 veces la entrada a esa funcion y con una bandera activar el toogle del pin que saca los 50Hz, asi quedarian sincronizadas.

Saludos
El papel lo aguanta todo

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #4 en: 04 de Septiembre de 2008, 16:52:20 »
Gracias a todos por responder:

MLO_ yo pensé igual que vos. Pero en vez de salir por el PIN_B5 50hz, me sale 276.5 hz y está desfazado con respecto a los 31.25kz.
Otra cosa que no me coincide, es que offset del tmr0 en teoría debería funcionar con 216 para generar una interrupción cada 16us, pero tengo que llevarlo a 232 para obtener los 31.25khz

Este es el programa que utilicé:

#include <16f84a.h>                   
#fuses HS,NOWDT,NOPROTECT,PUT         
#use delay(clock=20000000)
#use fast_io(b)

int NInts=0;

#int_RTCC                           
RTCC_isr()
{

   Output_Toggle(PIN_B4);
   Set_timer0(232);
   ++NInts;
   if (Nints==625){
      Output_Toggle(PIN_B5);
      NInts=0;
   }

}


void main()
{
  
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   Set_timer0(232);
  
   enable_interrupts(INT_RTCC);              
   enable_interrupts(global);            

   set_tris_b(0xCF);

   while(1)
   {
   }

}
« Última modificación: 04 de Septiembre de 2008, 17:37:36 por chelomiche »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #5 en: 04 de Septiembre de 2008, 18:46:22 »
Asumo q el desfasaje se debe a q invertis mucho tiempo dentro de la interrupcion. Lo q podrias hacer es dentro de la interrupcion levantar un flag y recargar el valor del timer. Luego en tu while, verificas el flag constantemente, y cuando se levante, haces todo lo necesario.
Saludos!

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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #6 en: 04 de Septiembre de 2008, 21:26:12 »
Hola.

Yo no lo pensaba asi. Digo generar los 31.25kHz con el timer0 y solo asignar la bandera ( int1 flagg) a true, y ya en el main procesarla (para los 50Hz) , es lo que siempre hago con las interrupciones  :-/  :-/

Saludos
El papel lo aguanta todo

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #7 en: 10 de Septiembre de 2008, 13:46:46 »
Lo q podrias hacer es dentro de la interrupcion levantar un flag y recargar el valor del timer. Luego en tu while, verificas el flag constantemente, y cuando se levante, haces todo lo necesario.
Saludos!

Bueno eso he hecho y los resultados son poeres a hacer las operaciones dentro de la interrupción del tmr0. Me sale en la pata 9 22,32Khz y en la pata 10 197.6Hz

Este es el programa:

#include <16f84a.h>
#fuses HS,NOWDT,NOPROTECT,PUT
#use delay(clock=20000000)
#use fast_io(b)

int NInts=0;
char bandera=0;

#int_RTCC
RTCC_isr()
{
   bandera=1;
   Set_timer0(216); //Interrumpir cada 16us
}


void main()
{

   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   Set_timer0(216);

   enable_interrupts(INT_RTCC);
   enable_interrupts(global);

   set_tris_b(0xCF);

   while(1)
   {
      if(bandera==1){
         bandera=0;
         Output_Toggle(PIN_B4);
         ++NInts;
      }
      if(NInts==625){
         Output_Toggle(PIN_B5);
         NInts=0;
      }

   }

}


Estoy empezando a pensar que si no se hace en assembler no voy a tener un control exacto de los tiempos. El problema es que de assembler se poco y nada, por eso es que esperaba que alguien me salvara.

Saludo a todos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #8 en: 10 de Septiembre de 2008, 14:38:20 »
Hola.

genera una freecuencia en el timer y la otra en el while a ver que sucede

Saludos
El papel lo aguanta todo

Desconectado chelomiche

  • PIC10
  • *
  • Mensajes: 11
Re: (Hsync y Vsync ) Quien me ayuda con esto
« Respuesta #9 en: 15 de Septiembre de 2008, 13:01:42 »
Hola.

genera una freecuencia en el timer y la otra en el while a ver que sucede

Saludos

Probé de todas las maneras y llegué a la conclución que no se puede hacer en C (por lo menos yo no puedo). Asi que me metí en el Assembler, primero con interrupciones y luego sin ellas. Y me alegra decirles que lo he logrado.
Le agradezco a todas las personas que me dieron ideas y se molestaron en escribir.

Y para aquellos que necesiten del programita, se los paso. No lo posteo aqui porque está en assembler y este es el foro en C.

Saludo a todos y nos mantenemos en contacto.


 

anything