A last question : I've doubts about the duty cycle. What's the exact range of the duty cycle?

If I define a duty cycle between 0-10, the simulator oscilloscope gives me weird things (the inverted signal "jumps")...
If I define a duty cycle above 1023, same thing...

The code used :
Code:
    ' At 20MHz, to figure a PWM frequency of 19.455kHz
    ' TPWM = time period of PWM frequency
    ' PTPER = 12-bit period register PTPERL and PTPERH
    ' PTMRPS = PWM time base prescaler
    ' 
    '        (PTPER+1)*PTMRPS  257
    ' TPWM = ----------------  =  ------------ = 0.0000514 
    '             Fosc/4            5000000
    '
    ' Frequency = 1/TPWM = 1/0.0000514 = 19.455kHz
    '
    ' PWM resolution (bits resolution for duty cycle)
    '
    '              log(20MHz/19.455kHz)    3.01
    ' Resolution = ------------------ = ----------- = 10 bits
    '                    .301              .301
 
'PIC initialization
DEFINE LOADER_USED 1
DEFINE OSC 40      

'Port registers configuration
PORTB = 0               ' Clear ports
TRISB = %11000000       ' PWM 0,1,2,3,4,5 outputs
TRISC = 2               ' RC1 = FLTA input (ground RC1 to halt PWM), pull-up resistor on RC1
                            
'PCPWM registers configuration
DTCON = %00001010       ' Deadtime (500ns)
PTCON0 = %00000100      ' 1:1 postscale, Fosc/4 1:1 prescale, free running mode
PTCON1 = %10000000      ' PWM time base is ON, counts up, 19.45kHz/4
PTPERL = 0              ' PWM low-side
PTPERH = 1              ' PWM high-side
	
'PWM registers configuration
PWMCON0 = %01000000     'PWM 0,1,2,3,4,5 set in pair mode
PWMCON1 = %00000001     'PWM timer sync configuration
FLTCONFIG = %00000011   'Fault configuration

'U, V and W duty variables
uduty VAR WORD
vduty VAR WORD
wduty VAR WORD

'Phases duty
uduty = 1         
vduty = 1000
wduty = 1000
        
pwmlp: ' PWM update loop

'PWM U phase 
PDC0L = uduty.LOWbyte
PDC0H = Uduty.HIGHByte

'PWM V phase
PDC1L = vduty.LOWbyte
PDC1H = vduty.HIGHByte

'PWM W phase  
PDC2L = wduty.LOWbyte
PDC2H = wduty.HIGHByte

goto pwmlp