Hay varias formas de medir el ancho de los pulsos entrantes. Lo que es más apropiado depende del ancho de los pulsos, la precisión que necesita y los periféricos que tiene su PIC. Algunas posibilidades son:
- Utilice dos módulos CCP en modo de captura. Esto no es posible para su PIC particular, ya que solo tiene un módulo de CCP, lo mencionaré de todas formas para los demás o en caso de que cambie el PIC. Un módulo CCP en modo de captura captura una instantánea del temporizador 1 de 16 bits de funcionamiento libre en el borde de un pin de E / S. Con dos de estas capturas, una para cada borde, las restas para obtener la duración del pulso.
Este método permite los pulsos de menor duración y tiene la mayor precisión, pero toma dos módulos CCP.
- Use un solo módulo CCP y mueva el borde que captura en una interrupción activada por la primera captura. Esto tiene la misma precisión y resolución que el # 1 y utiliza solo un único módulo CCP, pero requiere que el pulso tenga un ancho mínimo para que la rutina de interrupción tenga tiempo para capturar el valor capturado, cambiar la polaridad del borde de captura.
- Capture el temporizador de ejecución libre 1 en el firmware de cada borde, luego haga la resta como en # 1 y # 2. Esto no requiere ningún módulo CCP, pero debe haber un tiempo mínimo entre los bordes para que la rutina de interrupción haga su trabajo. También tiene un poco más de error debido a cierta incertidumbre en la respuesta a la interrupción, y posiblemente en un número variable de instrucciones de la rutina de interrupción si no se codifica con cuidado.
- Puerta del temporizador 1 desde el pulso. Haga que el borde posterior cause una interrupción, que luego lee el valor del temporizador 1 y posiblemente lo reinicia listo para el siguiente impulso. Esto tiene una buena precisión y resolución, pero requiere un tiempo mínimo entre los pulsos para que la interrupción tome el valor del temporizador 1 y se configure para el siguiente pulso.
También hay otros métodos, pero sin saber más sobre las características de sus pulsos, no vale la pena dedicarles tiempo. Dado que su PIC tiene un solo módulo CCP y un temporizador 1 con opción de activación, vale la pena considerar los métodos 2 y 4. De nuevo, sería útil saber más sobre las características del pulso.
Una cosa que no detecté es el manejo de desbordamiento para pulsos largos, pero si se sabe que sus pulsos son lo suficientemente cortos, esto no es un problema.