Hello all
Running a 12F675 with 1 channel of a/d. Can someone take a look at this code and help me figure out why the a/d isn't running. (at least doesn't seem so) This thing is driving me crazy! I think it should run but it doesn't.
Symptoms: My test board shows a/d in to pin as 0-5volts, but chip stays locked in "outrange" and led flashes on and off ok.
What can I do to fix the code?
Help will be appreciated-might save me from the rubber room!
Thanks,
Ron
Here's the code:
@_CONFIG_INTRC_OSC_NOCLKOUT &_WDT_ON &_PWRTE_ON &_MCLRE_OFF & BODEN_OFF
'INTERNAL OSCILLATOR (4 MHZ)
'ENABLE WATCH DOG TIMER
'ENABLE POWER UP TIMER
'DISABLE MASTER CLEAR FUNCTION
'************************************************* ***************
'VARIOUS OPERATION PARAMETERS
'GPIO.0 IS A/D INPUT FROM VOLTAGE DIVIDER TO SET HIGH OR LOW
'CHARGE. THIS FUNCTION TURNS ON 4710 MOSFET SWITCH (GPIO.4)
'AND LED (GPIO.2) (STEADY ON) TO INDICATE FULL 3 AMP. CHARGE
'TO BATTERY BETWEEN 12 VOLTS AND 16 VOLTS. OUTSIDE OF THESE
'VOLTAGES, GPIO.4 IS LOW AND GPIO.2 FLASHES ON AND OFF, ONCE
'PER SECOND. GPIO.3 IS MCLRE, PULLED TO Vcc BY 4.7K RESISTOR.
'GPIO.0 AND GPIO.3 ARE INPUTS AND GPIO.2 AND GPIO.4
'ARE OUTPUTS. (OTHERS COME UP AS INPUTS
' HARDWARE CONNECTIONS
'====================
'GPIO.0 A/D INPUT TO ADC CHANNEL 0
'GPIO.1 N/C
'GPIO.2 OUTPUT TO CASE LED(flashes on and off)
'GPIO.3 MCLR PIN
'GPIO.4 HIGH TO PHOTOVOLTAIC MOSFET DRIVER
'GPIO.5 N/C
'=====================
DEFINE OSC 4
DEFINE ADC_BITS 10 '10 BIT A/D CONVERSION RESULT
DEFINE ADC_CLOCK 3 'INTERNAL A/D RC CLOCK
DEFINE ADC_SAMPLEUS 50 'SET SAMPLE TIME IN MICROSECONDS
CMCON = 7 'TURN COMPARITORS OFF
adval0 VAR WORD 'Create adval0 to store result
TRISIO = %001001 ' Set GSIO 0 & 3 TO INPUTS
ANSEL = %01100001 ' Set GSIO 0 TO ANALOG A/D IN W/Frc
' OTHER PINS TO DIGITAL
ADCON0 = %10000001 ' Vcc REF/Turn on A/D Module
PauseUs 50 'Wait 50 MICROSECONDS
START:
ADCON0.1 = 1 'Start Conversion (GO/NOT DONE BIT SET)
WHILE ADCON0.1 = 1:WEND 'MOVE ON WHEN FINISHED WITH A/D CONVERSION
ADCIN 0, ADVAL0 'DEFINE C0NVERSION IN VAR ADVAL0
IF (ADVAL0 <= 906) AND (ADVAL0 >= 604) Then INRANGE
'GO TO FULL 3 AMP RATE (MOSFET TURNED ON)
IF (ADVAL0 <= 603) OR (ADVAL0 >= 907) Then OUTRANGE
'GO TO TRICKLE CHARGE (MOSFET OFF-NO RESISTOR SHUNT IN)
'10 ohm IN SERIES WITH CHARGER.
INRANGE: 'LED ON STEADY-MOSFET TURNED ON
High GPIO.4: High GPIO.2
GoTo START
OUTRANGE:'LED FLASHES ON AND OFF MOSFET OPEN
Low GPIO.4: High GPIO.2
Pause 500: Low GPIO.2: Pause 490: GoTo START
End
Bookmarks