PS:
I mean A*D*CON Compacted Vars.

On Wednesday, September 14, 2022 at 7:12:21 PM UTC+1 flyway38 wrote:

> Hi Vasile,
>
> Thank you.
> Yes, That code was the testing code. Right now am using the "compact" side 
> of ANCON Vars :D
>
> -- ADCON0 CONFIG
> --ADCON0_CHS0 = OFF -- Channel at 0 (Bit 0)
> --ADCON0_CHS1 = OFF -- Channel at 0 (Bit 1)
> --ADCON0_CHS2 = OFF -- Channel at 0 (Bit 2)
> --ADCON0_CHS3 = OFF -- Channel at 0 (Bit 3)
> ADCON0_CHS = 0 -- Channel at 0
> -- ADCON1 CONFIG
> --ADCON1_PCFG0 = OFF -- AN0 as Analog ONLY (Bit 0)
> --ADCON1_PCFG1 = ON  -- AN0 as Analog ONLY (Bit 1)
> --ADCON1_PCFG2 = ON  -- AN0 as Analog ONLY (Bit 2)
> --ADCON1_PCFG3 = ON  -- AN0 as Analog ONLY (Bit 3)
> ADCON1_PCFG = 14 -- AN0 as Analog ONLY
> --ADCON1_VCFG0 = OFF -- Vref+ at VDD
> --ADCON1_VCFG1 = OFF -- Vref- at VSS
> ADCON1_VCFG = 0 -- Vref+ at VDD, Vref- at VSS
> -- ADCON2 CONFIG
> --ADCON2_ADCS0 = OFF -- AD Conversion Clock at Fosc/64 (Bit 0)
> --ADCON2_ADCS1 = ON  -- AD Conversion Clock at Fosc/64 (Bit 1)
> --ADCON2_ADCS2 = ON  -- AD Conversion Clock at Fosc/64 (Bit 2)
> ADCON2_ADCS = 6 -- AD Conversion Clock at Fosc/64
> --ADCON2_ACQT0 = ON  -- AD Acq. Time at 2xTAD (Bit 0)
> --ADCON2_ACQT1 = OFF -- AD Acq. Time at 2xTAD (Bit 1)
> --ADCON2_ACQT2 = OFF -- AD Acq. Time at 2xTAD (Bit 2)
> ADCON2_ACQT = 1 -- AD Acq. Time at 2xTAD
>
> ADCON2_ADFM = ON   -- AD Result Justify at Right
>
> Thanks once again.
> Cheers.
> FS
> On Wednesday, September 14, 2022 at 4:16:36 PM UTC+1 vasile wrote:
>
>> congrats, but it still be simplified a bit...:)
>>
>> On Wed 14 Sep 2022, 5:40 PM flyway38 <[email protected] wrote:
>>
>>> Hey all,
>>>
>>> Problem solved. Had to redo all ADC code.
>>> Here is the working code. Maybe this is usefull for the coders here;
>>>
>>> -- ok, now let's configure ADC
>>> pin_AN0_direction = input
>>> -- ADCON0 CONFIG
>>> ADCON0_CHS0 = OFF -- Channel at 0 (Bit 0)
>>> ADCON0_CHS1 = OFF -- Channel at 0 (Bit 1)
>>> ADCON0_CHS2 = OFF -- Channel at 0 (Bit 2)
>>> ADCON0_CHS3 = OFF -- Channel at 0 (Bit 3)
>>> -- ADCON1 CONFIG
>>> ADCON1_PCFG0 = OFF -- AN0 as Analog ONLY (Bit 0)
>>> ADCON1_PCFG1 = ON  -- AN0 as Analog ONLY (Bit 1)
>>> ADCON1_PCFG2 = ON  -- AN0 as Analog ONLY (Bit 2)
>>> ADCON1_PCFG3 = ON  -- AN0 as Analog ONLY (Bit 3)
>>> ADCON1_VCFG0 = OFF -- Vref+ at VDD
>>> ADCON1_VCFG1 = OFF -- Vref- at VSS
>>> -- ADCON2 CONFIG
>>> ADCON2_ADCS0 = OFF -- AD Conversion Clock at Fosc/64 (Bit 0)
>>> ADCON2_ADCS1 = ON  -- AD Conversion Clock at Fosc/64 (Bit 1)
>>> ADCON2_ADCS2 = ON  -- AD Conversion Clock at Fosc/64 (Bit 2)
>>> ADCON2_ACQT0 = ON  -- AD Acq. Time at 2xTAD (Bit 0)
>>> ADCON2_ACQT1 = OFF -- AD Acq. Time at 2xTAD (Bit 1)
>>> ADCON2_ACQT2 = OFF -- AD Acq. Time at 2xTAD (Bit 2)
>>> ADCON2_ADFM = ON   -- AD Result Justify at Right
>>> --
>>> const word ADC_RSOURCE = 2_500                        -- Input Resistance
>>> const byte ADC_TEMP = 85                              -- PIC Max. 
>>> Temperature
>>> const byte ADC_MAX_TAD = 6                            -- (0.8us < TAD < 
>>> 12.5us as per
>>> --                                                        Datasheet, 
>>> Pag. 41)
>>> -- AD ACQUISITION TIME (Original VAR: adc_conversion_delay)
>>> -- Tacq = Tamp + Tc + Tcoff
>>> const word tamp = 1 -- (=> 0.2us as per Datasheet, Pag. 30)
>>> const word adc_tc = 2 -- ((TEMP – 25°C)x(0.02 us/°C) => 1.2us as per 
>>> Datasheet, Pag. 30))
>>> const word adc_tcoff = 2 -- (-(25 pF)x(1 kohm + 4 kohm + 
>>> RSOURCE)xln(0.0004883)
>>> --                          => 1.56us as per Datasheet, Pag. 30)
>>> const byte ADC_TACQ = byte(tamp + adc_tc + adc_tcoff)
>>> -- (Original VAR: adc_conversion_delay)
>>> --
>>> var word adc_word                               -- return value
>>> var byte adc_byte[2] at adc_word                -- byte array overlay
>>> --
>>> function adc_read_high_res(byte in adc_chan) return word is
>>> pragma inline
>>>    --
>>>    -- Original Code has here the Channel and L/R Justifying
>>>    --  These parameters are set above...
>>>   -- 
>>>   ADCON0_ADON = TRUE                              -- turn on ADC module
>>>    --
>>>    for ADC_TACQ loop
>>>       _usec_delay(1)                              -- wait acquisition 
>>> time
>>>       -- Original: _usec_delay(10) 
>>>    end loop
>>>    --
>>>    ADCON0_GO = TRUE                                -- start conversion
>>>    while ADCON0_GO == TRUE loop                    -- wait until 
>>> conversion completed
>>>       -- Empty loop.
>>>    end loop
>>>    --
>>>    adc_byte[1] = ADRESH                         -- copy high order bits
>>>    adc_byte[0] = ADRESL                         -- copy low order bits
>>>    -- Choosed High Resolution options here, from Original Code...
>>>    --
>>>    -- Honor 2 * max Tad time. Note the value is not very accurate, but 
>>> safe.
>>>    _usec_delay(2 * ADC_MAX_TAD) -- As per Datasheet, Pag. 29
>>>    --
>>>    ADCON0_ADON = false                             -- turn off ADC module
>>>    return adc_word                                 -- back to caller
>>> end function
>>>
>>> Best regrads,
>>> FS
>>>
>>> On Wednesday, September 14, 2022 at 1:43:19 PM UTC+1 flyway38 wrote:
>>>
>>>> Hello Vasile,
>>>>
>>>> Thank you for your input.
>>>> About Vref it should be set to VCC (5V) and GND. It's the default 
>>>> anyways (by the Datasheet info).
>>>> Have, however, noticed that the ADC initial configuration constants 
>>>> don't match with the needed ones.
>>>> EX: ANSEL_ADCS, ADCON0_VCFG, ANSEL_ANS0, etc.. aren't used in ADC lib 
>>>> or even in PIC(18F2523) lib.
>>>>
>>>> About convertion time and MAX_TAD, have already tested longer time 
>>>> values with no sucess...
>>>> Any more ideas?
>>>> Thanks anyways.
>>>>
>>>> Cheers,
>>>> Filipe Santos.
>>>>
>>>> On Wednesday, September 14, 2022 at 12:57:26 PM UTC+1 vasile wrote:
>>>>
>>>>> If your Vref + is +5V and Vref- is GND, full scale means 4095 at 5V.
>>>>> One issue might appear if acquisition time is too short or you have 
>>>>> messed something with references.
>>>>> |Vref+| - |Vref-| >=3V
>>>>>
>>>>> On Tue, Sep 13, 2022 at 4:54 PM flyway38 <[email protected]> wrote:
>>>>>
>>>>>> Hello all,
>>>>>>
>>>>>> New question.
>>>>>> My PIC is reading ok ADC values if below 2.5V (1/2 of range VCC/GND).
>>>>>> It seems like 11bit ADC behaviour.
>>>>>>
>>>>>> My code:
>>>>>> -- ok, now let's configure ADC
>>>>>> -- Step 1: ADC analog input pin setup
>>>>>> const byte ADC_CHANNEL = 0                       -- port 0 is analog 
>>>>>> input (default)
>>>>>> pin_AN0_direction = input
>>>>>> const byte ANSEL_ANS0 = TRUE                     -- potmeter 
>>>>>> connected to pin_AN0
>>>>>> -- Step 2: Set VDD and VSS as Vref
>>>>>> const byte ADCON0_VCFG = FALSE
>>>>>> -- Step 3: Use Frc as ADC clock
>>>>>> const byte ANSEL_ADCS = 0b110
>>>>>> --
>>>>>> const ADC_RSOURCE = 500                          -- Input Resistance
>>>>>> const ADC_TEMP = 20                              -- PIC Temperature
>>>>>> -- We want the fastest possible ADC timing, so we specify here the
>>>>>> --const ADC_MIN_TAD = 1
>>>>>> const ADC_MAX_TAD = 10
>>>>>> -- Now we can include the library
>>>>>> include adc
>>>>>> -- And initialize the whole with our parameters
>>>>>> adc_init()
>>>>>>
>>>>>> Inside Forever Loop:
>>>>>>    iVal = 0 -- Its a DWord
>>>>>>    --
>>>>>>    for AdcReadings loop
>>>>>>       AdcData = adc_read_high_res(AdcChnn)
>>>>>>       iVal = iVal + dword(AdcData)
>>>>>>    end loop
>>>>>>    --
>>>>>>    mVal = word(iVal / dword(AdcReadings))
>>>>>>
>>>>>> Any help would be great.
>>>>>> Thank you very much.
>>>>>>
>>>>>> Kind regrads,
>>>>>> Filipe Santos
>>>>>>
>>>>>> -- 
>>>>>> 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/5c020fb1-f8fa-4684-9284-1dc3a1793ca4n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/jallib/5c020fb1-f8fa-4684-9284-1dc3a1793ca4n%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/a77e7cc0-016b-407f-b2ff-c364f0646ccfn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/jallib/a77e7cc0-016b-407f-b2ff-c364f0646ccfn%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/10f6e3e9-568d-4057-bf27-3e03d58d3c3en%40googlegroups.com.

Reply via email to