what is wrong am i doing in this code?


Closed Thread
Results 1 to 14 of 14

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Hi,
    That would have been good to know so that *I* didn't have to waste time looking at the wrong datasheet when trying to help...

    For the 16F628A with CMCON set to 5 you have one comparator enabled, positive input on RA2, negative on RA1. This matches your schematic.
    CMCON.7 should be '1' when the voltage at RA1 is less than the voltage on RA2.

    In your schematic you have a voltage divider connected to RA2. There's a supply symbol "feeding" the voltage divider but it doesn't say what voltage. Have you "measured" the voltage at the RA2 pin, what is the voltage? Is it 0V by any chance?

    /Henrik.

    PS. Why don't you wire up the circuit on a breadboard instead of that simulator? I know it's a great tool (I wish I could justify the cost) but sometimes, especially when you're new at this, it's just easier (and a lot better) to play with real life hardware.

  2. #2
    Join Date
    Jan 2012
    Posts
    24


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Quote Originally Posted by HenrikOlsson View Post
    Hi,
    That would have been good to know so that *I* didn't have to waste time looking at the wrong datasheet when trying to help...

    For the 16F628A with CMCON set to 5 you have one comparator enabled, positive input on RA2, negative on RA1. This matches your schematic.
    CMCON.7 should be '1' when the voltage at RA1 is less than the voltage on RA2.

    In your schematic you have a voltage divider connected to RA2. There's a supply symbol "feeding" the voltage divider but it doesn't say what voltage. Have you "measured" the voltage at the RA2 pin, what is the voltage? Is it 0V by any chance?

    /Henrik.

    PS. Why don't you wire up the circuit on a breadboard instead of that simulator? I know it's a great tool (I wish I could justify the cost) but sometimes, especially when you're new at this, it's just easier (and a lot better) to play with real life hardware.
    your right Henrik, input voltage at the RA2 is 3volts

    /chitalula.
    I will wire the circuit on the breadboard when the circuit do what i want. as you know that iam new on the world of programming. all what am doing now is just on the way to have boost converter with constant output current.
    when the circuit with codes will be complete i will consult you to have that beadboard and other equipments. for now help me here so that i accomplish this task

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Hi,
    The only thing I see in the code is that there is no main loop, if COMPOUT is 1 when it gets to the WHILE statement it sets PortB.5 and then just wanders off into la-la-land. I believe a real PIC would restart once it reaches the end of program memory but I have NO idea what the simulator does. Try
    Code:
    TRISA=255
    TRISB=0 
    CMCON=%00000101
    
    compOut VAR CMCON.7
    VRCON=0
    pauseus 10
    duty var byte 
    
    Main:
      duty=0
    
      while (compout=0)
        pwm 7,duty,1
        duty=duty+1
      wend 
      
      portb.5=1
      pause 100
    Goto Main
    /Henrik.

  4. #4
    Join Date
    Jan 2012
    Posts
    24


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    thanx in advance Henrik. now i want to continue to output constant duty ratio when the comparator input are equal, is it possible to output that constant duty cycle which make input equal to Vref?

  5. #5
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Hi,
    Not sure I understand exactly what you mean. A comparator will only tell you if its positive input is EITHER above or below its negative input. There is no way to tell if the two inputs are "equal". What you COULD possibly do is to use both comparators and create a window comparator which will tell you if the input is below, within or above the window/thresholds.

    Or use the ADC...

    /Henrik.

  6. #6
    Join Date
    Jan 2012
    Posts
    24


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Quote Originally Posted by HenrikOlsson View Post
    Hi,
    Not sure I understand exactly what you mean. A comparator will only tell you if its positive input is EITHER above or below its negative input. There is no way to tell if the two inputs are "equal". What you COULD possibly do is to use both comparators and create a window comparator which will tell you if the input is below, within or above the window/thresholds.

    Or use the ADC...
    /Henrik.
    up to now i dont need to continue to work with the comparator module because it fail to do as i want
    i want to use adc but have already read the adcin command but how to use adc to compare the two inputs in the pic i stop there,
    can you give me any sample code on that issue?

  7. #7
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: what is wrong am i doing in this code?

    Code:
    Feedback  VAR WORD
    Reference VAR WORD
    
    DeadBand  CON 2         ' +/-, set to 0 if no deadband is needed.
    
    Main:
        ADCIN 0, Feedback       ' Get feedback voltage from Channel 0
        ADCIN 1, Reference      ' Get reference voltage from Channel 1
    
        ' Now compare the feedback voltage to the reference voltage and include the deadband.
    
        IF Feedback > (Reference + Deadband) THEN   ' Feedback is higher than reference
            ' Do whatever is needed here.
        ENDIF
    
        If Feedback < (Reference - Deadband) THEN    ' Feedback is lower than reference
          ' Do whatever is needed here.
        ENDIF
    Goto Main

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