summaryrefslogtreecommitdiff
path: root/src/c/hardware/avr/adc/u8AVRADCSetups.c
blob: 620f80fe902e0a55a76f31b00d2e72759248cff0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Function to initialise ADC of AVR
//
// Calling Sequence
//     AVRSetupADC(uint8 prescalar, uint8 adc_ref)
//
// Parameters
//     prescalar: prescalar to be used for generating ADC clock (0-7)
//     adc_ref	: reference voltage to be used for ADC conversion
//              0 -> Voltage on VREF pin
//              1 -> Voltage on AVCC pin
//              2 -> Internal 2.56 reference voltage       
//
// Description
//     This function initialises ADc of AVR with given parameters. 'prescalar' is 
//     needed for deciding ADC clock. ADC clock should be between 50KHz and 200KHz
//     and it given as (MCU clock/2^prescalar). Select appropriate prescalar depending
//     on MCU clock. 'adc_ref' selects one of the available reference voltage sources
//     available
// Examples
//     AVRADCSetup(128,0)
//
// Authors
//     Siddhesh Wani
//

#include "AVRPeripheralADC.h"


uint8 u8AVRADCSetups(uint8 prescalar, uint8 adc_ref)
{
    /*Set the prescalar value*/
    ADCSRA |= (prescalar & 0x07);

    /*Set the adc reference voltage*/
    ADMUX |= ((adc_ref & 0x03) << 6);

    /*Enable ADC hardware. Set ADEN bit*/
    ADCSRA |= (1<<7); 	

    return 0;
}