Medir el ancho de pulso consiste en calcular el tiempo en que el estado de la seal pasa de bajo a alto (flanco de subida, T1) y el tiempo en que pasa de alto a bajo (flanco de bajada, T2). Un e! calculados estos tiempos, s"lo tenemos que hacer la diferencia de ambos para as# obtener el pulso que queremos medir ($). %ara entender con m&s claridad lo si'uiente, coniene e(plicar c"mo funcionan los tempori!adores)contadores internos del microcontrolador %*+ 1,f-.,. %ara el caso que nos ocupa, basta decir que son re'istros internos que pueden ser confi'urados por el usuario pro'ramador para usarlos como tempori!ador o contador. /l %*+ 1,f-., cuenta con tres0 Timer 1 (TM21), Timer 1 (TM21) y Timer 2 (TM22). 3osotros usaremos el TM21 para la captura de los tiempos T1 y T2. /ste timer es un re'istro de 1, bits, lo que nos proporciona una resoluci"n de 1 a ,445, tic6s. 78u9 si'nifica esto: %ues si'nifica que los tiempos T1 y T2 siempre se encontrar&n dentro de este ran'o, es decir, el ancho de pulso mas 'rande que se puede medir es aquel que abarque el mayor n;mero de tic6s sin desbordar el TM21. Un tic6 equiale a cuatro ciclos de 2eloj (el que usemos para nuestro %*+)0 Fosc Tick 1 < = /jemplo0 Usando un cristal de 11 M=! s Hz Tick < . 1 111 . 111 . 11 1 < = = > +ada 1.< ?s se produce un tic6 del TM21. 2.- Tcnica a aplicar. Mediante el uso de un 'enerador de impulsos creado preiamente para testear nuestro cometido, y nuestra implementaci"n de la medida de $ puesta en ejecuci"n, obtuimos los resultados esperados. %ero cometemos un error apro(imado de 5< tic6s. %ara reducir dicho error, lo que haremos entonces ser& darle mayor resoluci"n al TM21. @e este modo, podr#amos considerar el error despreciable para nuestro proyecto. /sto es0 - Necesitamos entonces usar una frecuencia de tal modo que T1 y T2 engloben al TMR1. As#0 > Una uelta completa del TM21 (1(1111 a 1(BBBB) ser#a0 ms Ticks s 21<< . 2, ,445, < . 1 =
/ntonces, si queremos 'enerar un periodo TC2,.21<< ms necesitamos una frecuencia de0 Hz T F 5- 2 . 2, 1 1 = = = %or tanto, rec!n"i#$rare%!& n$e&'r! pr!#ra%a para 1 "rec$encia (e )* H+. /n cuanto al aceler%e'r! que usaremos, el AD,L21)AE, su frecuencia oscila entre 1.4 =! y 241 =!. %or tanto, con Bosc C 5- =! deber#a cubrir nuestras e(pectatias. ).- C%! llevarl! a la pr-c'ica. Da medida de un pulso se puede reali!ar de diferentes formas con un microcontrolador %*+. Aqu# presento al'unas de ellas0 Tie%p! en al'! %e(ian'e INTE,T0 Usando el TM21 y la interrupci"n e(terna por 2E1. Fe puede pre>pro'ramar el disparo de la interrupci"n por flanco de subida (2isin' /d'e) o de bajada (Ballin' /d'e). Tie%p! en al'! %e(ian'e INTCCP0 Usando el m"dulo hardGare CCP del %*+ en modo CAPTU.E. Tie%p! en al'! %e(ian'e INT./0 *nterrupci"n por cambio de estado de los pines < a . del %H2TE. Fin posibilidad de pre>pro'ramar el flanco que deseamos. 3osotros nos centraremos en el se'undo m9todo, ya que, a parte de ser el m&s sencillo de utili!ar (reali!a de manera autom&tica las capturas de los flancos que deseamos), haremos uso de un m"dulo importante del %*+ 1,B-.,, el ++%. 0C%! "$nci!na e&'e %($l!1 +uando actiamos el m"dulo ++%, le confi'uramos el flanco que deseamos que lo dispare (subida o bajada). @e este modo y de manera autom&tica, cada e! que se nos presente dicho flanco en el pin correspondiente se copia el alor del TM21 en la pareja de re'istros CCP.L y CCP.H2 'obernado estos dos por el re'istro CCP.. /s decir, en ++%2 tendremos el alor de TM21 cada e! que nos lle'ue un flanco. Fi habilitamos adem&s la In'err$pcin CCP2 se producir& la petici"n de sericio de interrupci"n para esta interrupci"n cada e! que nos lle'ue el flanco esperado. Fer& en esta rutina donde oleremos a confi'urar el ++% para que ahora nos capture el otro tipo de flanco, es decir, si lo ten#amos por flanco de subida, ahora ser& de bajada y iceersa. @e este modo ya tendr#amos los dos alores del TM21 que necesitamos, el del flanco de subida, y el de bajada. Easta con restar estos dos alores y tendremos el ancho de pulso que dese&bamos.