altos/telemini-v2.0: Enable beep config and radio rate config
[fw/altos] / src / telemini-v2.0 / ao_pins.h
index fad029e20a75c640b8ec4ca8e3f69ce59d538258..948310e553207f196c76d1121217e3a06e6ac0cf 100644 (file)
 
 #define HAS_FLIGHT             1
 #define HAS_USB                        1
+
+#define HAS_USB_PULLUP 1
+#define AO_USB_PULLUP_PORT     P1
+#define AO_USB_PULLUP_PIN      0
+#define AO_USB_PULLUP          P1_0
+
+#define AO_SMALL_ALTITUDE_TABLE        1
+
 #define USB_FORCE_FLIGHT_IDLE  1
 #define HAS_BEEP               1
+#define HAS_BEEP_CONFIG                1
+#define HAS_BATTERY_REPORT     1
 #define HAS_GPS                        0
 #define HAS_SERIAL_1           0
 #define HAS_EEPROM             1
 #define USE_INTERNAL_FLASH     0
 #define HAS_DBG                        0
 #define PACKET_HAS_SLAVE       1
-#define USE_FAST_ASCENT_LOG    1
+#define HAS_RADIO_RATE         1
+#define HAS_TELEMETRY          1
 
-#define AO_LED_GREEN           1
 #define AO_LED_RED             2
-#define LEDS_AVAILABLE         (AO_LED_RED|AO_LED_GREEN)
+#define LEDS_AVAILABLE         AO_LED_RED
 #define HAS_EXTERNAL_TEMP      0
 #define HAS_ACCEL              0
 #define HAS_IGNITE             1
  * SPI
  */
 
+#define HAS_SPI_0              1
+#define SPI_0_ALT_1            1
+#define HAS_SPI_1              1
+#define SPI_1_ALT_2            1
 #define SPI_CS_PORT            P1
 #define SPI_CS_SEL             P1SEL
 #define SPI_CS_DIR             P1DIR
@@ -53,6 +67,7 @@
 /*
  * Flash
  */
+#define AO_M25_SPI_BUS         1
 #define AO_M25_SPI_CS_PORT     SPI_CS_PORT
 #define AO_M25_SPI_CS_MASK     0x04    /* cs_flash is P1_2 */
 #define M25_MAX_CHIPS          1
 #define AO_MS5607_CS_MASK      (1 << AO_MS5607_CS_PIN)
 #define AO_MS5607_MISO_PORT    P0
 #define AO_MS5607_MISO_PIN     2
+#define AO_MS5607_MISO         P0_2
 #define AO_MS5607_MISO_MASK    (1 << AO_MS5607_MISO_PIN)
 #define AO_MS5607_SPI_INDEX    0
+#define HAS_EXTI_0             1
 
 /*
  * Igniters
 #define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
 
 #define AO_SEND_MINI
+#define AO_LOG_FORMAT          AO_LOG_FORMAT_TELEMINI
 
 /*
  * ADC
@@ -121,22 +139,51 @@ struct ao_adc {
        printf("tick: %5u apogee: %5d main: %5d batt: %5d\n", \
               (p)->tick, (p)->adc.sense_a, (p)->adc.sense_m, (p)->adc.v_batt)
 
-#define FETCH_ADC()                                                    \
-       a = (uint8_t __xdata *) (&ao_data_ring[ao_data_head].adc);      \
-       switch (sequence) {                                             \
-       case 4:                                                         \
-               a += 4;                                                 \
-               sequence = 0;                                           \
-               break;                                                  \
-       case 1:                                                         \
-               a += 2;                                                 \
-               sequence = 4;                                           \
-               break;                                                  \
-       case 0:                                                         \
-               sequence = 1;                                           \
-               break;                                                  \
-       }                                                               \
-       if (sequence)                                                   \
-               ;
+#define AO_ADC_PINS    ((1 << 0) | (1 << 1) | (1 << 4))
+
+#define FETCH_ADC() do {                                               \
+               a = (uint8_t __xdata *) (&ao_data_ring[ao_data_head].adc); \
+               switch (sequence) {                                     \
+               case 4:                                                 \
+                       a += 4;                                         \
+                       sequence = 0;                                   \
+                       break;                                          \
+               case 1:                                                 \
+                       a += 2;                                         \
+                       sequence = 4;                                   \
+                       break;                                          \
+               case 0:                                                 \
+                       sequence = 1;                                   \
+                       break;                                          \
+               }                                                       \
+               a[0] = ADCL;                                            \
+               a[1] = ADCH;                                            \
+               if (sequence) {                                         \
+                       ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | sequence; \
+                       return;                                         \
+               }                                                       \
+               AO_DATA_PRESENT(AO_DATA_ADC);                           \
+               if (ao_data_present != AO_DATA_ALL)                     \
+                       return;                                         \
+               ao_data_ring[ao_data_head].ms5607_raw.pres = ao_ms5607_current.pres; \
+               ao_data_ring[ao_data_head].ms5607_raw.temp = ao_ms5607_current.temp; \
+       } while (0)
+
+/*
+ * Voltage divider on ADC battery sampler
+ */
+#define AO_BATTERY_DIV_PLUS    100     /* 100k */
+#define AO_BATTERY_DIV_MINUS   27      /* 27k */
+
+/*
+ * Voltage divider on ADC igniter samplers
+ */
+#define AO_IGNITE_DIV_PLUS     100     /* 100k */
+#define AO_IGNITE_DIV_MINUS    27      /* 27k */
+
+/*
+ * ADC reference in decivolts
+ */
+#define AO_ADC_REFERENCE_DV    33
 
 #endif /* _AO_PINS_H_ */