Contar pulsos pwm en la foto

0

Estoy trabajando en PIC18F8722 para generar PWM para un ciclo de trabajo del 50%. He obtenido el PWM y ahora necesito contar el pulso de PWM. Según mi conocimiento, podemos usar temporizadores para generar y contar esos pulsos con un contador. No estoy entendiendo exactamente cómo hacerlo. Cualquier consejo es apreciable.

¡Gracias!

    
pregunta user1890

1 respuesta

2

El temporizador que se usa para generar la señal PWM tiene una rutina de servicio de interrupción (ISR). Se dispara cada vez que cambia el pin de salida (Interrumpir en la coincidencia) o se vuelve a cargar el temporizador (Interrupción en desbordamiento).

Esa rutina de servicio de interrupción puede incrementar una variable para contar un impulso más cada vez que se llama.

AFAICT, todos los temporizadores PIC18F8722 admiten, al menos, uno de esos dos tipos de ISR.

No hay necesidad de otro contador de hardware.

El recuento de pulsos se almacenará en una variable 'global' y, por lo tanto, se puede leer mediante un código fuera del ISR. Si está utilizando C para programar el PIC18F8722, entonces la variable de conteo de impulsos se definirá como "volátil".

Idealmente, el recuento se ajustará a un byte, solo deberá contar hasta 255. Sin embargo, si la variable de recuento de impulsos tiene que ser más grande que un byte, deberá tener un poco de cuidado con el código exterior. el ISR lo usa.

Una variable más grande que un byte se leerá en varias instrucciones, por lo que es posible que la interrupción ocurra en medio del código principal que accede a su valor. Esto puede ocasionar que el código principal se confunda ocasionalmente con el valor real del conteo de pulsos.

(Agregue un poco más de información a su pregunta, de modo que podamos entender si necesita ayuda para resolver este tipo de problema. Si no es un problema, parece que es demasiado complejo agregar una respuesta).

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas