Thanks to all of you, I will look in too your suggestions.
With the "ADC_ADCS_BITCOUNT" set to 2 no error occurs.
But i have to test it after the weekend.

have a nice weekend, Bill

On Saturday, June 19, 2021 at 3:29:19 PM UTC+2 vasile wrote:

> Hi Rob, 
> TAD is the ADC clock period, this has a range of accepted values like on 
> the other PIC16 and PIC18.
> You can see which are those in DS40001825F at page 331. 
> My personal opinion seeing the struggle to maintain one common JAL ADC 
> library over 20 years is that it is impossible.
>
> For each PIC the user has to read the ADC datasheet.
>
> For example the following procedure for one channel read used in 
> PIC18F25k50 can be adapted (relatively easy) for PIC16F188577 if BASIC MODE 
> is used (backward compatible, see page 345 and ADCON2 register at page 350) 
> I hope this will help. I do not have this PIC, but so far I found that 
> simple ADC routines are better than any library.
> good luck!
>
> -- this routine works for PIC18F25k50 at 48MHz with internal reference 
> voltage enabled, comments for PIC16F18857 adaption are below.
> -- enable reference voltage
> -- ------------------------------------------
> VREFCON0_FVRS = 0b10  ; 0b00 FVR is off
>                      ; 0b01 1x1.024V
>                      ; 0b10 2x1.024V = 2.048V if VCC > 3.3V
>                      ; 0b11 4x1.024V = 4.096V if VCC = 5V
> VREFCON0_FVREN = on    ; fixed Vref enabled
>                       ; on = enabled
>                       ; off = disabled
>
>
> -- read one channel of ADC
> -- -------------------------
> var word wADRESH
> var word adc_value
>
> procedure one_ch_ad_read ( byte in channel, bit*2 in refp, bit*2 in refn, 
> bit in justify ) is
> pragma inline
> ; result in ADRESH and ADRESL for each channel
> ; if ref external Vref+, channel1 (RA1) is not available for input,
> ; justify = 1 to right
>
>    ADCON2_ADCS = 0b_110 ; fosc/64, TAD=1.3us  at 48MHz ; for PIC16F188577 
> replace with  ADCLK register settings
>                         ; 000 = Fosc/2
>                         ; 001 = Fosc/8
>                         ; 010 = Fosc/32
>                         ; 011 = FRC (600KHz)
>                         ; 100 = Fosc/4
>                         ; 101 = Fosc/16
>                         ; 110 = Fosc/64
>                         ; 111 = FRC (600KHz)
>    ADCON2_ACQT = 0b_000 ; TAD = 0 ; for PIC16F188577 replace with ADCQ 
> register settings
>                         ; 000 = 0TAD
>                         ; 001 = 2TAD
>                         ; 010 = 4TAD
>                         ; 011 = 6TAD
>                         ; 100 = 8TAD
>                         ; 101 = 12TAD
>                         ; 110 = 16TAD
>                         ; 111 = 20TAD
>    ADCON1_PVCFG = refp  ; 00-PVCFG connected with VDD  ;  for PIC16F188577 
> replace this settings in ADREF register
>                         ; 01-PVCFG connected externally with Vref+
>                         ; 10-PVCFG connected internally with FVRBUF2
>                         ; 11-reserved
>    ADCON1_NVCFG = refn  ; 00-PVCFN connected with VSS
>                         ; 01-PVCFN connected externally with Vref-
>                         ; 10-reserved
>                         ; 11-reserved
>                         
>                         
>    ADCON2_ADFM = justify  ; 1-right(6 MSBs of ADDRESH are 0),
>                           ; 0-left (6 LSBs of ADDRESL are 0)
>
> -- for PIC16F188577 add here BASIC MODE conversion
> ADMD = 0b000
>
>
>    if    channel == 0 then pin_AN0_direction = input  
>                            ANSELA = 0b_0000_0001                   ; for 
> PIC16F188577  check if ANSEL registers are the same
>                            ANSELB = 0            ; others digital
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_00000 ;RA0-AN0  ; for 
> PIC16F188577 replace the ADCON0 settings with ADPCH register 
>    elsif channel == 1 then pin_AN1_direction = input
>                            ANSELA = 0b_0000_0010
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_00001 ;RA1-AN1
>    elsif channel == 2 then pin_AN2_direction = input
>                            ANSELA = 0b_0000_0100
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_00010 ;RA2-AN2
>    elsif channel == 3 then pin_AN3_direction = input
>                            ANSELA = 0b_0000_1000
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_00011 ;RA3-AN3
>    elsif channel == 4 then pin_AN4_direction = input
>                            ANSELA = 0b_0010_0000
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_00100 ;RA5-AN4
>    elsif channel == 8 then pin_AN8_direction = input
>                            ANSELB = 0b_0000_0100
>                            ANSELA = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_01000 ;RB2-AN8
>    elsif channel == 9 then pin_AN9_direction = input
>                            ANSELB = 0b_0000_1000
>                            ANSELA = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_01001 ;RB3-AN9
>    elsif channel == 10 then pin_AN10_direction = input
>                            ANSELB = 0b_0000_0010
>                            ANSELA = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_01010 ;RB1-AN10
>    elsif channel == 11 then pin_AN11_direction = input
>                            ANSELB = 0b_0001_0000
>                            ANSELA = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_01011 ;RB4-AN11
>    elsif channel == 12 then pin_AN12_direction = input
>                            ANSELB = 0b_0000_0001
>                            ANSELA = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_01100 ;RB0-AN12
>    elsif channel == 14 then pin_AN14_direction = input
>                            ANSELC = 0b_0000_0100
>                            ANSELA = 0
>                            ANSELB = 0
>                            ADCON0_CHS = 0b_01110 ;RC2-AN14
>    elsif channel == 18 then pin_AN18_direction = input
>                            ANSELC = 0b_0100_0000
>                            ANSELA = 0
>                            ANSELB = 0
>                            ADCON0_CHS = 0b_10010 ;RC6-AN18
>    elsif channel == 19 then pin_AN19_direction = input
>                            ANSELC = 0b_1000_0000
>                            ANSELA = 0
>                            ANSELB = 0
>                            ADCON0_CHS = 0b_10011 ;RC7-AN19
>    elsif channel == 28 then
>                            ANSELA = 0
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_11100 ;temperature indicator
>    elsif channel == 29 then
>                            ANSELA = 0
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_11101 ;CTMU charge time 
> measurement unit
>    elsif channel == 30 then
>                            ANSELA = 0
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_11110 ;DAC
>    elsif channel == 31 then
>                            ANSELA = 0
>                            ANSELB = 0
>                            ANSELC = 0
>                            ADCON0_CHS = 0b_11111 ;FVRBUF1 out
>    end if
>
>
>    ADCON0_ADON = true           ; supply the ad module
>    _usec_delay ( 12 )          ; wait the sampling time min 11.5*TAD
>    ADCON0_GO = true             ; start the conversion
>    while ADCON0_GO loop end loop    ; wait for ad completion
>  end procedure
>
> -- read one channel of ADC
> -- -------------------------
> var word wADRESH
> var word adc_value
>
> forever loop
>    
>    one_ch_ad_read (4, 0b10, 0b00, 1) ; channel AN4 (RA5), using 2V 
> internal Vref,  right justify
>
>    wADRESH = ADRESH
>    adc_value = 256*wADRESH + ADRESL
> end loop
>
>
> On Sat, Jun 19, 2021 at 11:36 AM Rob CJ <[email protected]> wrote:
>
>> Hi Bill,
>>
>> A first analysis. The adc_clock.jal library calculates the optimal 
>> converstion time (Tad). It does this only for ADC_ADCS_BITCOUNT with values 
>> 2 and 3 but for the 16f18857 this value is 1 and so the library generates 
>> the error message.
>>
>> Maybe Rob Hamerling can shine a light on this since he created that 
>> library.
>>
>> In the meantime I will study it to see what this Tad is about and why a 
>> value of 1 is not (yet) supported.
>>
>> Still I think it may be doable to adapt the adc libraries for the newer 
>> PICs. Once I have done that I will test it to see if it actually works.
>>
>> Kind regards,
>>
>> Rob
>>
>> ------------------------------
>> *Van:* [email protected] <[email protected]> namens Rob CJ <
>> [email protected]>
>> *Verzonden:* zaterdag 19 juni 2021 09:22
>> *Aan:* [email protected] <[email protected]>
>> *Onderwerp:* Re: [jallib] ADC library 
>>  
>> Hi Bill,
>>
>> I do not know this library but if it provides some basic functions it may 
>> be doable to make it work for other PICs too. I will see if I can make it 
>> work but I will need some time for that.
>>
>> Met vriendelijke groet,
>> Rob Jansen 
>> ------------------------------
>> *From:* [email protected] <[email protected]> on behalf of 
>> Bill Beek <[email protected]>
>> *Sent:* Friday, June 18, 2021 9:26:16 PM
>> *To:* jallib <[email protected]>
>> *Subject:* Re: [jallib] ADC library 
>>  
>> Hi Rob, Vasile
>> The modified adc lib of ROB gives the same result and error as mine. 
>> The adc lib no longer gives errors but now the adc_clock lib gives 1 
>> error, see below :
>>
>> jal jalv25r5 (compiled Apr 3 2021)
>> generating p-code
>> 1002 tokens, 426017 chars; 8421 lines; 11 traffic jams
>> generating PIC code pass 1
>> generating PIC code pass 2
>> 63 branches checked, 0 errors
>> 312 data accesses checked, 0 errors
>> 44 skips checked, 0 errors
>> writing result
>> C:\JALLIB~2\lib/adc_clock.jal:156: "Found unsupported value for constant 
>> ADC_ADCS_BITCOUNT"
>> 1 errors, 0 warnings
>>
>> For the adc test program i use 16f876a_adc.jal from the sample programs,  
>> with of course the right fuses for the used 16f18857
>>
>> Perhaps Vasile is right that this series of PICs needs its own library.
>> I also take a closer look into the problem .
>> Thanks for your effort.
>> Kinds regards Bill.
>>
>>
>> On Friday, June 18, 2021 at 1:09:35 PM UTC+2 [email protected] wrote:
>>
>> Hi Bill,
>>
>> I added an alias to cover with the difference but could not test it.
>>
>> It then compiles without errors so I do not know where your other error 
>> message comes from. Can you clarify that?
>>
>> I attached the updated library with the alias. Let me know if it works 
>> (or the problems you encouter).
>>
>> Thanks.
>>
>> Kind regards,
>>
>> Rob
>>
>> ------------------------------
>> *Van:* [email protected] <[email protected]> namens Bill 
>> Beek <[email protected]>
>> *Verzonden:* donderdag 17 juni 2021 15:56
>> *Aan:* jallib <[email protected]>
>> *Onderwerp:* [jallib] ADC library 
>>  
>> 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/5305520a-4b61-4eba-9e93-0c07e34786d6n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jallib/5305520a-4b61-4eba-9e93-0c07e34786d6n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
>> 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/c0832bf5-eb7f-4fe5-8090-4b7d961d17d2n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jallib/c0832bf5-eb7f-4fe5-8090-4b7d961d17d2n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
>> 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/VI1PR07MB62565FA7AB025B0D8C05EF0AE60C9%40VI1PR07MB6256.eurprd07.prod.outlook.com
>>  
>> <https://groups.google.com/d/msgid/jallib/VI1PR07MB62565FA7AB025B0D8C05EF0AE60C9%40VI1PR07MB6256.eurprd07.prod.outlook.com?utm_medium=email&utm_source=footer>
>> .
>>
>> -- 
>> 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/AM0PR07MB6241992EED78E63795269B35E60C9%40AM0PR07MB6241.eurprd07.prod.outlook.com
>>  
>> <https://groups.google.com/d/msgid/jallib/AM0PR07MB6241992EED78E63795269B35E60C9%40AM0PR07MB6241.eurprd07.prod.outlook.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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/82f331b8-77fa-4eb3-ba2d-f30df5fed48en%40googlegroups.com.

Reply via email to