PDA

View Full Version : Code not working. Analog readings on 2 pins



financecatalyst
- 30th May 2012, 09:12
Hello, my following code is not working for some reason. Can someone help please.
On my computer screen I am getting Time=0, Ambient=0. Time Pin is connected to +5V with a 4.7k, I have not attached a POT yet, even though when I did, the voltage on the pin was around 2.5V, but the reading was still 0.

LDR voltage is going to Ldr pin. LDR is connected in voltage divider fashion with voltage going to PIC using a 4.7k. Again I tried to change the voltage as well on this pin but the reading stays as 0.

Thanks in advance.


;-----------------PIC16F676---------------------------Include "modedefs.bas"
DEFINE OSC 4 ' OSCCON defaults to 4MHz on reset
;DEFINE OSCCAL_1K 1
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
;-------------CONFIGURATION FUSES SET HERE-------------------------


@ __Config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN & _CP & _CPD


'----------------------------------------
DEFINE DEBUG_REG PORTC
DEFINE DEBUG_BIT 5
DEFINE DEBUG_BAUD 2400
DEFINE DEBUG_MODE 0




'-------Analog Input--------------
Poten Var PortA.1
Ldr Var PortC.3
'--------------------------------------


Time Var Word
Time1 Var Word
Counter Var Byte
Ambient Var Word
Ambient1 Var Word
B0 Var Word


;------REGISTERS SET --------
PORTA=0
PORTC=0
TRISA = 0010
TRISC = 1110
OPTION_REG = 128
PORTA=0
PORTC=0
CMCON=7
ANSEL=000010
ADCON1=110000
ADCON0=000000
'---------------------------------------

Pause 3000


GoSub LoadTime
Time1=Time
GoSub LoadLight
Counter=0
Main:
; my rest of the code
Goto Main


LoadTime:
ADCIN Poten,Time : Pause 10
; Time=(Time/4)
DEBUG "TIME=",DEC Time,10
Return


LoadLight:
ADCIN Ldr,Ambient : Pause 10
DEBUG "AMBIENT=",DEC AMBIENT,10
While Setswitch=1 : Pause 330 : wend
Return

Acetronics2
- 30th May 2012, 09:31
Hi :greedy_dollars: ,

Just open your manual @ the ADC page ...

WHICH kind of parameter is used to select the input channel ???

Alain

financecatalyst
- 30th May 2012, 10:00
Hi, Alain, thanks for replying. I tried the following as well from what I understood:

LoadTime:
ADCON0=%10000100 : Pause 10
ADCIN Poten,Time : Pause 10
; Time=(Time/4)
DEBUG "TIME=",DEC Time,10
Return


LoadLight:
ADCON0=%10011100 : Pause 10
ADCIN Ldr,Ambient : Pause 10
DEBUG "AMBIENT=",DEC AMBIENT,10
While Setswitch=1 : Pause 330 : wend
Return

No Luck. Where am I going wrong. I did this before but only with 1 channel. That worked out well. Now never tried anything with two channels, so can't say much.

financecatalyst
- 30th May 2012, 10:03
Also tried the following as well: (Still no luck)

LoadTime: ANSEL=%00000010
ADCON0=%10000100 : Pause 10
ADCIN Poten,Time : Pause 10
; Time=(Time/4)
DEBUG "TIME=",DEC Time,10
Return


LoadLight:
ANSEL=%10000000
ADCON0=%10011100 : Pause 10
ADCIN Ldr,Ambient : Pause 10
DEBUG "AMBIENT=",DEC AMBIENT,10
While Setswitch=1 : Pause 330 : wend
Return

Acetronics2
- 30th May 2012, 10:07
GOTO #2




WHICH kind of parameter


BTW ... Which version of PBP are you using ??? , < 3 ???

Alain

financecatalyst
- 30th May 2012, 10:18
I am really sorry, I am not getting it yet what you are trying to say. I have read about 3 parameters, ANSEL, ADCON0 & 1. I have tried with different ways but :(
I am using PBP version 2.5.

Acetronics2
- 30th May 2012, 16:01
IF you had upgraded to V 3.0 ...

your code had worked fine !!! ( It's written in the holy manual !!! ... I just discovered it at this time ...)

The error is in your channel selection parameter ... :uncomfortableness:

Alain

financecatalyst
- 31st May 2012, 10:36
Hi, Ok, I upgraded the whole PBP to 3 version. I even upgraded my MPLAB to Version 8.84 I am getting the following error:


Executing: "C:\PBP3\pbpx.exe" -ampasmwin -oq -z -p16F676 "Light_676.BAS"
PICBASIC PRO(TM) Compiler 3.0.5.4, (c) 1998, 2012 microEngineering Labs, Inc.
All Rights Reserved.
ERROR: Bad command parameter. -z
BUILD FAILED: Thu May 31 10:18:03 2012

financecatalyst
- 31st May 2012, 15:15
Alain, here is the update. Updating to PBP3 didn't worked using MPLAB. But I copied the code to MicroCodeStudio. Compiled it and it compiled fine using PBP3 compiler. The result is the same:


;-----------------PIC16F676---------------------------
Include "modedefs.bas"
DEFINE OSC 4 ' OSCCON defaults to 4MHz on reset
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
;-------------CONFIGURATION FUSES SET HERE-------------------------


@ __Config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN & _CP & _CPD


'----------------------------------------
DEFINE DEBUG_REG PORTC
DEFINE DEBUG_BIT 5
DEFINE DEBUG_BAUD 2400
DEFINE DEBUG_MODE 0


'-------Analog Input--------------
Poten Var PortA.1
Ldr Var PortC.3
'--------------------------------------


Time Var Word
Time1 Var Word
Counter Var Byte
Ambient Var Word


;------REGISTERS SET --------
PORTA=0
PORTC=0
TRISA = %000010
TRISC = %001110
OPTION_REG = 128
PORTA=0
PORTC=0
CMCON=7
ANSEL=%10000010
ADCON1=%00110000
ADCON0=%10000000
'---------------------------------------




GoSub LoadTime
Time1=Time
GoSub LoadLight
Counter=0


Main:
; my code here
Goto Main




LoadTime:
ADCIN Poten,Time : Pause 10
DEBUG "TIME=",DEC Time,10
Return


LoadLight:
ADCIN Ldr,Ambient : Pause 10
DEBUG "AMBIENT=",DEC AMBIENT,10
Return


They both (Time & Ambient) are outputting as '0' on my screen. Seems the problem is something else.
Both Time & Ambient pins are currently held high (5v)using 4.7k.

financecatalyst
- 1st June 2012, 19:29
Alain, thanks for your inputs. Got it working finally :)