It's ok mackrackit any help is better than none. Here's where I'm at as of now. I have encorperated the rest of the code back into the main now. I've left out the section where I figure out the seeking value and hard coded it. I've also given position a hard coded value as with nothing attached to the pin I will get garbage on the pin. I still have a pot tied to AN5 which does change the DC as I move it up and down. If you look below there are 6 lines in the "timeTomove" sub, if I uncomment the first four only I get no output. If I uncomment out the bottom two I get a couple of pulses on the output (Maybe 2 of 3) but after that the signal drops out. Any ideas? I will continue to work on this, and thank you for the help so far.
Code:'-------------------------------------------------------------------------' ' PIC Defines Specific to PIC Basic Pro ' '-------------------------------------------------------------------------' ' 1. Use internal system clock @ DEVICE PIC16F684, INTRC_OSC_NOCLKOUT ' 2. Turn watchdog timer on @ DEVICE PIC16F684, WDT_OFF ' 3. Power on time on @ DEVICE PIC16F684, PWRT_ON ' 4. Turning off the master clear input @ DEVICE PIC16F684, MCLR_OFF ' 5. Brown out detect on @ DEVICE PIC16F684, BOD_ON ' 6. Data EE Read protect is off @ DEVICE PIC16F684, CPD_OFF ' 7. Code protect is off @ DEVICE PIC16F684, PROTECT_OFF '-------------------------------------------------------------------------' ' Hardware Defines Specific to PIC Basic Pro ' '-------------------------------------------------------------------------' define ADC_BITS 10 'Set A/D coverter to use 10 bits define ADC_SAMPLEUS 50 'Set A/D sample time as 50us DEFINE OSC 8 'Change clock speed to 8Mhz '-------------------------------------------------------------------------' ' Define Program Variables ' '-------------------------------------------------------------------------' R VAR BYTE ScaledX VAR BYTE ScaledY VAR BYTE ShortX VAR BYTE ShortY VAR BYTE Slope VAR WORD AnalogLow VAR WORD 'Digital value for an analog low signal AnalogHigh VAR WORD 'Digital value for an analog high signal CurrentSpeed VAR WORD DUTY VAR WORD ExtLimit VAR WORD 'Stored value of the extend limit setting JoyX VAR WORD JoyY VAR WORD RetLimit VAR WORD 'Stored value of the retract limit setting Position VAR WORD 'Analog value of the internal potentiometer Seeking VAR WORD Speed VAR WORD '-------------------------------------------------------------------------' ' Define I/O and EEPROM Definitions ' '-------------------------------------------------------------------------' data @0,word 768 'Set default extend limit data @2,word 256 'Set default retract limit AnalogHigh = 768 'Set analog high signal level AnalogLow = 256 'Set analog low signal level ' READ 1, RetLimit.Highbyte ' READ 0, RetLimit.Lowbyte ' READ 3, ExtLimit.Highbyte ' READ 2, ExtLimit.Lowbyte '-------------------------------------------------------------------------' ' Initialise PIC Hardware ' '-------------------------------------------------------------------------' CMCON0 = 7 'Turn comparators off ADCON0.7 = 1 'Set A/D Values to be right justified ADCON0.0 = 1 'Turn on A/D Converter ANSEL = %00110111 'Turn on select analog registers TRISA = %00001111 'Turn on select register inputs TRISC = %00111111 'Turn on select register inputs PR2 = 249 CCP1CON = %11001100 CCPR1L = 0 PIR1.1 = 0 T2CON.0 = 0 T2CON.1 = 0 T2CON.2 = 1 WHILE (PIR1.1 = 0) WEND; TRISC = %00000011 '-------------------------------------------------------------------------' ' Start of Main Program ' '-------------------------------------------------------------------------' Main: ADCIN 1, JoyX JoyX.LowByte = ADRESL JoyX.HighByte = ADRESH ADCIN 0, JoyY JoyY.LowByte = ADRESL JoyY.HighByte = ADRESH ShortX = JoyX / 4 ShortY = JoyY / 4 Seeking = 400 GOTO TimeToMove TimeToMove: ADCIN 2, Position Position.LowByte = ADRESL Position.HighByte = ADRESH Position = 300 If (Position < Seeking + 10) OR (Position > Seeking - 10) THEN ' DUTY = 0 ' CCP1CON.4 = DUTY.0 ' CCP1CON.5 = DUTY.1 ' CCPR1L = DUTY >> 2 ELSE IF (Position > Seeking + 10) THEN ' CCP1CON.7 = 1 GOSUB GETSpeed ENDIF IF (Position < Seeking - 10) THEN ' CCP1CON.7 = 0 GOSUB GetSpeed ENDIF ENDIF GOTO Main GetSpeed: ADCIN 5, Speed Speed.lowbyte = ADRESL Speed.highbyte = ADRESH IF (Speed > AnalogLow) & (Speed < AnalogHigh) THEN DUTY = 617 CCP1CON.4 = DUTY.0 CCP1CON.5 = DUTY.1 CCPR1L = DUTY >> 2 ENDIF IF (Speed < AnalogLow) THEN DUTY = 400 CCP1CON.4 = DUTY.0 CCP1CON.5 = DUTY.1 CCPR1L = DUTY >> 2 ENDIF IF (Speed > AnalogHigh) THEN DUTY = 850 CCP1CON.4 = DUTY.0 CCP1CON.5 = DUTY.1 CCPR1L = DUTY >> 2 ENDIF RETURN END




Bookmarks