diff options
Diffstat (limited to 'src/c/hardware/avr/adc')
-rw-r--r-- | src/c/hardware/avr/adc/u8AVRADCSetups.c | 22 | ||||
-rw-r--r-- | src/c/hardware/avr/adc/u8AVRReadADCs.c | 54 |
2 files changed, 57 insertions, 19 deletions
diff --git a/src/c/hardware/avr/adc/u8AVRADCSetups.c b/src/c/hardware/avr/adc/u8AVRADCSetups.c index f9d310b..66f491b 100644 --- a/src/c/hardware/avr/adc/u8AVRADCSetups.c +++ b/src/c/hardware/avr/adc/u8AVRADCSetups.c @@ -1,19 +1,19 @@ // Function to initialise ADC of AVR // // Calling Sequence -// AVRSetupADC(uint8 prescalar, uint8 adc_ref) +// AVRSetupADC(uint8 prescaler, uint8 adc_ref) // // Parameters -// prescalar: prescalar to be used for generating ADC clock (0-7) +// prescaler: prescaler 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 +// This function initialises ADc of AVR with given parameters. 'prescaler' 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 +// and it given as (MCU clock/2^prescaler). Select appropriate prescaler depending // on MCU clock. 'adc_ref' selects one of the available reference voltage sources // available // Examples @@ -21,21 +21,23 @@ // // Authors // Siddhesh Wani -// +// Ashish Kamble #include "AVRPeripheralADC.h" -void u8AVRADCSetups(uint8 prescalar, uint8 adc_ref) +uint8 u8AVRADCSetups(uint8 prescaler, uint8 adc_ref) { - /*Set the prescalar value*/ - ADCSRA |= (prescalar & 0x07); +/*Set the prescaler value*/ + ADCSRA |= (prescaler & 0x07); /*Set the adc reference voltage*/ - ADMUX |= ((adc_ref & 0x03) << 6); + ADMUX |= ((adc_ref & 0x03) << 6); /*Enable ADC hardware. Set ADEN bit*/ - ADCSRA |= (1<<7); +ADCSRA |= (1<<7); +return 0; } + diff --git a/src/c/hardware/avr/adc/u8AVRReadADCs.c b/src/c/hardware/avr/adc/u8AVRReadADCs.c index 71fe136..302f8c8 100644 --- a/src/c/hardware/avr/adc/u8AVRReadADCs.c +++ b/src/c/hardware/avr/adc/u8AVRReadADCs.c @@ -1,3 +1,13 @@ +// Copyright (C) 2017 - IIT Bombay - FOSSEE +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in + // Function to get voltage on analog pin on AVR // // Calling Sequence @@ -22,25 +32,51 @@ // // Authors // Siddhesh Wani -// +// Ashish Kamble #include "AVRPeripheralADC.h" -uint16 u8AVRReadADCs(uint8 channel) +uint8 u8AVRReadADCs(uint8 channel) { - /*Set ADC conversion channel*/ - ADMUX |= (channel & 0x1F); + +uint8 i; + + ADCH=0x00; + + i=channel&0x07; + ADMUX=i|0x60; //i|0x40 for 10 bits + ADCSRA|=1<<ADSC; + + while(ADCSRA & (1<<ADSC)); // wait for conv. to complete + uint8 temp=ADCH; //unsigned int temp=ADC; for 10 bits + + return temp; + +} + + + + + + + + + + +/*Set ADC conversion channel*/ +// ADMUX |= (channel & 0x1F); /*Start ADC conversion. Set 'ADSC' bit*/ - ADCSRA |= (1<<6); +// ADCSRA |= (1<<6); /*Wait for conversion to complete. Check 'ADIF' bit*/ - while(!(ADCSRA & (1<<4))); +// while(!(ADCSRA & (1<<4))); /*Clear ADIF flag*/ - ADCSRA |= (1<<4); +// ADCSRA |= (1<<4); /*ADC conversion result is stored in ADCH/L registers*/ - return (ADC); -} +// return (ADC); + + |