Summary of Connect ADC with PIC16F877
This article details an ADC library for PIC microcontrollers, offering routines to initialize the module and read analog values. It describes three key functions: `ADC_Init` for setup with RC clock, `ADC_Get_Sample` for acquiring channel data, and `ADC_Read`, which combines initialization and reading. The text emphasizes requirements like using internal voltage references and configuring TRISx bits as inputs before use.
Parts used in the ADC Library Project:
- PIC MCU modules with built-in ADC
- RC clock source
- Analog signal input channels
- Internal voltage reference source
- TRISx configuration bits
ADC (Analog to Digital Converter) module is available with a number of PIC MCU modules. ADC is an electronic circuit that converts continuous signals to discrete digital numbers. ADC Library provides you a comfortable work with the module.
Library Routines
ADC_Init
| Prototype | void ADC_Init(); |
|---|---|
| Returns | Nothing. |
| Description | This routine initializes PIC’s internal ADC module to work with RC clock. Clock determines the time period necessary for performing AD conversion (min 12TAD). |
| Requires |
|
| Example |
ADC_Init(); // Initialize ADC module with default settings |
ADC_Get_Sample
| Prototype | unsigned ADC_Get_Sample(unsigned short channel); |
|---|---|
| Returns | 10 or 12-bit unsigned value read from the specified channel (MCU dependent). |
| Description | The function aquires analog value from the specified channel. Parameter channel represents the channel from which the analog value is to be acquired. Refer to the appropriate datasheet for channel-to-pin mapping.
|
| Requires |
|
| Example |
unsigned adc_value; ... adc_value = ADC_Get_Sample(2); // read analog value from ADC module channel 2 |
ADC_Read
| Prototype | unsigned ADC_Read(unsigned short channel); |
|---|---|
| Returns | 10 or 12-bit unsigned value read from the specified channel (MCU dependent). |
| Description | Initializes PIC’s internal ADC module to work with RC clock. Clock determines the time period necessary for performing AD conversion (min 12TAD). Parameter channel represents the channel from which the analog value is to be acquired. Refer to the appropriate datasheet for channel-to-pin mapping.
|
| Requires |
|
| Example |
unsigned tmp; ... tmp = ADC_Read(2); // Read analog value from channel 2 |
For more detail: Connect ADC with PIC16F877
- How does ADC_Init work?
This routine initializes the PIC's internal ADC module to operate with an RC clock. - What is the minimum time period for AD conversion?
The clock determines the time period necessary for performing AD conversion, which must be at least 12TAD. - Can I use an external voltage reference source?
No, the functions do not work with the external voltage reference source; they only support the internal voltage reference. - What must be done before using ADC_Get_Sample?
The ADC module needs to be initialized, and appropriate TRISx bits must be configured to designate pins as inputs. - Does ADC_Read initialize the module?
Yes, the ADC_Read function description states it initializes the PIC's internal ADC module to work with RC clock. - What value type does ADC_Get_Sample return?
It returns a 10 or 12-bit unsigned value depending on the specific MCU. - How do I specify the channel for reading?
You pass the channel number as a parameter to the function, referencing the datasheet for channel-to-pin mapping. - Is prior initialization required for ADC_Read?
The requires section for ADC_Read does not explicitly list prior initialization as a strict requirement unlike ADC_Get_Sample, though it performs initialization itself.