Hello, it's me again.
I went through the registers in the datasheet and used the example of Bruce here : http://www.picbasic.co.uk/forum/showthread.php?t=6768
I tried to understand and apply it to my case, but it's not doing anything my duty cycle ?

Thank you in advance for your help, it'd be really appreciated

Code:
Duty VAR Word

TRISA  = %11111111
TRISB  = %00000000
TRISC  = %00000010
TRISD  = %00000000
TRISE  = %00000000 

 ' Analog setup
    ' Single shot, single channel, Group A is taken and converted, A/D converter enabled 
    ADCON0 = %00000001
    
    ' 
    ADCON1 = %00010000
    
    ADCON2 = %11001111   ' Right justified, 24 Tad, Frc
    ADCON3 = 0           ' Disable all triggers
    ADCHS = 0            ' Channel select for AN0
    ANSEL0 = %00000001   ' AN0 analog input, rest digital
    
    

PORTB = 0
PORTD = 0 ' clear port


PTCON0=$00 'timebase
PTPERL=$A0 ' $01A0 = 12kHz
PTPERH=$01

PWMCON0 = %01001111
PWMCON1=%00000001
DTCON=$00
OVDCOND = %00000000
OVDCONS = %00000000 'PORT PINS

PDC0L=$00
PDC0H=$00
PDC1L=$00
PDC1H=$00
PDC2L=$00
PDC2H=$00

PDC0L = Duty.LowByte
PDC0H = Duty.HighByte

PDC1L = Duty.LowByte
PDC1H = Duty.HighByte

PDC2L = Duty.LowByte
PDC2H = Duty.HighByte


PTCON1=%10000000


 
GoTo Main

Main:
    ADCON0.1 = 1         ' Start the conversion
    While ADCON0.1=1     ' Wait for it to complete
    Wend

    Duty.HighByte = ADRESH ' get result from AN0
    Duty.LowByte = ADRESL  ' Increment buffer pointer

    OVDCOND = %00000010 'PWM on PWM1