TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: ledfacil en 10 de Noviembre de 2021, 00:03:47

Título: Problema con TMR_0 ????
Publicado por: ledfacil en 10 de Noviembre de 2021, 00:03:47
Hola, según lo que ven, no debería ver una cuadrada de 50us en lugar de 80us? alguien me puede dar un ejemplo de esto que funcione? necesito formar una cuadrada pero solo trabajando con timers internos, estoy trabajando con el PIC16F628A. Cuá es el menor tiempo que podría configurar para una cuadrada de este modo? siempre me sobran 30us... si lo pongo en temporización de 100us con el instrumento veo 130us... si lo configuro en 200us, con el instrumento veo 230us... cuál es el problema?

(http://ledfacil.com.ar/18.png)
Título: Re:Problema con TMR_0 ????
Publicado por: Fer_TACA en 10 de Noviembre de 2021, 08:22:46
Me imagino que habrás marcado la opción de temporizar y tiempo justo
Título: Re:Problema con TMR_0 ????
Publicado por: Fer_TACA en 10 de Noviembre de 2021, 11:06:38
Por lo que he podido comprobar, ese retardo se debe al procesamiento de la rutina de interrupción pero no sabria decirte porque.
He realizado la prueba para obtener la misma señal cuadrada pero con un temporizador a pelo y ahi si que sale mas o menos el valor que debe de salir.
Sale un poco mas debido al consumo de ciclos de reloj por los saltos entre bloques y por eso sale un poco mas. ver figura adjunta.

Aunque pensando lo bien ese retraso de 30usg sea debido también al numero de saltos que tiene que hacer el TMR segun la configuracion de "Incrementos" en el bloque de configuración.

Voy a probar con otros valores.
Título: Re:Problema con TMR_0 ????
Publicado por: Fer_TACA en 10 de Noviembre de 2021, 11:50:51
Opino que si lo que quieres es sacar una onda cuadrada, lo mas lógico es que utilices el modulo CCP.
Para 50us de ancho de pulso necesitas una frecuencia de 10KHz y eso se consigue fácilmente con el módulo CCP y no obtienes ningún retraso.
Ver figura adjunta.
Título: Re:Problema con TMR_0 ????
Publicado por: ledfacil en 10 de Noviembre de 2021, 11:53:11
Me imagino que habrás marcado la opción de temporizar y tiempo justo
Si, no se ve en la imagen? tal vez la cargué mal...

Les comento que me comuniqué con Niple y me indicaron que es normal que haya 30us extra justamente por lo que mencionas, el salto que se hace entre bloques, el entrar en la int. verificar que se disparó, reiniciar el tmr, etc. y que no es tan eficiente trabajar con este tipo de interrupciones para tanta velocidad...

En realidad debo hacer algo mucho más complejo, no una cuadrada fija, y no es capricho mio el usar estas int. por timers internos, pero iniciando con lo elemental me encontré con esta diferencia por eso recurrí al foro...

Muchas gracias por la disposición en analizar mi problema! un saludo!
Título: Re:Problema con TMR_0 ????
Publicado por: tsu_electronica en 10 de Noviembre de 2021, 21:52:55
hola buenas, amigo no se que frecuencia de cristal estes usando pero si como comenta el amigo fer cuando entra a la interrupcion se reinicia la cuenta y toma los ciclos de salto cuando preguntas el estado del led y al resetear el timer, no se, no estoy seguro, no lo eh tratado de hacer pero si pones el bloque de reinicio al fina en la rutina de interrupcion pueda corregir un poco de ciclos y tambien probrar con un cristal 20 mhz, espero encuentres solucion rapida a tu detalle.