Diferencia entre revisiones de «PWM (Modulación de Ancho de Pulso)»

De Wikitronica
Saltar a: navegación, buscar
Línea 83: Línea 83:
  
 
Los registros TPMxCNTH y TPMxCNTL contienen el bit más significativo y menos significativo respectivamente del valor en el contador del TPM. Leer cualquiera de los valores en estos registros coloca los datos de ambos en un buffer hasta que se finalice esta operación. Estos registros se resetean apenas se resetee el microcontrolador o se escriba en el registro TPMxSC. Como ambos son registros de solo lectura, apenas se intente escribir en alguno de ellos se reseteara el contador.
 
Los registros TPMxCNTH y TPMxCNTL contienen el bit más significativo y menos significativo respectivamente del valor en el contador del TPM. Leer cualquiera de los valores en estos registros coloca los datos de ambos en un buffer hasta que se finalice esta operación. Estos registros se resetean apenas se resetee el microcontrolador o se escriba en el registro TPMxSC. Como ambos son registros de solo lectura, apenas se intente escribir en alguno de ellos se reseteara el contador.
 +
 +
[[Archivo:Untitled8.jpg|700px|center|thumb|'''8 bits mas significativos del contador (TPMxCNTH)''']]
 +
 +
[[Archivo:Untitled8.jpg|700px|center|thumb|'''8 bits menos significativos del contador (TPMxCNTL)''']]
  
 
===Registros del modulo del contador del TPM (TPMxMODH:TPMxMODL)===
 
===Registros del modulo del contador del TPM (TPMxMODH:TPMxMODL)===

Revisión del 14:12 16 nov 2012


Introduccion

Configuracion

El comparador analogico (ACMP) puede ser configurado para conectarse el a un canal TPM de entrada, colocando el bit SOPT2 [ACICx] en uno. Haciendo esto, el pin del canal 0 del TPM no está disponible de forma externa, es decir no puede ser modificado. La salida del ACMP 1 puede conectarse a TPM1CH0 y la salida del ACMP2 puede conectarse a TPM2CH0.

Configuracion del modulo SOPT2 para conectar el ACMP a los canales del TPM

Al momento de programar, el codigo para la configuracion anterior seria de esta forma:

SOPT2=0x05, donde el valor hexadecimal 0x05 representa los 8 bits del registro SOPT2 que, como se observa en el cuadro anterior, son 00000101.

Compuerta de clocks

Los clocks de los modulos TPM1, TPM2 y TPM3 pueden activarse o desactivarse usando el modulo SCGC1 [TPMx]. Cuando los bits están en 1, los puertos se habilitan dejando usar los clocks de cada módulo, y en cero se desabilitan. Luego de un reset estos bits se colocan en 1.

Habilitacion de los clocks del TPM1 TPM2 y TPM3

Similar al caso anterior, el codigo para la configuracion anteriormente descrita es:

SCGC1=0xE0, nuevamente el valor hexadecimal 0xE0 representa los 8 bits del registro SCGC1, los cuales eran 11100000

Vector de interrupciones

Vectores de interrupcion del TPM

Caracteristicas

El modulo PWM posee las siguientes caracteristicas:

  • Cada canal se puede configurarse para ser capturador de entrada, comparador de salidas, o alineación de flancos PWM. Estos tipos de configuración se discutirán en la seccion de modos de operacion.
  • Escoger la polaridad en las salidas del PWM (positiva o negativa)
  • El modulo puede ser configurado como buffer o como alineación central de la modulación del ancho de pulso (CPMW por sus siglas en inglés).
  • El timer puede ser modificado para usarse con una escala predeterminada del bus clock, un clock fijo o un clock externo:
  1. La preescala se define dividiendo el clock del bus entre 1, 2, 4, 8, 16, 32, 64 o 128. El bus clock al que opera el microcontrolador es de 1MHz.
  2. El clock fijo es sincronizado con el bus clock mediante un circuito sincronizador.
  3. Para el clock externo, el pin puede compartirse con un pin de un canal o de cualquier otra entrada, por lo tanto hay que tener cuidado al configurar este pin.
  • Un interruptor por canal y un contador para las interrupciones.

Modos de operacion

