Cálculo de PWM en PIC16F877

0

Tengo una asignación en la que el PIC está sincronizado a 16kHz y la salida del PWM debe estar en el canal dos. La frecuencia PWM tiene que ser de 400Hz y el ciclo de trabajo es del 10%

Siguiendo el manual, obtuve los siguientes valores para los registros PR2 (período PWM) y luego el CCPRIL: CCP1CON < 5: 4 > registros (ciclo de trabajo PWM) con respeto.

PERÍODO PWM:

$$ \ \ PR2 = (\ frac {PWM Period} {(T_ {OSC} \ times 4 \ times \ TMR2 \ Prescale \ Value)}) - 1 $$

$$ \ \ PR2 = (\ frac {0.0025 } {(0.0000625  \ times 4 \ times \ 1)}) - 1 = 9 $$

Ciclo de trabajo de PWM en% = 10

Ciclo de trabajo de PWM (en el tiempo):

$$ \ \ small CCPRIL: CCP1CON < 5: 4 > = \ grande (\ frac {0.1 \ veces \ 0.0025 } {(0.0000625 \ times \ 1)}) = 4 $$

Entonces, PR2 = 0000 1001 y CCPRIL: CCP1CON < 5: 4 > = 00 0000 0100

Pero mi problema es que usé una calculadora en línea y obtuve el siguiente resultado en su lugar.

  /*
 * PWM registers configuration
 * Fosc = 16000 Hz
 * Fpwm = 400.00 Hz (Requested : 400 Hz)
 * Duty Cycle = 10 %
 * Resolution is 5 bits
 * Prescaler is 1
 * Ensure that your PWM pin is configured as digital output
 * see more details on http://www.micro-examples.com/
 * this source code is provided 'as is',
 * use it at your own risks
 */
PR2 = 0b00001001 ;
T2CON = 0b00000100 ;
CCPR1L = 0b00000000 ;
CCP1CON = 0b00111100 ;

Habría esperado que el LSB en CCPIR1L fuera 1 y CCP1CON < 5: 4 > para ser 00 Dado que el valor calculado es 4 y 4 en binario es 100 CCP1CON < 5: 4 > contiene los dos LSB del valor del ciclo de trabajo. Sin embargo, no está de acuerdo con esta calculadora y me pregunto dónde me equivoqué.

    
pregunta S.Ramjit

0 respuestas

Lea otras preguntas en las etiquetas