gnupic: Pic A/d Weirdness.
Subject:
Pic A/d Weirdness.
From:
Declan Moriarty ####@####.####
Date:
9 Nov 2002 20:47:25 -0000
Message-Id: <02110920431501.00832@genius.chateau.dec>
I have a little pic project goine here - e v e n t u a l l y!
The one fly in the ointment is a temprature routine, in which my A/D doesn't
make sense, but returns a value of 3ff for the 10 bits :-(
The pic (a 16f877) is grounded to the - side of a -1.5V battery. Vref- is to
the positive side of the -1.5V battery. Vref+ is exactly 1.2V above that. My
temprature signal comes in at -Vref +0.25V for 25 degrees C - I should get a
reading of ~ 0x0d5 (0.25 / (1.2 /1024)). I flashed another configuring the
pic to use a 5V reference. My reading this time should have been ~(1.75 /
(5V/1024)) or 0x166; This time I saw 0x000 for the 10 bits. Here's the code
I'm using to set up in order of it should appear (I've not shown the bank
change instructions, but they're there). Spot the gotcha? I don't. I don't
know what to point a finger at. The resolving code simulated fine.
; INIT stuff
clrf PORTA ; clears data latches.
clrf ADCON0 ; Sets a/d, but off
movlw 0x41 ; W=0100 0001
movwf PIE1 ; Bank1: Sets timer1 & adc as int. sources
clrf TRISA
movlw 0x1f ; W= 0001 1111
movwf TRISA ; PORTA = 5 inputs
movlw 0x8c ; W=1000 1100
movwf ADCON1 ; Bank1: Sets 3 a/d &2 ref inputs
clrf ADRESL ; clears low result byte of adc
bsf ADCON0, 0 ; Turns A/D on, but idle.
clrf ADRESH ; Clears high result byte of a/d
bsf INTCON, PEIE ; enables Peripheral interrupts. Globally
disabled still
bsf INTCON, GIE ; Turn on global interrupts.
; To Start a conversion
bsf ADCON0, 2 ; Starts A/D Conversion on RA0
; This responds with an interrupt
btfsc PIR1, ADIF ; A/D interrupt?
call ADC ; Call temperature routine
; And finally
bcf PIR1, ADIF ; clears ADC interrupt signal
The processing routine dumps ADRESL to 0x72 which is readable from all bamks,
then goes back to Bank 0 for sorting out the display of data.
--
Regards,
Declan Moriarty
Applied Researches - Ireland's Foremost Electronic Hardware Genius
A Slightly Serious(TM) Company
Without the optimist, the pessimist wouldn't know how happy he isn't