Subversion Repositories idreammicro-avr

Compare Revisions

Regard whitespace Rev 32 → Rev 33

/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 */