summaryrefslogtreecommitdiff
path: root/n/avr/adc/adc.c
diff options
context:
space:
mode:
Diffstat (limited to 'n/avr/adc/adc.c')
-rw-r--r--n/avr/adc/adc.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/n/avr/adc/adc.c b/n/avr/adc/adc.c
index e20a158..48137fb 100644
--- a/n/avr/adc/adc.c
+++ b/n/avr/adc/adc.c
@@ -33,6 +33,16 @@
# 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 */
@@ -40,28 +50,16 @@
void
adc_init (void)
{
- /* REFS = 01: AVCC with external capacitor at AREF pin.
- * 11: Internal 2.56V Voltage Reference with external capacitor
- * at AREF pin. */
- ADMUX = regv (REFS1, REFS0, ADLAR, MUX4, MUX3, MUX2, MUX1, MUX0,
- 1, 1, 0, 0, 0, 0, 0, 0);
- /* Adc enabled. */
- ADCSR = regv (ADEN, ADSC, ADATE, ADIF, ADIE, ADPS2, ADPS1, ADPS0,
- 1, 0, 0, 1, 0, 1, 1, 1);
-}
-
-/** Change channel. */
-void
-adc_mux (uint8_t c)
-{
- /* Choose adc. */
- ADMUX = (ADMUX & 0xe0) | (c & 0x07);
+ /* Low freq. */
+ ADCSR = ADCSR_CFG | ADCSR_CFG_115200;
}
/** Choose and start mesure on adc line. */
void
-adc_start (void)
+adc_start (uint8_t c)
{
+ /* Choose adc. */
+ ADMUX = ADMUX_CFG | (c & 0x07);
/* Start mesure. */
ADCSR |= _BV (ADSC);
}