Updating HPWM frequently, safe?


Closed Thread
Results 1 to 40 of 79

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    And, You're all correct!

    Well, except for that part about me being wrong

    After my last post, I started working on an example for Pablo. It's kind of grown along the way, and is now a candidate for replacement of the HPWM command. IMHO

    It pretty much encompasses everything you guys talked about while I was doing it. Plus maybe a bit more.

    It's an Include file that gives 1 new command...
    Code:
    @  HPWM10  1, _DutyCycle, _Frequency
    It works the same way as the PBP HPWM command, except that it uses 10-bit resolution, works with all CCP modules CCP1-CCP5, And is "Glitch-Free" when changing Frequency or DutyCycle.

    Well, at least that's what it's supposed to do. Seems to work pretty good here, but I've only had a day to play with it.

    It uses about 250 more words than HPWM, so I don't know how good it will be for a 12F683. But it definately will fit, if the rest of the program isn't too big.

    If anyone has any problems, I'd appreciate a "Heads Up".

    http://www.pbpgroup.com/files/HPWM10.zip
    <br>
    DT

  2. #2
    Join Date
    Feb 2005
    Posts
    130


    Did you find this post helpful? Yes | No

    Default

    OMG

    Im "digesting" the code, just tried it and it compiles to 409words, compact enough for a 12f683

    Thanks!!!

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor
    Seems to work pretty good here, but I've only had a day to play with it.
    One day to do all that? Wow, some 'over a month TicTacToe brain challenged programmer' will be impressed
    Steve

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

  4. #4
    Join Date
    Feb 2005
    Posts
    130


    Did you find this post helpful? Yes | No

    Default

    I just tested it using this code:

    Code:
    '       Pic Configuration
    @ device pic12f683,INTRC_OSC_NOCLKOUT , wdt_on, mclr_off, protect_off        
    
    '       Hardware configuration
    
    '       I/Os
    TRISIO = %00010010      ' pin1 is ADC , pin4 is the calibration button
    
    '       ADC's
    ANSEL = %00000010  
    DEFINE ADC_BITS 10      ' ADCIN resolution  (Bits)
    DEFINE ADC_CLOCK 1      ' ADC clock source  (Fosc/8)
    DEFINE ADC_SAMPLEUS 11  ' ADC sampling time (uSec)                      
    ADCON0.7 = 1            ' Right justified results
    
    '       Comparator
    'CMCON0 = %00000111     ' Disable comparator
    'VRCON  = %00000000     ' disable
    cmcon0 = %00001110      ' Multiplexed Input with Internal Reference CIS=1
    vrcon  = %10001010      ' set vref=2.25v (from 4v input) 
    
    include "HPWM10.pbp"
    
    ' definitions
    pote 		var word
    Frequency   var word  ' edited after original post per Darrel suggestion
    calibraled  var gpio.5
    
    gpio=0
    frequency=1000
    pause 50    ' coffee break
    
    for pote=1 to 1023 
    
    @ HPWM10  1, _pote, _Frequency
    pause 10
    
    'gosub flashled
    
    next pote
    end
    
    flashled:
    high calibraled     ' I use this to visually count each loop step
    pause 50
    low calibraled      ' by using it I saw that my switcher starts to 
    pause 50            ' work at hpwm=4, less than that is too low
    high calibraled
    pause 50
    low calibraled
    pause 50
    high calibraled
    pause 50
    low calibraled
    pause 700
    return
    Comments:

    I used the flashing led routine to know when my switcher started to work, it started at hpwm=4 which is great, the power led is very dim at this value.

    then I removed the flashing routine and something was too fast, because my switcher was off. So I added a little pause in there and it was solved, tried 1, 5 and settled in 10ms where it started to work again.

    This is great!, now I will test it with adcin

    pablo
    Last edited by peu; - 7th May 2007 at 01:43.

  5. #5
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Both DutyCycle and Frquency MUST be WORD variables.

    I put it in the comments, but I should have mentioned it in the post too.

    That... Frequency con 1000 will cause problems.
    <br>
    DT

  6. #6
    Join Date
    Feb 2005
    Posts
    130


    Did you find this post helpful? Yes | No

    Default

    I just finished testing it with this code:
    Code:
    '       Pic Configuration
    @ device pic12f683,INTRC_OSC_NOCLKOUT , wdt_on, mclr_off, protect_off        
    
    '       Hardware configuration
    
    '       I/Os
    TRISIO = %00010010      ' pin1 is ADC , pin4 is the calibration button
    
    '       ADC's
    ANSEL = %00000010  
    DEFINE ADC_BITS 10      ' ADCIN resolution  (Bits)
    DEFINE ADC_CLOCK 1      ' ADC clock source  (Fosc/8)
    DEFINE ADC_SAMPLEUS 11  ' ADC sampling time (uSec)                      
    ADCON0.7 = 1            ' Right justified results
    
    '       Comparator
    CMCON0 = %00000111     ' Disable comparator
    VRCON  = %00000000     ' disable
    'cmcon0 = %00001110      ' Multiplexed Input with Internal Reference CIS=1
    'vrcon  = %10001010      ' set vref=2.25v (from 4v input) 
    
    include "HPWM10.pbp"
    
    ' definitions
    pote 		var word
    Frequency   var word
    calibraled  var gpio.5
    calibrapin  var gpio.4
    
    gpio=0
    frequency=1000
    pause 50    ' coffee break
    
    loop:
    
    if calibrapin=0 then
        adcin 1, pote
        if pote>1000 then pote=1000
    endif
    
    @ HPWM10  1, _pote, _Frequency
    pause 10
    
    goto loop
    end
    The output is not steady when I use ADCIN, if I enable the calibrapin then it goes to steady mode.

    To generate the adcin values I used a 10k pot instead of the sensor Im using for simplicity sakes.

    Am I doing something wrong?

    Thanks!


    Pablo

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


    Did you find this post helpful? Yes | No

    Default

    Can't tell ya! But as far i remind, the datasheet suggest a maximum impedance of 2.xxx Kohm.

    I tested my code on a EASYPIC 4 board with 10K trim pot... seems to work.

    Post your schematic but make sure your PSU is well filtered and is strong enough for your need first.

    Weird, weird, weird.
    Steve

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

  8. #8
    T.Jackson's Avatar
    T.Jackson Guest


    Did you find this post helpful? Yes | No

    Post

    Quote Originally Posted by mister_e View Post
    One day to do all that? Wow, some 'over a month TicTacToe brain challenged programmer' will be impressed
    Yes, Mister_e, very impressive indeed.

Similar Threads

  1. need help on hpwm
    By helmut in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 28th August 2007, 15:49
  2. HPWM of the port of two HPWM
    By ja2rqk in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 25th April 2007, 15:05
  3. sound command & music
    By trying in forum mel PIC BASIC Pro
    Replies: 14
    Last Post: - 26th May 2006, 14:14
  4. HPWM and A to D interaction question 18F252
    By tcbcats in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 10th May 2006, 03:50
  5. 3 HPWM channels
    By docwisdom in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 4th April 2006, 02:43

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