PWM - Dutycycle affecting frequency?


Closed Thread
Results 1 to 15 of 15
  1. #1
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891

    Default PWM - Dutycycle affecting frequency?

    Hi,

    I'm just playing around with PWM (...and PicMultiCalc).

    While making some experiments, I notice that changing the dutycycle will affect the Period's duration (frequency).

    First, I set dutycylce to 127 (=50%). The frequency is 92,24kHz.
    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1640&stc=1&d=117939319 7">

    Second, same test at 64 (=25%) dutycycle. The frequency is now 46,02kHz.
    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1639&stc=1&d=117939319 7">

    In my comprehension of PWM, dutycycle would affect only the ratio of the HIGH against the LOW signal.

    Is this okay or am I measuring something wrong?
    Attached Images Attached Images   
    Roger

  2. #2
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    i guess something is wrong in your code. Can you post it here?
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  3. #3
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Wink

    Triggering parameters and signal amplitude ... please !!!

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  4. #4
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    36 mVPP looks like the scope is set in AC mode.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  5. #5
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891


    Did you find this post helpful? Yes | No

    Default Code & parameters

    So, here's the code:
    Code:
    ' Fuses
    @ DEVICE PIC12F683,FCMEN_OFF
    @ DEVICE PIC12F683,IESO_OFF
    @ DEVICE PIC12F683,BOD_OFF
    @ DEVICE PIC12F683,CPD_OFF
    @ DEVICE PIC12F683,PROTECT_OFF
    @ DEVICE PIC12F683,MCLR_OFF
    @ DEVICE PIC12F683,WDT_OFF
    @ DEVICE PIC12F683,INTRC_OSC_NOCLKOUT
    
    '-------------------------------------------------------------------------------
    ' Registers   76543210
    ANSEL      = %00000000  'Disable analog inputs
    ADCON0     = %00000000  'ADC is OFF
    CMCON0     = %00000111  'Comparator is OFF
    OPTION_REG = %10000000  'Pull-Ups disabled...
    TRISIO     = %00000000  'All PORTBs are Outputs
    GPIO       = %00000000  'All PORTBs are Low
    
    '-------------------------------------------------------------------------------
    ' Defines
    
    '-------------------------------------------------------------------------------
    ' Variables
    
    '-------------------------------------------------------------------------------
    ' Program
    MAIN:
        PWM GPIO.2,64,1000
        goto main
    end
    And here is how the oscillo is set:
    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1649&stc=1&d=117941075 3">
    Attached Images Attached Images  
    Roger

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Wink Rtfm ...

    Hi,Flotul ...

    Not good to change PWM parameters all the time !!! ( a re-write is a change ... )

    DO NOT use PWM in such a tight loop !!!

    And try it removing the loop ... will work fine,then !!!

    Alain
    Last edited by Acetronics2; - 17th May 2007 at 16:07.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by flotulopex View Post
    MAIN:
    PWM GPIO.2,64,1000
    goto main
    end[/code]
    Try adding a 'DEFINE NO_CLRWDT 1' and see if the freq still changes, or changes as much.

    PBP (by default) adds a ClearWDT instruction before every PBP instruction. So, when you get down to the smaller duty cycle, that instruction executes more and more often, affecting your PWM frequency.

    The problem with the PWM command, being software driven, is that it's frequency is affected by everything else in the program as a whole. It doesn't matter how short you make the program (as you've made the program as practically short as it can get), it'll still be affected by the 'goto main', it'll even be affected if the 'goto main' jumps across a page boundary.

    PWM driven from an interrupt or a hardware module is about the only way to go if you want to keep a stable base frequency.

    There's nothing wrong with your program, or your setup, or your 'scope settings...ya just need a bit more understanding the logic that's running underneath the PWM command...

  8. #8
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Post

    Heuuuu, ReuTeuFeuMeu ....

    [ PBP (by default) adds a ClearWDT instruction before every PBP instruction ]

    That's really new, skimask ... 2.48 release ???

    Worse than "ON INTERRUPT" ... if I understand.

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  9. #9
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Heuuuu, ReuTeuFeuMeu ....
    [ PBP (by default) adds a ClearWDT instruction before every PBP instruction ]
    That's really new, skimask ... 2.48 release ???
    Worse than "ON INTERRUPT" ... if I understand.
    Alain
    Check any .lst file, you'll see it. And it's explained (it's a bit vague, have to read between the lines a bit) under the CLEARWDT command.

    Compile a program, see how many bytes it takes up...
    Then add the 'DEFINE NO_CLRWDT 1', see how many fewer bytes it takes up.

    Incidentally, I didn't RTFM before I found this out awhile back. I was actually RTF.lst file and wondering what all those extra instructions were for Then I RTFM'd and found the info and confirmed that info with a quick search here on 'CLEARWDT'.

  10. #10
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Default

    Hi,Skimask

    When Compiling a project, I Always have the MPLAB Program window under the eyes ... and can see how much CLRWDT are really added in the HEX ...

    Reading the manual, you'll find "automatically inserted at appropriate places" ... which is RIGHT !!!

    Just have a look to it to be convinced

    Alain

    OK for the DEFINE ... stops inserting CLRWDT.

    I sometimes use it if too close from the prog space limit ... to get some room.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  11. #11
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Reading the manual, you'll find "automatically inserted at appropriate places" ... which is RIGHT !!!
    I'm still searching for what I was talking about. I KNOW I read somewhere awhile back that PBP was inserting the CLEARWDT before each PBP command (not PIC instruction) starting with one of the newer versions. It used to be after the command in the older versions, and it used to be not nearly as often as needed. Back when I first got PBP 2.3.something, the WDT would kick out once in awhile, and the .lst file showed CLEARWDT almost at random places, really didn't correspond well with how much time a specific sequence of instructions would use or anything.
    At any rate, yes, 'automatically inserted at appropriate places'...in which the appropriate place would be before an instruction vs. after it.

    Regardless, the faster you run thru the PWM routine posted earlier, with the smaller duty cycles, the greater the percentage of CLEARWDT instructions executed per unit time.

    Although I don't know in this case if those 'extra' CLEARWDT instructions would account for the 2x difference in frequency. Hardware/Interrupt driven PWM is still the way to go.

  12. #12
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Sorry to interrupt, but i wonder why using pwm while the PIC have a CCP?

    And... Does this thread remind something familiar ?
    http://www.picbasic.co.uk/forum/show...highlight=duty
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  13. #13
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891


    Did you find this post helpful? Yes | No

    Default What is it about: knowledge ...and money!

    You're right Steeve,

    I could, I should and I actually use the CCP module of my 12F683.

    But not all "small" PICs have this option so I want to make sure I can get the same result in both cases (HPWM & PWM).

    The other aspect of the problem is costs related. For your information, the PIC's prices in Switzerland are "slightly" different as those I can see in MICROCHIP's website or on components suppliers out of my country. Where a 12F683 costs $ 0,87 in USA, I will pay CHF 5,49 ($ 4,47)!!!

    So, even for fun, I don't like to throw money out of my window
    Roger

  14. #14
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,615


    Did you find this post helpful? Yes | No

    Red face a scope problem !!!

    Hi,Flotul

    Did you read what Melabs tell about PWM wave shape at $ 5.51 ??? ( First of all ... I thought you talked about Hpwm !!! ( RTFQuestion for me ...).

    I think your scope gave you the Low. Freq. ENVELOPE ot the signal ... may be ( surely ...) you should have a different picture on an analog scope !!!

    Digital scopes are fine ... yes, but with a comfortable sampling frequency !!!

    ~ 200 Euros ( 180 with your 20% "discount" ... ) scopes have their limits ... you just found some ...


    You won't have a neat wave shape with PWM ... Never. Try to borrow a 50 or 100 Mhz analog scope ... to see what PWM looks like.

    Alain
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  15. #15
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    891


    Did you find this post helpful? Yes | No

    Default LeCroy = Jumbo Jet 747...

    You might be right: my cheap oscillo has its limits.

    I can grab a LeCroy at the office but to me, its like a "Jumbo Jet 747" (must have at least 30 contextual buttons on the front pannel and a 3 kilos user manual...).

    But maybe I'll try this anyway.

    Nothing is impossible...
    Roger

Similar Threads

  1. SLA battery charging with PWM but which frequency
    By showtime in forum mel PIC BASIC Pro
    Replies: 31
    Last Post: - 13th June 2017, 11:41
  2. Low freq PWM problem
    By ultiblade in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 17th February 2010, 07:09
  3. Variable PWM PIC18F2431
    By trr1985 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 12th June 2009, 06:03
  4. PWM 'channels ...what's that all about then!
    By HankMcSpank in forum General
    Replies: 5
    Last Post: - 23rd April 2009, 16:49
  5. Adjusting PWM frequency
    By flotulopex in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 14th March 2008, 18:12

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts