Medición de ancho de pulsos con TGATE

Habitualmente medimos el ancho de los pulsos recibidos mediante la interrupción externa y un timer, contando el tiempo transcurrido entre el flanco de subida y el de bajada, lo que nos obliga a hacer un tratamiento de los datos en la propia interrupción.

En este truco os explicaré otro método, utilizando la técnica Timer Gate Accumulation; una prestación de los Timer que nos hace olvidarnos de la interrupción externa y nos entrega el resultado ya hecho.

Este esquema es el Timer de un dsPIC33F, pero tiene pocas diferencias con el resto de los PIC. Si te fijas, hay un recuadro llamado Gate Sync y una señal de control llamada TGATE.

Cuando hacemos TGATE=1 y TCS=0 estamos configurando el multiplexor de entrada del Timer para que reciba los pulsos a través del Gate Sync, que hace un AND con la señal Tcy (frecuencia de oscilación del micro).

¿En qué se traduce esto?, pues en que con cada pulso recibido, el micro se pone a contar Tcy como un loco, a la frecuencia de instrucciones que esté configurado. Lo vemos mejor con este gráfico:

Obviamente, si queremos saber el ancho de pulso, sólo tenemos que ver el resultado del recuento del Timer y ya lo tendremos.

Espero que podáis aprovechar esta técnica; yo he implementado un lector de PWM con ella y funciona estupendamente.

Y ya sabes, si quieres comentar algo sobre este truco, te espero en el foro.

Share