Hello all
I'm trying to use a new chip to me, an 16f1826. I liked the idea of the 4.086 internal voltage reference. I wrote the test code below, trying to follow the datasheet. Unlike others, I've never had a problem using ADCIN so I am using it. The program compiles, loads and runs, but the display reads 00001, 00002 and 00003, depending on what my test pot is set to. Interestingly, it does correspond to 1, 2 and 3 volts input, but I'm assuming its coincidental since its a 10 bit register. The Microchip errata says that in my silicon version there is sometimes a flaw in the ADC circuit such that the "done" bit never comes true but I'm assuming thats not the problem because it does change its value and updates each cycle through. Any thoughts or comments would be appreciated.
Take care
Alec
Code:'**************************************************************** '* Name : 16f1826_test * '* Author : alec noble * '* Notice : Copyright (c) 2012 alec noble * '* : All Rights Reserved * '* Date : 8/31/2012 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** #CONFIG __config _CONFIG1, _FOSC_INTOSC & _MCLRE_ON & _CLKOUTEN_OFF __config _CONFIG2, _PLLEN_OFF & _LVP_OFF #ENDCONFIG OSCCON = %01111010 '16 mhz internal clock, PLL off DEFINE OSC 16 'define adc_bits = 10 TRISA = %00000001 'RA0 input, all others output trisb = %00000001 FVRCON = %11000011 'Fixed voltage reference on, comparator and output off, set to 4.096 ANSELA = 1 'AN0 analog, all others digital ANSELB = 0 'all port B digital ADCON1 = %11100011 'right justified, clock = fosc/64, neg ref = Vss, pos ref = FVR ADC var word txpin var portb.0 ADC = 0 Pause 500 ' let everything stabilize SEROUT2 txpin, 84, [24] 'turn serial LCD on main: ADCIN 0, adc SEROUT2 txpin, 84, [12] PAUSE 5 SEROUT2 txpin, 84, [128, dec5 adc] pause 250 goto main




Bookmarks