Hi Rob,
After your post I looked even further, I use the latest adc lib and tested
the first 10 adc channels. they work all the time, and are relatively
accurate. I also looked at the adc_clock lib and tried to adjust the code.
The 18857 only has 1 clock selection bit "FRC or crystal controlled" , but
it didn't work yet. For now, I'm happy with the result.
Here's a piece of the program I used.
const bit ADC_HIGH_RESOLUTION = true
const byte ADC_NCHANNEL = 2
const byte ADC_NVREF = ADC_NO_EXT_VREF
include adc
adc_init()
var word measure
var word voltage
var byte lowmeasure
const byte prefix[] = "Channel "
const byte highstr[] = " (high) "
const byte lowstr[] = " (low) "
const byte suffix[] = ": "
const byte value[] = " U = "
const byte units[] = " Volts."
forever loop
var byte channel = 0
-- loop over all channels and read
led = !led
for 11 using channel loop
-- get ADC result, high resolution
measure = adc_read_high_res(channel)
-- send it back through serial
print_string(serial_hw_data,prefix)
print_string(serial_hw_data,highstr)
print_byte_dec(serial_hw_data,channel)
print_string(serial_hw_data,suffix)
-- print_word_bin(serial_hw_data,measure) ; this one works !
print_word_dec(serial_hw_data,measure) ; I should get ~512
voltage = measure * 0.4883 -- 5 V / 1024 * 100 (for 2 decimals)
print_string(serial_hw_data,value)
--print_word_dec(serial_hw_data,voltage)
--print_string(serial_hw_data,value)
format_word_dec(serial_hw_data,voltage,5,2) -- decimal 2 = /100
print_string(serial_hw_data,units)
print_crlf(serial_hw_data)
delay_1ms(250)
-- Even if we set high resolution, we can still access results
-- in low resolution (the 2 LSb will be removed)
lowmeasure = adc_read_low_res(channel)
print_string(serial_hw_data,prefix)
print_string(serial_hw_data,lowstr)
print_byte_dec(serial_hw_data,channel)
print_string(serial_hw_data,suffix)
print_byte_dec(serial_hw_data,lowmeasure) ; I should get ~127
print_crlf(serial_hw_data)
-- and sleep a litte...
--led = OFF
delay_1ms(2500)
end loop
end loop
Kind regards Bill.
On Thursday, June 17, 2021 at 3:56:36 PM UTC+2 Bill Beek wrote:
> Hello all,
>
> When I tried to do a test with analog input on the 16F18857 I found that
> the library adc.jal gave 7 errors. In particular, the "adcon0_chs" was not
> recognized. The lib of the 16F18857 does recognize it the "adcon0_adcs" . It
> seems that some newer MCU's have this problem as well. After a change of
> the adc lib a new error occurred,
> _error "Found unsupported value for constant ADC_ADCS_BITCOUNT".
> Does anyone else have experience with this event or know a solution?
> Thanks, Bill
>
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/fb841324-9302-4429-b6ce-bf91a8cc5ed2n%40googlegroups.com.