From 583f00e0b8efe2832f63efb478a51d3ad35e92ed Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 7 Oct 2007 22:16:03 +0200 Subject: Included SI2E avr modules. Well, this need more works... --- digital/avr/modules/adc/Makefile.module | 1 + digital/avr/modules/adc/README | 25 ++++++++++++ digital/avr/modules/adc/adc.c | 67 +++++++++++++++++++++++++++++++++ digital/avr/modules/adc/adc.h | 51 +++++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 digital/avr/modules/adc/Makefile.module create mode 100644 digital/avr/modules/adc/README create mode 100644 digital/avr/modules/adc/adc.c create mode 100644 digital/avr/modules/adc/adc.h (limited to 'digital/avr/modules/adc') diff --git a/digital/avr/modules/adc/Makefile.module b/digital/avr/modules/adc/Makefile.module new file mode 100644 index 00000000..d14349c3 --- /dev/null +++ b/digital/avr/modules/adc/Makefile.module @@ -0,0 +1 @@ +adc_SOURCES = adc.c diff --git a/digital/avr/modules/adc/README b/digital/avr/modules/adc/README new file mode 100644 index 00000000..ce7d8827 --- /dev/null +++ b/digital/avr/modules/adc/README @@ -0,0 +1,25 @@ +avr.adc - ADC AVR module. + +Analog to Digital Converter module for AVR. See modules README for more +details about AVR modules. + + +Copyright (C) 2005 Nicolas Schodet + +Robot APB Team/Efrei 2006. + Web: http://assos.efrei.fr/robot/ + Email: robot AT efrei DOT fr + +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. diff --git a/digital/avr/modules/adc/adc.c b/digital/avr/modules/adc/adc.c new file mode 100644 index 00000000..d6ae9094 --- /dev/null +++ b/digital/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: burg AT efrei DOT fr + * }}} */ +#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/digital/avr/modules/adc/adc.h b/digital/avr/modules/adc/adc.h new file mode 100644 index 00000000..56ae8c59 --- /dev/null +++ b/digital/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: burg AT efrei DOT fr + * }}} */ + +#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