Hola a todos en este foro, mi problema es el siguiente estoy utilizando el PIC16f877 configurando los dos pwm, he buscado por todos lados de como defasar los dos pwm, ya que cuando configuro los dos pwm y asigno cierto Ciclo de trabajo (CT) para cada uno, los dos CT de los pwm empiezan al mismo tiempo, lo que quiero lograr es que primero empiece el CT del PWM1 despues de un tiempo corto Empiece el CT del PWM2 y posteriormente empice nuevamente le ciclo.
En Pocas Palabras DEFASAR un PWM con respecto al otro.
Aqui les dejo el programa para ver si me pueden ayudar:
Si tienen alguna idea la pueden exponer aqui: gracias
list p=16f877A
#include<p16f877A.inc>
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _LVP_OFF & _XT_OSC
;Parámetros para eliminar los mensajes de warning cuando lo ensamblas
ERRORLEVEL -302 ;suppress "not in bank 0" message
ERRORLEVEL -203 ;suppress message
ERRORLEVEL -305 ;suppress message
ERRORLEVEL -205 ;suppress message
CTH EQU 22H
CTL EQU 23H
CTH2 EQU 3AH
CTL2 EQU 3BH
ORG 00H
INICIO:
NOP
NOP
BSF STATUS,RP0 ;BANCO 1
CLRF TRISB
CLRF TRISC
CLRF TRISA
MOVLW 0FFH
MOVWF TRISD
CLRF TRISE
MOVLW 0FFH ;CARGA PERIODO
MOVWF PR2
BCF STATUS,RP0 ;BANCO 0
CLRF CCPR1L ;INICIALIZA CICLO DE TRABAJO CON 0 PWM1
BCF CCP1CON,CCP1X
BCF CCP1CON,CCP1Y
CLRF CCPR2L ;INICIALIZA CICLO DE TRABAJO CON 0 PWM2
BCF CCP2CON,CCP2X
BCF CCP2CON,CCP2Y
MOVLW 05H ;CONFIGURA TIMER2
MOVWF T2CON ;PREESCALADOR 1/4,HABILITA TIMER2
BSF CCP1CON,CCP1M3 ;CONFIGURA EL MODULO CCP1 PARA OPERACION PWM
BSF CCP1CON,CCP1M2
BSF CCP2CON,CCP2M3 ;CONFIGURA EL MODULO CCP2 PARA OPERACION PWM
BSF CCP2CON,CCP2M2
MOVLW 0AH
MOVWF CTL ;INICIALIZA CT DE 10 BITS EN 0AH
CLRF CTH
MOVLW 0AH
MOVWF CTL2
CLRF CTH2
START:
;PWM1
MOVF CTL,W
MOVWF CCPR1L ;ACTUALIZA PARTE BAJA DEL CT REAL
;A CONTINUACION ACTUALIZA PARTE ALTA DEL CT REAL
MOVLW 0CFH ;MASCARA
ANDWF CCP1CON,1 ;LIMPIA LOS DOS MSBITS DEL CT REAL
MOVLW 03H ;MASCARA
ANDWF CTH,1 ;LIMPIA LOS 6 BITS ALTOS EN CTH
SWAPF CTH,W ;COPIA LOS 2 BITS BAJOS DE CTH EN EL NIBBLE ALTO D W
IORWF CCP1CON,1 ;PONE BITS QUE DEBEN SER 1 EN LOS DOS MSB DEL CT REAL
;PWM2
MOVF CTL2,W
MOVWF CCPR2L ;ACTUALIZA PARTE BAJA DEL CT REAL
;A CONTINUACION ACTUALIZA PARTE ALTA DEL CT REAL
MOVLW 0CFH ;MASCARA
ANDWF CCP2CON,1 ;LIMPIA LOS DOS MSBITS DEL CT REAL
MOVLW 03H ;MASCARA
ANDWF CTH2,1 ;LIMPIA LOS 6 BITS ALTOS EN CTH
SWAPF CTH2,W ;COPIA LOS 2 BITS BAJOS DE CTH EN EL NIBBLE ALTO D W
IORWF CCP2CON,1 ;PONE BITS QUE DEBEN SER 1 EN LOS DOS MSB DEL CT REAL
GOTO START
END