PWM generación PIC16F628A

2

He seguido las instrucciones en la hoja de datos y he intentado generar la señal PWM utilizando PIC16F628A. Sin embargo parece que no está generando ningún resultado. Mi código se muestra a continuación. Cualquier ayuda apreciada con respecto a encontrar lo que está mal en mi código.

Gracias.

PROCESSOR '16F628A'
INCLUDE <P16F628A.INC>
org 0x00
bcf STATUS,RP1
bsf STATUS,RP0 ; go to bank1

movlw 0xff ;255 dec
movwf PR2 ; writing to PR2 register
bcf TRISB,3 ; set RB3 as output


bcf STATUS,RP0 ; go to bank0
bcf CCP1CON,5 ; clearing bits 5 and 4
bcf CCP1CON,4

movlw 0x00
movwf CCPR1L ; set duty cycle

bcf T2CON,1
bcf T2CON,0 ; set pre-scaler to 1
bsf T2CON,2 ; enable Timer2
bsf CCP1CON,3 
bsf CCP1CON,2 ; enable pwm mode
return
end
    
pregunta user2835684

2 respuestas

4
movlw 0x00
movwf CCPR1L ; set duty cycle

¿Siempre está configurando el ciclo de trabajo en 0? ¿Es el pin de salida siempre bajo? Todo lo demás se ve bien. Solo intente cambiar este número y vea si obtiene algún resultado.

    
respondido por el Justin Trzeciak
2

En su ejemplo, está borrando CCPR1L. Esto está configurando su ciclo de trabajo a cero, por lo que no obtiene ningún resultado.

También puede ocurrir lo contrario. CCPR1L, junto con dos bits en CCP1CON, definen la longitud del pulso pwm. Si esta longitud es más larga que la frecuencia pwm, entonces el pin nunca baja y parece que no hay salida pwm.

Intenta aumentar CCPR1L. Todo lo demás se ve bien.

¡Diviértete!

    
respondido por el bitsmack

Lea otras preguntas en las etiquetas