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




Bookmarks