Merge branch 'master' into pwmin
authorKeith Packard <keithp@keithp.com>
Fri, 20 Jul 2012 19:08:55 +0000 (12:08 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 20 Jul 2012 19:08:55 +0000 (12:08 -0700)
src/avr/ao_adc_avr.c
src/avr/ao_pwmin.h
src/core/ao_data.h
src/core/ao_telemetry.c
src/megametrum-v0.1/ao_pins.h

index 3a262977512b606552211cee8b6122fcdea3a8e7..4896b01579cec10168a73347acfc2e3ae19e2905 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include "ao.h"
+#include "ao_pwmin.h"
 
 volatile __xdata struct ao_data        ao_data_ring[AO_DATA_RING];
 volatile __data uint8_t                ao_data_head;
@@ -93,9 +94,11 @@ ISR(ADC_vect)
        value = ADCL;
        value |= (ADCH << 8);
        ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = value;
-       if (++ao_adc_channel < NUM_ADC)
+       if (++ao_adc_channel < NUM_ADC - 1)
                ao_adc_start();
        else {
+               /* steal last adc channel for pwm input */
+               ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = ao_icp3_count;
                ADCSRA = ADCSRA_INIT;
                ao_data_ring[ao_data_head].tick = ao_time();
                ao_data_head = ao_data_ring_next(ao_data_head);
index bbab4ddc1c44fa042ea26c1bd6c609d81e45d51b..14741201af4e60244b94b1211bc3fb118b0f012b 100644 (file)
@@ -16,3 +16,4 @@
  */
 
 void ao_pwmin_init(void);
+extern volatile __data uint16_t ao_icp3_count;
index fdc49ca202df0425eb56e75162f8adc86b13e037..3944edac4cca6b97fac9685e6e4cfa63ce66e567 100644 (file)
@@ -91,9 +91,13 @@ typedef int16_t alt_t;
 typedef int16_t accel_t;
 
 /* MPU6000 is hooked up so that positive y is positive acceleration */
-#define ao_data_accel(packet)                  ((packet)->mpu6000.accel_y)
-#define ao_data_accel_cook(packet)             (-(packet)->mpu6000.accel_y)
-#define ao_data_set_accel(packet, accel)       ((packet)->mpu6000.accel_y = (accel))
+#ifndef ao_accel_axis
+#define ao_accel_axis  accel_y
+#endif
+
+#define ao_data_accel(packet)                  ((packet)->mpu6000.ao_accel_axis)
+#define ao_data_accel_cook(packet)             (-(packet)->mpu6000.ao_accel_axis)
+#define ao_data_set_accel(packet, accel)       ((packet)->mpu6000.ao_accel_axis = (accel))
 #define ao_data_accel_invert(a)                        (-(a))
 
 #else /* HAS_MPU6000 && !HAS_HIGHG_ACCEL */
index 52ac94891adebd99f915cf97a20e95ddf171a18c..5a1b3d1d75ccfee1a72e6b2dc1a04553be26445a 100644 (file)
@@ -283,6 +283,12 @@ ao_telemetry(void)
        while (!ao_flight_number)
                ao_sleep(&ao_flight_number);
 
+#if RADIO_DELAY_AFTER_BOOST
+       while (ao_flight_state < ao_flight_boost)
+               ao_sleep(&ao_flight_state);
+       ao_delay(AO_SEC_TO_TICKS(RADIO_DELAY_AFTER_BOOST));
+#endif
+
        telemetry.generic.serial = ao_serial_number;
        for (;;) {
                while (ao_telemetry_interval == 0)
index 6b0f9832f669696ce411c09a4a66a83f6cd56527..47091b62919d7ba75b353bb2d12f5e8a4a347592 100644 (file)
@@ -331,4 +331,11 @@ struct ao_adc {
 #define AO_PROFILE             0
 #endif
 
+/*
+ * Custom changes for ULA payload
+ */
+
+#define ao_accel_axis  accel_z
+#define RADIO_DELAY_AFTER_BOOST        40
+
 #endif /* _AO_PINS_H_ */