/trunk/libraries/adc/src/SConscript |
---|
0,0 → 1,13 |
# Import environment set for target. |
Import('env_target') |
# Define target name. |
TARGET = 'adc' |
# Define source files. |
sources = [ |
'adc.c' |
] |
# Build library. |
env_target.BuildLibrary(sources, TARGET) |
/trunk/libraries/adc/src/adc.c |
---|
0,0 → 1,98 |
/**************************************************************************//** |
* \brief ADC library. |
* \author Copyright (C) 2012 Julien Le Sech - www.idreammicro.com |
* \version 1.0 |
* \date 20121029 |
* |
* This file is part of the iDreamMicro library. |
* |
* This library is free software: you can redistribute it and/or modify it under |
* the terms of the GNU Lesser General Public License as published by the Free |
* Software Foundation, either version 3 of the License, or (at your option) any |
* later version. |
* |
* This library is distributed in the hope that it will be useful, but WITHOUT |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
* details. |
* |
* You should have received a copy of the GNU Lesser General Public License |
* along with this program. If not, see http://www.gnu.org/licenses/ |
******************************************************************************/ |
/**************************************************************************//** |
* \file adc.c |
******************************************************************************/ |
/****************************************************************************** |
* Header file inclusions. |
******************************************************************************/ |
#include "../adc.h" |
#include <useful/bits.h> |
#include <avr/io.h> |
#include <stdint.h> |
/****************************************************************************** |
* Public function definitions. |
******************************************************************************/ |
/**************************************************************************//** |
* \fn void adc__single_channel_initialize(adc__channel_t channel) |
* |
* \brief Initialize ADC. |
* |
* \param channel ADC channel. |
******************************************************************************/ |
void |
adc__single_channel_initialize |
( |
adc__channel_t channel |
){ |
// Enable ADC. |
BIT__SET(ADCSRA, ADEN); |
// Clock prescaled by 16. |
// If Clock speed is 16 MHz, then ADC clock = 16 MHz / 16 = 1 MHz. |
ADCSRA |= 0b00000100; |
// Disable Digital Input on ADC Channel 0 to reduce power consumption |
DIDR0 = 0b00111111; |
// Disable Left-Adjust. |
ADMUX = 0b01000000; |
// Select ADC channel as input. |
ADMUX |= channel; |
} |
/**************************************************************************//** |
* \fn uint16_t adc__read(void) |
* |
* \brief Read ADC. |
* |
* \return Read value. |
******************************************************************************/ |
uint16_t |
adc__single_channel_read |
( |
void |
){ |
// Start ADC Conversion. |
BIT__SET(ADCSRA, ADSC); |
// Wait till conversion is complete. |
//while ((ADCSRA & (1 << ADIF)) != 0x10); |
while (!BIT__TST(ADCSRA, ADIF)); |
// Read the ADC Result. |
uint16_t value = ADC; |
// Clear ADC Conversion Interrupt Flag. |
BIT__RST(ADCSRA, ADIF); |
return value; |
} |
/trunk/libraries/adc/SConscript |
---|
0,0 → 1,16 |
# Import environment set for target. |
Import('env_target') |
# Define directories to process. |
directories = [ |
'src/' |
] |
# Process directories. |
for directory in directories: |
SConscript( |
directory + 'SConscript', |
variant_dir = '#build/' + '/libraries/adc/' + env_target['NAME'], |
exports = { 'env_target' : env_target }, |
duplicate = 0 |
) |
/trunk/libraries/adc/SConstruct |
---|
0,0 → 1,40 |
# Import build tools. |
SConscript('#min_env/build_tools.py') |
# Set environment for AVR-GCC. |
SConscript('#min_env/env_target.py') |
# Import environment set for AVR-GCC. |
Import('env_target') |
# Append CPPPATH. |
env_target.Append(CPPPATH = [ '#../' ]) |
# Build library. |
SConscript( |
'src/SConscript', |
variant_dir = '#build/lib/', |
exports = { 'env_target' : env_target }, |
duplicate = 0 |
) |
# Append LIBPATH and LIBS. |
env_target.Append(LIBPATH = [ '#build/lib/']) |
env_target.Append(LIBS = [ 'adc' ]) |
# Build demonstration program. |
SConscript( |
'demo/SConscript', |
variant_dir = '#build/demo/', |
exports = { 'env_target' : env_target }, |
duplicate = 0 |
) |
# Build test program. |
SConscript( |
'test/SConscript', |
variant_dir = '#build/test/', |
exports = { 'env_target' : env_target }, |
duplicate = 0 |
) |
/trunk/libraries/adc/adc.h |
---|
0,0 → 1,99 |
/**************************************************************************//** |
* \brief ADC library. |
* \author Copyright (C) 2012 Julien Le Sech - www.idreammicro.com |
* \version 1.0 |
* \date 20121029 |
* |
* This file is part of the iDreamMicro library. |
* |
* This library is free software: you can redistribute it and/or modify it under |
* the terms of the GNU Lesser General Public License as published by the Free |
* Software Foundation, either version 3 of the License, or (at your option) any |
* later version. |
* |
* This library is distributed in the hope that it will be useful, but WITHOUT |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
* details. |
* |
* You should have received a copy of the GNU Lesser General Public License |
* along with this program. If not, see http://www.gnu.org/licenses/ |
******************************************************************************/ |
/**************************************************************************//** |
* \headerfile adc.h |
******************************************************************************/ |
#ifndef H__IDREAMMICRO__ADC__H |
#define H__IDREAMMICRO__ADC__H |
#ifdef _cplusplus |
extern "C"{ |
#endif |
/****************************************************************************** |
* Header file inclusions. |
******************************************************************************/ |
#include <stdint.h> |
/****************************************************************************** |
* Public type definitions. |
******************************************************************************/ |
/**************************************************************************//** |
* \enum |
* \brief |
* |
* \typedef |
* \brief |
******************************************************************************/ |
typedef enum adc__channels |
{ |
ADC__CHANNEL_0, |
ADC__CHANNEL_1, |
ADC__CHANNEL_2, |
ADC__CHANNEL_3, |
ADC__CHANNEL_4, |
ADC__CHANNEL_5, |
ADC__CHANNEL_6, |
ADC__CHANNEL_7, |
ADC__CHANNEL_8 |
} adc__channel_t; |
/****************************************************************************** |
* Public function prototypes. |
******************************************************************************/ |
/**************************************************************************//** |
* \fn void adc__single_channel_initialize(adc__channel_t channel) |
* |
* \brief Initialize ADC. |
* |
* \param channel ADC channel. |
******************************************************************************/ |
void |
adc__single_channel_initialize |
( |
adc__channel_t channel |
); |
/**************************************************************************//** |
* \fn uint16_t adc__read(void) |
* |
* \brief Read ADC. |
* |
* \return Read value. |
******************************************************************************/ |
uint16_t |
adc__single_channel_read |
( |
void |
); |
#ifdef _cplusplus |
} |
#endif |
#endif /* H__IDREAMMICRO__ADC__H */ |