I don't understand this code!


Closed Thread
Results 1 to 40 of 47

Hybrid View

  1. #1
    Join Date
    Apr 2006
    Location
    New Hampshire USA
    Posts
    298


    Did you find this post helpful? Yes | No

    Smile your second (inverse) code

    Hi Russ,
    I think with your original pins (GPIO.0 and GPIO.1), and your second (inverse) code:

    LOW GPIO.0 'INITIAL CONDITIONS
    LOW GPIO.1

    START:
    HIGH GPIO.1
    PAUSEUS 4168 ' HIGH TIME
    LOW GPIO.1
    PAUSEUS 4167 'DEAD TIME, BOTH LOW
    HIGH GPIO.0 'SETS PIN 7 HIGH
    PAUSEus 4168 'FOR 4.168 MILLISECONDS
    LOW GPIO.0
    PAUSEUS 4167 'DEAD TIME

    GOTO START '60 HZ FREQUENCY

    END

    ...and your diodes reversed and the resistor tied to ground (as skimask said).

    Your two LEDs will not be on at the same time... (try it)

    I still would like to know between which points are you measuring the wave (voltage) from?

    -Adam-
    Ohm it's not just a good idea... it's the LAW !

  2. #2
    Join Date
    Jan 2006
    Location
    New Hampshire, USA
    Posts
    107


    Did you find this post helpful? Yes | No

    Default

    Hi Pic_User. Yes, I know that, but why cannot I connect the LEDs to + and pulse to ground? I changed the program, trying to zero in on the probem. Now GPIO.1 pulses to ground like I want but GPIO.0 pulses positive in phase with GPIO.1. I would not expect GPIO.0 to change at all.

    high GPIO.0 'INITIAL CONDITIONS
    high GPIO.1

    START:
    low GPIO.1
    high GPIO.0
    PAUSEUS 4168 ' ON TIME
    high GPIO.1
    PAUSEUS 4167 'DEAD TIME, BOTH high
    high GPIO.1
    PAUSEus 4168 'FOR 4.168 MILLISECONDS
    high GPIO.1
    PAUSEUS 4167 'DEAD TIME

    GOTO START '60 HZ FREQUENCY

    END

    I will post the final circuit so you can see what I am trying to do. I want to replace the 555, flip flops and gate with the PIC.
    Attached Images Attached Images  
    Last edited by Russ Kincaid; - 7th May 2007 at 17:10.

  3. #3
    Join Date
    Apr 2006
    Location
    New Hampshire USA
    Posts
    298


    Did you find this post helpful? Yes | No

    Lightbulb anti-overlap time

    Hi Russ,

    Looking at the circuit you want to replace:
    It looks like you want to avoid both being on at the same time, at all costs (as you said).

    It may be better to declare variable for the “HIGH TIME” and the “anti-overlap” time so you can change them in one place in the program, while playing with the duty cycle.

    Could be missing something but it looks like you want the positive part of the cycle to take 8.336 milliseconds and same time for the negative part.
    Sixty Hertz = 1/60 = 0.0167 (16.67 milliseconds).
    This gives us 16.67 milliseconds for a complete (whole) cycle.

    How much on or off time can be played with but the recurring 60Hz, is fixed.
    So the total on and off time for GPIO.0 and GPIO.1 should equal 16.67 milliseconds, and never be on at the same time.

    I used your same code and beat it up pretty bad:

    LOW GPIO.0 'INITIAL CONDITIONS
    LOW GPIO.1

    START:

    HIGH GPIO.1
    PAUSEUS 8236 ' HIGH TIME - GPIO.1 only
    LOW GPIO.1 ‘both pins low
    PAUSEUS 100 ' anti-overlap time
    ‘ HIGH TIME and over-lap time should add to 8.336 milliseconds

    HIGH GPIO.0 ' GPIO.1 has been low during anti-overlap time
    PAUSEUS 8236 ' HIGH TIME - GPIO.0 only
    LOW GPIO.0 ‘ both pins low
    PAUSEUS 100 ' anti-overlap
    ‘ HIGH TIME and over-lap time should add to 8.336 milliseconds

    GOTO START '60 HZ FREQUENCY

    END

    Play with HIGH TIME and anti-overlap to get the desired duty-cycle (average vs. RMS vs. 0.7 ) but they should total to 8.336 milliseconds each half cycle. Then 16.67 milliseconds for the whole cycle.

    You should run the diodes (LEDs) between the PIC pins and the resistor to common (ground).

    Oh yeah, I should warn you that I don’t know what I am doing!:>

    -Adam-
    Ohm it's not just a good idea... it's the LAW !

  4. #4
    Join Date
    Jan 2006
    Location
    New Hampshire, USA
    Posts
    107


    Did you find this post helpful? Yes | No

    Default

    Thanks, but I have already built the board, I don't want to cut traces if I don't have to. My original program produced the inverted waveform, I want to be able to produce the waveform per the sketch. As another experiment, I modified the program, adding another HIGH GPIO.0, but now both outputs go low at the same time for 8 mS.

    high GPIO.0 'INITIAL CONDITIONS
    high GPIO.1

    START:
    low GPIO.1
    high GPIO.0 'GPIO.0 GOES LOW
    PAUSEUS 4168 ' ON TIME
    high GPIO.1 ' GPIO.1 GOES LOW
    HIGH GPIO.0 'GPIO.0 STAYS LOW
    PAUSEUS 4167 'DEAD TIME,
    high GPIO.1 ' BOTH GO HIGH
    PAUSEus 4168 'FOR 4.168 MILLISECONDS
    high GPIO.1 BOTH STAY HIGH
    PAUSEUS 4167 'DEAD TIME

    GOTO START '60 HZ FREQUENCY

    END
    GPIO.0 and GPIO.1 are synchronous but I don't know that they follow the program!

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Russ Kincaid View Post
    high GPIO.0 'INITIAL CONDITIONS
    high GPIO.1
    START:
    low GPIO.1
    high GPIO.0 'GPIO.0 GOES LOW
    PAUSEUS 4168 ' ON TIME
    high GPIO.1 ' GPIO.1 GOES LOW
    HIGH GPIO.0 'GPIO.0 STAYS LOW
    PAUSEUS 4167 'DEAD TIME,
    high GPIO.1 ' BOTH GO HIGH
    PAUSEus 4168 'FOR 4.168 MILLISECONDS
    high GPIO.1 BOTH STAY HIGH
    PAUSEUS 4167 'DEAD TIME
    GOTO START '60 HZ FREQUENCY
    END
    I think you might be confusing yourself a bit...not sure, but that's what it looks like to me...
    high GPIO.0 'GPIO.0 GOES LOW ---- GPIO.0 looks like it goes low because the LED goes out. No... it's got 5v on both sides of the LED...no current flow...

    I think, in the end, you're going to end up cutting traces and doing some rewiring.

  6. #6
    Join Date
    Apr 2006
    Location
    New Hampshire USA
    Posts
    298


    Did you find this post helpful? Yes | No

    Default okay

    This code should work with the LEDs wired the original way.
    You could even put a time delay before the ON time and after the ON time, to “push” the waveform around. To get the desired timing to get the quasi sine wave at 60 Hz. I have no idea what timing will help!
    Just be sure the total adds up to the times for 60Hz.

    START:
    PAUSEUS 2074 ' before pulse
    LOW GPIO.1 ‘ON = pulse
    PAUSEUS 4168 ' ON TIME - GPIO.1 only
    HIGH GPIO.1 ‘both pins OFF
    PAUSEUS 2074 ' after pulse
    PAUSEUS 20 ' anti-overlap time
    ‘should add to 8.336 milliseconds

    PAUSEUS 2074 ' before pulse
    LOW GPIO.0 ‘ON = pulse
    PAUSEUS 4168 ' ON TIME - GPIO.0 only
    HIGH GPIO.0 ‘both pins OFF
    PAUSEUS 2074 ' after pulse
    PAUSEUS 20 ' anti-overlap time
    ‘should add to 8.336 milliseconds
    GOTO START '60 HZ FREQUENCY

    END

    I still would like to know between which points are you measuring the wave (voltage) from?
    Ohm it's not just a good idea... it's the LAW !

  7. #7
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Pic_User View Post
    I still would like to know between which points are you measuring the wave (voltage) from?
    I'm guessing just looking at the LEDs, not actually measuring voltage...
    I could be wrong...been there before

Similar Threads

  1. Reading in Manchester code
    By brid0030 in forum Code Examples
    Replies: 0
    Last Post: - 10th March 2009, 21:55
  2. How much code space do PBP statements use.
    By Darrel Taylor in forum Code Examples
    Replies: 5
    Last Post: - 13th February 2009, 21:31
  3. Loop with two motor and 2 sensors
    By MrRoboto in forum mel PIC BASIC
    Replies: 4
    Last Post: - 8th December 2008, 23:40
  4. Making Program Code Space your playground...
    By Melanie in forum Code Examples
    Replies: 15
    Last Post: - 19th July 2008, 08:26
  5. Re-Writing IF-THEN-AND-ENDIF code?
    By jessey in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 18th August 2006, 17:23

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