projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src-avr: Clean up AVR ADC code
[fw/altos]
/
src-avr
/
ao_adc_avr.c
diff --git
a/src-avr/ao_adc_avr.c
b/src-avr/ao_adc_avr.c
index e384a28d941056b8a646dac97e60604fcf2cdad3..18aef5bb4091cd068ac6590bc9977329a159e9d8 100644
(file)
--- a/
src-avr/ao_adc_avr.c
+++ b/
src-avr/ao_adc_avr.c
@@
-20,7
+20,6
@@
volatile __xdata struct ao_adc ao_adc_ring[AO_ADC_RING];
volatile __data uint8_t ao_adc_head;
volatile __xdata struct ao_adc ao_adc_ring[AO_ADC_RING];
volatile __data uint8_t ao_adc_head;
-#define ADC0
const uint8_t adc_channels[NUM_ADC] = {
0x00,
0x01,
const uint8_t adc_channels[NUM_ADC] = {
0x00,
0x01,
@@
-38,10
+37,6
@@
const uint8_t adc_channels[NUM_ADC] = {
static uint8_t ao_adc_channel;
static uint8_t ao_adc_channel;
-
-static uint16_t ao_adc_int_count;
-static uint16_t ao_adc_int_error;
-
#define ADC_CHANNEL_LOW(c) (((c) & 0x1f) << MUX0)
#define ADC_CHANNEL_HIGH(c) ((((c) & 0x20) >> 5) << MUX5)
#define ADC_CHANNEL_LOW(c) (((c) & 0x1f) << MUX0)
#define ADC_CHANNEL_HIGH(c) ((((c) & 0x20) >> 5) << MUX5)
@@
-75,11
+70,8
@@
ao_adc_start(void)
ISR(ADC_vect)
{
uint16_t value;
ISR(ADC_vect)
{
uint16_t value;
- uint8_t channel;
- ++ao_adc_int_count;
- channel = (ADMUX & 0x1f) | (ADCSRB & 0x20);
- if (adc_channels[ao_adc_channel] != channel)
- ++ao_adc_int_error;
+
+ /* Must read ADCL first or the value there will be lost */
value = ADCL;
value |= (ADCH << 8);
ao_adc_ring[ao_adc_head].adc[ao_adc_channel] = value;
value = ADCL;
value |= (ADCH << 8);
ao_adc_ring[ao_adc_head].adc[ao_adc_channel] = value;
@@
-114,14
+106,10
@@
ao_adc_dump(void) __reentrant
{
static __xdata struct ao_adc packet;
uint8_t i;
{
static __xdata struct ao_adc packet;
uint8_t i;
- printf ("interrupts: %u\n", ao_adc_int_count);
- printf ("errors: %u\n", ao_adc_int_error);
ao_adc_get(&packet);
ao_adc_get(&packet);
- printf ("ADMUX %02x ADCSRA %02x ADCSRB %02x\n",
- ADMUX, ADCSRA, ADCSRB);
printf("tick: %5u", packet.tick);
for (i = 0; i < NUM_ADC; i++)
printf("tick: %5u", packet.tick);
for (i = 0; i < NUM_ADC; i++)
- printf (" %
5u"
, packet.adc[i]);
+ printf (" %
2d: %5u", i
, packet.adc[i]);
printf ("\n");
}
printf ("\n");
}