¿Variable PWM para un PIC18F4550?

3

Me gustaría crear un ciclo de trabajo variable PWM en un PIC18F4550 para controlar el microcontrolador Puerta de un MOSFET en un proyecto que estoy haciendo.

Soy nuevo en microcontroladores pero ya tengo un código que puede generar una señal PWM. Me gustaría ayuda para averiguar cómo hacer dos cosas.

  1. ¿Cómo puedo cambiar el ciclo de trabajo paso a paso (es decir, 10%, 20%, 30% ... 100%), aumentando el ciclo de trabajo en cada período del PWM?
  2. ¿Cómo puedo cambiar el ciclo de trabajo del PWM en función de la presión de un interruptor externo?

Estoy programando en el lenguaje C y agradecería algún código de ejemplo.

    
pregunta Nagu Bhanoth

2 respuestas

1

Para pasar por varios ciclos de trabajo, como aumentar el 10% en cada período, debe configurar una interrupción en el desbordamiento del temporizador. En esa rutina de servicios de interrupción, modifica el registro de ciclo de trabajo de PWM a su nuevo valor.

Para actualizar el ciclo de trabajo basado en un interruptor, usted hace lo mismo. Configure una interrupción en el pin de entrada conectado al interruptor y vuelva a actualizar los registros del ciclo de trabajo durante la rutina de servicio de interrupción.

Aquí hay un Tutorial de Microchip sobre las interrupciones del temporizador, incluido el código C. Y aquí está la Microchip Application Note en el periférico Capture / Compare / PWM. Los ejemplos están en Asamblea. Pero usted dice que ya ha configurado los PWM, por lo que ya debería estar familiarizado con los registros que necesita modificar para cambiar el ciclo de trabajo.

    
respondido por el embedded.kyle
1

El 18F4550 tiene generadores PWM incorporados, por lo que es fácil. Una vez que configura el hardware, continúa generando la forma de onda PWM por su cuenta. El hardware para hacer esto se llama módulo "CCP", que significa comparación, captura y modulación de ancho de pulso. En su caso, desea utilizarlo en modo PWM.

Configuró el temporizador 2 para proporcionar el período PWM, luego el ciclo de trabajo se escribe en CCPRxL. En realidad, el ciclo de trabajo tiene 2 bits de fracción adicionales por debajo del período del temporizador 2. Estos bits de fracción se escriben en el registro CCPxCON en el lugar correcto. Es un poco squirrely, pero todo funciona.

Si desea cambiar el ciclo de trabajo de PWM en cada período, es probable que desee interrumpir el temporizador 2. Tenga en cuenta que con su escalador posterior, puede interrumpir cada N períodos, donde N es 1 a 16. En la interrupción, cambie CCPRxL y CCPxCON (si desea usar los bits de fracción extra) al nuevo ciclo de trabajo. El ciclo de trabajo en estos registros es en unidades de conteo del temporizador 2, que es el tiempo de activación absoluto por impulso, no la fracción de tiempo de activación por impulso. La fracción de tiempo es el tiempo absoluto absoluto dividido por el período.

Una vez que sepa cómo cambia el ciclo de trabajo de PWM, puede activarse desde cualquier decisión en el código. Para cambiarlo en función de un interruptor externo, presione significa detectar que presione y luego realice el cambio.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas