From 4e8836e7ae1b5e69d90a7887ad924dd31269da29 Mon Sep 17 00:00:00 2001 From: dufourj Date: Tue, 23 May 2006 17:22:34 +0000 Subject: ADC : - import de l'ADC de l'année dernière. --- n/avr/modules/adc/adc.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ n/avr/modules/adc/adc.h | 51 +++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 n/avr/modules/adc/adc.c create mode 100644 n/avr/modules/adc/adc.h (limited to 'n/avr') diff --git a/n/avr/modules/adc/adc.c b/n/avr/modules/adc/adc.c new file mode 100644 index 0000000..8bb3daf --- /dev/null +++ b/n/avr/modules/adc/adc.c @@ -0,0 +1,67 @@ +/* adc.c */ +/* n.avr.adc - AVR ADC Module. {{{ + * + * Copyright (C) 2005 Thomas Burg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contact : + * Email: + * }}} */ +#include "adc.h" + +#include "io.h" +#include "modules/utils/utils.h" + +/* Tested AVR check. */ +#if defined (__AVR_ATmega8__) +#elif defined (__AVR_ATmega8535__) +#elif defined (__AVR_ATmega128__) +#elif defined (__AVR_ATmega64__) +#else +# warning "adc: not tested on this chip." +#endif + +/* ADC configuration. */ +/* REFS = 01: AVCC with external capacitor at AREF pin. + * 11: Internal 2.56V Voltage Reference with external capacitor + * at AREF pin. */ +#define ADMUX_CFG (regv (REFS1, REFS0, ADLAR, MUX4, MUX3, MUX2, MUX1, MUX0, \ + 1, 1, 0, 0, 0, 0, 0, 0)) +#define ADCSR_CFG (regv (ADEN, ADSC, ADATE, ADIF, ADIE, ADPS2, ADPS1, ADPS0, \ + 1, 0, 0, 1, 0, 0, 0, 0)) +#define ADCSR_CFG_115200 7 + +/* +AutoDec */ +/* -AutoDec */ + +/** Initialise adc. */ +void +adc_init (void) +{ + /* Low freq. */ + ADCSR = ADCSR_CFG | ADCSR_CFG_115200; +} + +/** Choose and start mesure on adc line. */ +void +adc_start (uint8_t c) +{ + /* Choose adc. */ + ADMUX = ADMUX_CFG | (c & 0x07); + /* Start mesure. */ + ADCSR |= _BV (ADSC); +} + diff --git a/n/avr/modules/adc/adc.h b/n/avr/modules/adc/adc.h new file mode 100644 index 0000000..3026bb7 --- /dev/null +++ b/n/avr/modules/adc/adc.h @@ -0,0 +1,51 @@ +#ifndef adc_h +#define adc_h +/* adc.h */ +/* n.avr.adc - AVR ADC Module. {{{ + * + * Copyright (C) 2005 Thomas Burg + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contact : + * Email: + * }}} */ + +#include "common.h" +/* Different name on ATmega8535. */ + +#if defined (__AVR_ATmega8535__) +#define ADCSR ADCSRA +#endif + +/* +AutoDec */ + +/** Initialise adc. */ +void +adc_init (void); + +/** Choose and start mesure on adc line. */ +void +adc_start (uint8_t c); + +/* -AutoDec */ + +/** check on finish mesure */ +#define adc_checkf() bit_is_set (ADCSR, ADIF) + +/** read mesure */ +#define adc_read() ADCW + +#endif /* adc_h */ -- cgit v1.2.3