Hello.

I'm pretty sure someone already post something like I need.
I did a very simple program to sweep a frequency from 900Hz to 12KHz (Code below)
But, I need my pulse thickness to be fixed at 5µs everytime.

With my code, I use duty in percentage so the thickness of the pulse change everytime.
It's okay only when frequency reach 2KHz but it's too long before and too short after because I didn't took the right way to setup my HPM.
Yes, I know my mistake and I know too I don't have enough knowledge about Timers I'm not very familiar with.
Then, I'm stupidly looking for an example with "fixed pulse thickness".

I did some search with many keywords but I didn't found what I need.

Could someone give me a way to follow ?
(And sorry for my bad English).

Code:
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF & _BOD_OFF

TRISIO   = %000001
OSCCON   = %01110000           ' 8Mhz
ANSEL    = %001011             ' AN0 and AN1 and AN3 ANALOG
ADCON0.7 = 1                   ' Right justify result      (Pour l'ADCin)
CMCON0   = 7                   ' Analog comparators off    (Pour l'ADCin)

'-------------------------------------------------------------------------------

FREQmax         VAR WORD
FREQmax         = 12000
FREQmin         VAR WORD
FREQmin         = 900
HPWMfreq        VAR WORD
HPWMfreq        = FREQmin      
HPWMduty        VAR WORD
HPWMduty        = 3           ' 1% = 3 à 100% = 254

'-------------------------------------------------------------------------------                                                       

Up              VAR BIT
Up              = 1

GPIO            = 0                         

;----[Main Program Loop]--------------------------------------------------------
MAIN:

HPWM 1, HPWMduty, HPWMfreq    ' Start HPWM

PAUSE 10                      ' 10mS between each steps

IF Up = 1 and HPWMfreq <= FREQmax THEN   'Going UP from 900 to 12KHz
HPWMfreq = HPWMfreq + 1

Else                         ' Here we are at freq maxi
Up = 0

ENDIF

IF Up = 0 and HPWMfreq >= FREQmin THEN    'Going DOWN from 12K to 900Hz
HPWMfreq = HPWMfreq - 1
Else                         ' Here we are at freq mini
Up = 1
ENDIF

IF HPWMfreq = FREQmin THEN 
Boucle = Boucle + 1
Toggle LED
ENDIF

GOTO Main

'-------------------------------------------------------------------------------

    
FIN:
    END