New to programming and am having a few issues with some code


Closed Thread
Results 1 to 20 of 20

Hybrid View

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


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    motion seconded... back to basics... and pillow
    Steve

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

  2. #2
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    I don't see where you are re-reading the commanded position within the main loop. I only see where you are reading the feedback position in the interrupt routine... Maybe my eyes are going bad...
    Dave Purola,
    N8NTA
    EN82fn

  3. #3
    Join Date
    Apr 2012
    Location
    Leicester UK
    Posts
    21


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    Thank you for the feedback so far.

    I am work at the moment so I can not impliment the suggestions until later today,I will give feedback on any results in due course.

    Dave - at the moment it only should read the target position at the start of program and only update the target position if the PIC is reset, I intend to write in a routine later in the programs evolution that will allow the target position to be updated while the program is running.

    Once again thank you for the help.

  4. #4
    Join Date
    Apr 2012
    Location
    Leicester UK
    Posts
    21


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    I have made the suggested changes to the program. depending on the position of the potentiometers when the power is applied to the circuit, one of the direction LEDs lights up. If both of the Potentiometers have equal resistances, both of the direction LEDs light up. The power LED never seems to light. I have checked the LEDs to ensure they are working as expected. I have also checked that the resistance of the potentiometers functions as expected.

    The reading of the ADC appears to work, though the current position does not seem to update. I believe that either the If statements do not work properly or the main loop is not cycling, or the program is stopping as it is turning the LEDs on.

    Is there anything that I am missing?

    I have copied the latest form of the code bellow:

    DEFINE OSC 8

    'GP2 (AN2) IS FOR TARGET POSITION (INPUT)
    'GP4 DIRECTION SIGNAL CW (OUTPUT)
    'GP5 DIRECTION SIGNAL CCW (OUTPUT)
    'GP0 POWER (OUTPUT)
    'GP1 (AN1) CURRENT POSITION (INPUT)

    'REGISTERS
    OPTION_REG = %11000000
    INTCON = %11000000
    PIE1 = %01000000
    PIR1 = %00000000
    OSCCON = %01110001
    TRISIO = %00000111
    ANSEL = %01010110
    CCP1CON = %00000000

    INCLUDE "DT_INTS-14.bas" ' Base Interrupt System
    INCLUDE "ReEnterPBP.bas" ' Include if using PBP interrupts

    ;---------------------------------------------------------------------------
    wsave VAR BYTE $20 SYSTEM ' location for W if in bank0
    ;wsave VAR BYTE $70 SYSTEM ' alternate save location for W
    ' if using $70, comment wsave1-3

    ' --- IF any of these three lines cause an error ?? ------------------------
    ' Comment them out to fix the problem ----
    ' -- Which variables are needed, depends on the Chip you are using --
    wsave1 VAR BYTE $A0 SYSTEM ' location for W if in bank1
    'wsave2 VAR BYTE $120 SYSTEM ' location for W if in bank2
    'wsave3 VAR BYTE $1A0 SYSTEM ' location for W if in bank3
    ' --------------------------------------------------------------------------

    'OUTPUT PINS
    DIRCW VAR GPIO.4
    DIRCCW VAR GPIO.5
    PWMOUT VAR GPIO.0

    'VARIABLES
    TARGET VAR WORD bank0
    TARGET_L VAR Target.BYTE0
    TARGET_H VAR TARGET.byte1
    CURRENT VAR WORD bank0
    CURRENT_L VAR current.byte0
    CURRENT_H VAR current.byte1

    ASM
    INT_LIST macro ; IntSource, Label, Type, ResetFlag?
    INT_Handler AD_INT, _CurrentPos, PBP, yes
    endm
    INT_CREATE ; Creates the interrupt processor
    ENDASM

    'READ TARGET POSITION FROM POT
    ADCON0 = %00001011 'TARGET POSITION READ
    REPEAT
    PAUSE 100
    UNTIL ADCON0.1 = 0

    TARGET.lowbyte = ADRESL
    Target.HighByte = ADRESH

    ADCON0 = %00000111 'CURRENT POSITION ADC SETUP

    'MAIN PROG
    MAIN:
    IF CURRENT=TARGET THEN
    gosub motorbreak
    else
    if current > target then
    gosub motorcw
    else
    gosub motorccw
    endif
    endif
    GOTO MAIN

    'SUB PROGRAM
    MotorBreak:
    GPIO = %00110001
    return

    MotorCW:
    GPIO = %00010001
    Return

    MotorCCW:
    GPIO = %00100001
    Return

    CurrentPos:
    current.lowbyte = ADRESL
    Current.HighByte = ADRESH
    @ INT_RETURN ;RETURN

    END


    Many thanks

  5. #5
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    How is the power Led wired?
    I can only assume it is wired so that the Pic is sourcing the current to the led. Am I correct?
    Dave Purola,
    N8NTA
    EN82fn

  6. #6
    Join Date
    Apr 2012
    Location
    Leicester UK
    Posts
    21


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    Yes the LED is sourcing the current to the LED, which is exactly the same as the other LEDs. which do light up depending on the position of the potentiometers.

    many thanks

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


    Did you find this post helpful? Yes | No

    Default Re: New to programming and am having a few issues with some code

    well... maybe not a bad idea to read the ADC again once in a while, as it is right now you read it only once
    Steve

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

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