got analog sensors working (but not doing anything)
diff --git a/frc971/input/gyro_sensor_receiver.cc b/frc971/input/gyro_sensor_receiver.cc
index 2a522c5..411fb5e 100644
--- a/frc971/input/gyro_sensor_receiver.cc
+++ b/frc971/input/gyro_sensor_receiver.cc
@@ -1,3 +1,5 @@
+#include <inttypes.h>
+
#include "aos/atom_code/init.h"
#include "aos/common/logging/logging.h"
#include "aos/common/util/wrapping_counter.h"
@@ -67,6 +69,10 @@
return in / 16.0 / 1000.0 / (180.0 / M_PI);
}
+inline double battery_translate(uint16_t in) {
+ return adc_translate(in) * 80.8 / 17.8;
+}
+
} // namespace
class GyroSensorReceiver : public USBReceiver {
@@ -124,6 +130,14 @@
.loader_top(data()->main.loader_top)
.loader_bottom(data()->main.loader_bottom)
.Send();
+
+ LOG(DEBUG, "battery %f %f %" PRIu16 "\n",
+ battery_translate(data()->main.battery_voltage),
+ adc_translate(data()->main.battery_voltage),
+ data()->main.battery_voltage);
+ LOG(DEBUG, "halls l=%f r=%f\n",
+ adc_translate(data()->main.left_drive_hall),
+ adc_translate(data()->main.right_drive_hall));
}
WrappingCounter top_rise_;
diff --git a/gyro_board/src/usb/analog.c b/gyro_board/src/usb/analog.c
index b00d1b4..b2ab48f 100644
--- a/gyro_board/src/usb/analog.c
+++ b/gyro_board/src/usb/analog.c
@@ -6,9 +6,8 @@
SC->PCONP |= PCONP_PCAD;
// Enable AD0.0, AD0.1, AD0.2, AD0.3
- PINCON->PINSEL1 &= ~(2 << 14 | 2 << 16 | 2 << 18 | 2 << 20);
+ PINCON->PINSEL1 &= ~(3 << 14 | 3 << 16 | 3 << 18 | 3 << 20);
PINCON->PINSEL1 |= 1 << 14 | 1 << 16 | 1 << 18 | 1 << 20;
- ADC->ADCR = 0x00200500;
ADC->ADCR = (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3) /* enable all 4 */ |
7 << 8 /* 100MHz / 8 = 12.5MHz */ |
1 << 16 /* enable burst mode */ |
@@ -36,5 +35,5 @@
}
} while (!(value & 1 << 31));
- return ((value & 0xFFF0) >> 4);
+ return (value >> 4) & 0x3FF;
}
diff --git a/gyro_board/src/usb/encoder.c b/gyro_board/src/usb/encoder.c
index 7b6d268..77344fb 100644
--- a/gyro_board/src/usb/encoder.c
+++ b/gyro_board/src/usb/encoder.c
@@ -537,9 +537,9 @@
packet->main.left_drive = encoder5_val;
packet->main.right_drive = encoder4_val;
packet->main.indexer = encoder3_val;
- packet->main.battery_voltage = analog(0);
+ packet->main.battery_voltage = analog(3);
packet->main.left_drive_hall = analog(1);
- packet->main.right_drive_hall = analog(3);
+ packet->main.right_drive_hall = analog(2);
NVIC_DisableIRQ(EINT3_IRQn);