Skip to content
Snippets Groups Projects
Commit 3654c714 authored by Andrew Tridgell's avatar Andrew Tridgell
Browse files

Revert "ADC: only read channels that are actually being used"

This reverts commit 95e6bb26f4772ca8c7faa62215de6f078d3df3c7.

ADC will be disabled on APM2
parent c18ad755
No related branches found
No related tags found
No related merge requests found
......@@ -63,11 +63,6 @@ static volatile uint32_t _sum[8];
// how many values we've accumulated since last read
static volatile uint16_t _count[8];
// a mask of what channels are actually being read. If a channel has
// never been read, then don't bother gathering it. That saves us a
// lot of cycles in the timer call
static uint8_t enable_mask;
static uint32_t last_ch6_micros;
// TCNT2 values for various interrupt rates,
......@@ -92,35 +87,15 @@ static inline unsigned char ADC_SPI_transfer(unsigned char data)
void AP_ADC_ADS7844::read(void)
{
uint8_t ch;
unsigned char enable_cmd[9];
uint8_t num_enabled = 0;
if (enable_mask == 0) {
// no channels to read
return;
}
for (ch = 0; ch < 8; ch++) {
if (enable_mask & (1<<ch)) {
enable_cmd[num_enabled++] = adc_cmd[ch];
}
}
enable_cmd[num_enabled] = 0;
num_enabled = 0;
bit_clear(PORTC, 4); // Enable Chip Select (PIN PC4)
ADC_SPI_transfer(enable_cmd[0]); // Command to read the first channel
ADC_SPI_transfer(adc_cmd[0]); // Command to read the first channel
for (ch = 0; ch < 8; ch++) {
uint16_t v;
if ((enable_mask & (1<<ch)) == 0) {
continue;
}
v = ADC_SPI_transfer(0) << 8; // Read first byte
v |= ADC_SPI_transfer(enable_cmd[++num_enabled]); // Read second byte and send next command
v |= ADC_SPI_transfer(adc_cmd[ch + 1]); // Read second byte and send next command
if (v & 0x8007) {
// this is a 12-bit ADC, shifted by 3 bits.
......@@ -193,8 +168,6 @@ float AP_ADC_ADS7844::Ch(uint8_t ch_num)
uint16_t count;
uint32_t sum;
enable_mask |= (1<<ch_num);
// ensure we have at least one value
while (_count[ch_num] == 0) /* noop */ ;
......@@ -220,10 +193,6 @@ uint32_t AP_ADC_ADS7844::Ch6(const uint8_t *channel_numbers, uint16_t *result)
uint32_t sum[6];
uint8_t i;
for (i=0; i<6; i++) {
enable_mask |= (1<<channel_numbers[i]);
}
// ensure we have at least one value
for (i=0; i<6; i++) {
while (_count[channel_numbers[i]] == 0) /* noop */;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment