PWM - Dutycycle affecting frequency?


Closed Thread
Results 1 to 15 of 15

Hybrid View

  1. #1
    Join Date
    Aug 2006
    Location
    SWITZERLAND (french speaking)
    Posts
    938


    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

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


    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 " !!!
    *****************************************

  3. #3
    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...

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


    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 " !!!
    *****************************************

  5. #5
    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'.

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


    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 " !!!
    *****************************************

  7. #7
    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.

  8. #8
    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.

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 : 0

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