summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-05-12 20:26:44 -0700
committerKeith Packard <keithp@keithp.com>2011-05-12 20:26:44 -0700
commitd35d7e530e4bedda1df0d8bf0456c4b231d77c48 (patch)
tree950bc591b57abf93ae86fe646132eda29591b6f6
parent96d04f907db70b5b2359cefaae2ba00f7584b162 (diff)
ao-bringup-avr: Switch to ADC13
That's what Bdale has wired up in his test setup. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--ao-bringup-avr/ao-blink.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/ao-bringup-avr/ao-blink.c b/ao-bringup-avr/ao-blink.c
index 60922826..12b1abfc 100644
--- a/ao-bringup-avr/ao-blink.c
+++ b/ao-bringup-avr/ao-blink.c
@@ -125,33 +125,37 @@ ISR(ADC_vect)
OCR0A = ADCH;
}
+#define ADC_CHANNEL 0x25 /* Channel ADC13 */
+#define ADC_CHANNEL_LOW(c) (((c) & 0x1f) << MUX0)
+#define ADC_CHANNEL_HIGH(c) ((((c) & 0x20) >> 5) << MUX5)
+
+#define ADCSRA_INIT ((1 << ADEN) | /* Enable ADC */ \
+ (0 << ADATE) | /* No auto ADC trigger */ \
+ (1 << ADIE) | /* Enable interrupt */ \
+ (6 << ADPS0)) /* Prescale clock by 64 */
+
+#define ADCSRB_INIT ((0 << ADHSM) | /* No high-speed mode */ \
+ (0 << ACME) | /* Some comparitor thing */ \
+ (0 << ADTS0)) /* Free running mode (don't care) */
+
static void
adc_start(void)
{
- ADMUX = ((0 << REFS1) |
- (1 << REFS0) |
- (1 << ADLAR) |
- (0 << MUX0));
- ADCSRB &= ~(1 << MUX5);
-
- ADCSRA = ((1 << ADEN) |
- (1 << ADSC) |
- (0 << ADATE) |
- (1 << ADIE) |
- (6 << ADPS0));
+ ADMUX = ((0 << REFS1) | /* AVcc reference */
+ (1 << REFS0) | /* AVcc reference */
+ (1 << ADLAR) | /* Left-shift results */
+ (ADC_CHANNEL_LOW(ADC_CHANNEL))); /* Select channel */
+
+ ADCSRB = ADCSRB_INIT | ADC_CHANNEL_HIGH(ADC_CHANNEL);
+
+ ADCSRA = ADCSRA_INIT | (1 << ADSC); /* Start conversion */
}
static void
adc_init(void)
{
- ADCSRA = ((1 << ADEN) |
- (0 << ADSC) |
- (0 << ADATE) |
- (1 << ADIE) |
- (6 << ADPS0));
- ADCSRB = ((0 << ADHSM) |
- (0 << MUX5) |
- (0 << ADTS0));
+ ADCSRA = ADCSRA_INIT;
+ ADCSRB = ADCSRB_INIT;
DIDR0 |= (1 << 0);
}