Los canales pueden ser configurados independientemente como capturadores de entrada, comparador de salidas, o alineación de los flancos de PWM. Un bit de control puede modificarse para que todos los canales del módulo sean configurados como alineación de la modulación del ancho de pulso, si este es el caso se desabilitan las otras opciones de configuración. Cuando el microcontrolador esta en BDM background o BDM foreground, el TPM suspende las operaciones y las reanuda apenas el microcontrolador regresa a estado normal. Cuando esta en stop, todos los clocks del microcontrolador se paran, incluyendo el oscilador principal, por lo tanto el modulo TPM es desabilitado momentáneamente. En el modo de espera (wait mode), el TPM opera de forma normal ya que no genera una referencia a tiempo real ni el interrupt necesario para despertar el micro de este estado. Los modos de operacion son los siguientes:

  • Modo de captura de entrada: Cuando un evento preseleccionado de flanco ocurre en el pin asociado al canal que se esta usando, el valor actual del contador del timer de 16 bits es guardado en el registro de valor del canal y una bandera de interrupción se coloca en uno. Un flanco de subida, flanco de bajada, cualquier flanco o ningún flanco (canal desabilitado) puede ser seleccionado como el flanco activo que dispara la captura de entrada.
  • Modo de comparación de salida: Cuando el valor en el registro del contador es igual al valor del registro del canal, una bandera de un bit de interrupción se coloca en uno, y una acción de salida seleccionada es forzada en el pin del microcontrolador. La salida que se ve en el pin puede ser forzada a cero, a uno, intercambiar/conmutar las salidas o simplemente ignorarlo.
  • Modo de alineación de flancos de PWM: El valor del registro de 16 bits +1 define el período de la señal de salida del PWM. El valor del registro del canal define el duty cicle (tiempo en que la señal permanece en un estado activo) de la señal de salida del PWM. También se puede definir la polaridad de la señal de salida. Las interrupciones ocurren apenas termine el período de la señal, es decir en el punto de transición del duty cicle (cuando la señal pasa de activa a inactiva)
  • Modo de alineacion central del PWM: El doble del valor del registro del modulo de 16 bits define el period de las salidas PWM, y los registros de valores de los canals definen la mitad de la duracion del duty cycle. El contador del timer cuenta hasta que llega al valor del registro del modulo y luego cuenta desde este valor hasta cero. Mientras el contador esta contando hacia abajo, y el valor del contador es el mismo que el del modulo, la salida PWM se activa. En el caso contrario, es decir cuando esta contando hacia arriba y los valores coinciden, la salida PWM se desactiva.

Diagrama de bloques

El modulo TPM usa un pin de entrada/salida por canal (TPMxCHn), donde n representa el numero del canal. Hay que tener cuidado a usar estos pines ya que los pines de entrada/salida del TPM están asociados a los puertos de entrada/salida generales del microcontrolador. El componente central es el contador de 16 bits, el cual provee el tiempo de referencia para los modos de operación. Los registros del modulo del contador (TPMxMODH:TPMxMODL) registra el valor del modulo. Este dato se puede leer cuando sea, mas si se modifica este dato en la parte baja (TPMxMODL) o en la parte alta (TPMxMODH), se resetea el contador.

Diagrama de bloques del TPM

Registros del TPM

Registros de status y control del TPM (TPMxSC)

El registro TPMxSC contiene la bandera de overflow y los bits de control para determinar la habilitacion de las interrupciones, el modo de operación que se va a usar, el tipo de clock y la escala en caso de ser necesaria.

Bits del registro TPMxSC
  • TOF (Bit 7): Este bit se conoce como la bandera de overflow del timer. Este bit se coloca en uno cuando el contador del TPM se resetea (0x0000) luego de haber alcanzado el valor guardado en el registro de modulo del contador. Para borrar este bit (ponerlo en cero), es necesario leer el registro TPMxSC cuando la bandera este en uno y escribir en este bit un cero. Si llegase a ocurrir otro overflow antes de colocar el bit 7 en cero, la secuencia se resetea por lo tanto la bandera quedaría en uno para que una interrupción del tipo TOF no se pierda debido a una anterior.
  • TOIE (Bit 6): Tambien llamado habilitador de interrupciones de overflow del timer. Si este bit esta en uno se habilita la interrupción debido a overflows. Es decir que aunque el bit de la bandera de overflow este en uno, si este bit esta en cero nunca van a ocurrir interrupciones del tipo TOF.
  • CPWMS (Bit 5): Si este bit esta en uno, se activa el modo de operación de alineación central de PWM para todos los canales, desactivando las demás opciones. Además configura el TPM para que el contador opere tanto hacia arriba como hacia abajo (up/down counting) en vez de solo hacia arriba. Un reset coloca este bit en cero habilitando los demás modos de operación.
  • CLKS[B:A] (Bit 4:3): Estos dos bits se usan para definir que tipo de clock se va a utilizar. El clock fijo solo sirve cuando el clock del sistema esta basado en un sistema PLL (divisor del clock). En caso de no ser así el clock va a ser el mismo que el bus clock, 1MHz para este caso. La sincronización de un clock externo se genera mediante el modulo del bus clock del TPM, mientras que para el caso de un clock fijo es a través de un circuito sincronizador.
Tipos de clock (Bit 4:3)
  • PS[2:0] (Bit 2:0): Estos 3 bits se usan para modificar el clock del TPM escogiendo uno de los factores de división que se observan en la siguiente tabla.
Factor de escalamiento (Bits 2:0)

Registro de contadores del TPM (TPMxCNTH:TPMxCNTL)

Los registros TPMxCNTH y TPMxCNTL contienen el bit más significativo y menos significativo respectivamente del valor en el contador del TPM. Leer cualquiera de los valores en estos registros coloca los datos de ambos en un buffer hasta que se finalice esta operación. Estos registros se resetean apenas se resetee el microcontrolador o se escriba en el registro TPMxSC. Como ambos son registros de solo lectura, apenas se intente escribir en alguno de ellos se reseteara el contador.

8 bits mas significativos del contador (TPMxCNTH)
8 bits menos significativos del contador (TPMxCNTL)

Registros del modulo del contador del TPM (TPMxMODH:TPMxMODL)

Registros de status y control de los canales del TPM (TPMxCnSC)

Registros del valor de los canales del TPM (TPMxCnVH:TPMxCnVL)

Reset

Interrupciones