X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftelemega-v5.0%2Fao_pins.h;h=3f2c9ea44e5365a8c7862499c874b21a8c6a7d50;hb=HEAD;hp=9d65684df490b29f6d33dc43a066bec7c031ce22;hpb=4fed4123fd40a6fb211b542b7c922ec8b2ae0c6b;p=fw%2Faltos diff --git a/src/telemega-v5.0/ao_pins.h b/src/telemega-v5.0/ao_pins.h index 9d65684d..5901eeae 100644 --- a/src/telemega-v5.0/ao_pins.h +++ b/src/telemega-v5.0/ao_pins.h @@ -71,6 +71,7 @@ #define LOG_ERASE_MARK 0x55 #define LOG_MAX_ERASE 128 #define AO_LOG_FORMAT AO_LOG_FORMAT_TELEMEGA_5 +#define AO_LOG_NORMALIZED 1 #define HAS_EEPROM 1 #define USE_INTERNAL_FLASH 0 @@ -82,6 +83,9 @@ #define BEEPER_CHANNEL 2 #define BEEPER_PORT (&stm_gpioe) #define BEEPER_PIN 4 +#define AO_BEEP_MID_DEFAULT 179 /* 2100 Hz */ +#define AO_BEEP_MAKE_LOW(m) ((uint8_t) ((m) * 197U/179U)) /* 1900 Hz */ +#define AO_BEEP_MAKE_HIGH(m) ((uint8_t) ((m) * 163U/179U)) /* 2300 Hz */ #define HAS_BATTERY_REPORT 1 #define HAS_RADIO 1 #define HAS_TELEMETRY 1 @@ -94,9 +98,13 @@ #define SPI_1_PE13_PE14_PE15 1 /* MPU6000 */ #define SPI_1_OSPEEDR STM_OSPEEDR_10MHz +//#define MMC5983_I2C 1 + #define HAS_SPI_2 1 #define SPI_2_PB13_PB14_PB15 1 /* Flash, Companion */ +#ifndef MMC5983_I2C #define SPI_2_PD1_PD3_PD4 1 /* MMC5983 */ +#endif #define SPI_2_OSPEEDR STM_OSPEEDR_10MHz #define HAS_I2C_1 0 @@ -179,7 +187,7 @@ struct ao_adc { }; #define AO_ADC_DUMP(p) \ - printf("tick: %5u A: %5d B: %5d C: %5d D: %5d drogue: %5d main: %5d batt: %5d pbatt: %5d temp: %5d\n", \ + printf("tick: %5lu A: %5d B: %5d C: %5d D: %5d drogue: %5d main: %5d batt: %5d pbatt: %5d temp: %5d\n", \ (p)->tick, \ (p)->adc.sense[0], (p)->adc.sense[1], (p)->adc.sense[2], \ (p)->adc.sense[3], (p)->adc.sense[4], (p)->adc.sense[5], \ @@ -260,6 +268,12 @@ struct ao_adc { #define AO_BATTERY_DIV_PLUS 56 /* 5.6k */ #define AO_BATTERY_DIV_MINUS 100 /* 10k */ +/* + * Voltage divider on ADC pyro battery sampler + */ +#define AO_PYRO_BATTERY_DIV_PLUS 100 /* 100k */ +#define AO_PYRO_BATTERY_DIV_MINUS 27 /* 27k */ + /* * Voltage divider on ADC igniter samplers */ @@ -308,10 +322,8 @@ struct ao_adc { #define AO_CC1200_SPI_BUS AO_SPI_2_PB13_PB14_PB15 #define AO_CC1200_SPI stm_spi2 -#define AO_CC1200_INT_PORT (&stm_gpioe) -#define AO_CC1200_INT_PIN 1 -#define AO_CC1200_MCU_WAKEUP_PORT (&stm_gpioc) -#define AO_CC1200_MCU_WAKEUP_PIN (0) +#define AO_CC1200_INT_PORT (&stm_gpiob) +#define AO_CC1200_INT_PIN 11 #define AO_CC1200_INT_GPIO 2 #define AO_CC1200_INT_GPIO_IOCFG CC1200_IOCFG2 @@ -323,7 +335,29 @@ struct ao_adc { /* - * mpu6000 + * Here are the required sensor signs: + * + * +along nose up + * +across USB down + * +through TH down + * + * With the board aligned to have positive accel for the relevant + * axis, looking down from above we have: + * + * +roll counter clockwise (nose up) + * +pitch counter clockwise (USB down) + * +yaw counter clockwise (TH down) + */ + +/* + * On TMega v5, MPU6000 pin 1 (NW corner of chip) is placed towards + * the USB and antenna edges of the board. Relative to MPU6000 specs, + * we don't need to change any signs and so the correct values are: + * + * +along +Y +roll +Y + * +across +X +pitch +X + * +through +Z +yaw +Z + * */ #define HAS_MPU6000 1 @@ -334,28 +368,68 @@ struct ao_adc { #define AO_MPU6000_SPI_CS_PIN 13 #define HAS_IMU 1 -#define ao_data_along(packet) ((packet)->mpu6000.accel_x) -#define ao_data_across(packet) (-(packet)->mpu6000.accel_y) -#define ao_data_through(packet) ((packet)->mpu6000.accel_z) +#define ao_mpu6000_along(m) ((m)->accel_y) +#define ao_mpu6000_across(m) ((m)->accel_x) +#define ao_mpu6000_through(m) ((m)->accel_z) -#define ao_data_roll(packet) ((packet)->mpu6000.gyro_x) -#define ao_data_pitch(packet) (-(packet)->mpu6000.gyro_y) -#define ao_data_yaw(packet) ((packet)->mpu6000.gyro_z) +#define ao_mpu6000_roll(m) ((m)->gyro_y) +#define ao_mpu6000_pitch(m) ((m)->gyro_x) +#define ao_mpu6000_yaw(m) ((m)->gyro_z) -/* MMC5983 */ +#define ao_data_along(packet) ao_mpu6000_along(&(packet)->mpu6000) +#define ao_data_across(packet) ao_mpu6000_across(&(packet)->mpu6000) +#define ao_data_through(packet) ao_mpu6000_through(&(packet)->mpu6000) + +#define ao_data_roll(packet) ao_mpu6000_roll(&(packet)->mpu6000) +#define ao_data_pitch(packet) ao_mpu6000_pitch(&(packet)->mpu6000) +#define ao_data_yaw(packet) ao_mpu6000_yaw(&(packet)->mpu6000) + +/* Bit-banging i2c */ +#define AO_I2C_SCL_PORT (&stm_gpiod) +#define AO_I2C_SCL_PIN 1 +#define AO_I2C_SDA_PORT (&stm_gpiod) +#define AO_I2C_SDA_PIN 4 + +/* + * MMC5983 + * + * pin 1 NE corner of chip + * + * +along -Y + * +across +X + * +through -Z + */ #define HAS_MMC5983 1 #define AO_MMC5983_INT_PORT (&stm_gpiod) #define AO_MMC5983_INT_PIN 5 -#define AO_MMC5983_SPI_INDEX AO_SPI_2_PD1_PD3_PD4 +#define AO_MMC5983_SPI_CLK_PORT (&stm_gpiod) +#define AO_MMC5983_SPI_CLK_PIN 1 +#define AO_MMC5983_SPI_MISO_PORT (&stm_gpiod) +#define AO_MMC5983_SPI_MISO_PIN 3 +#define AO_MMC5983_SPI_MOSI_PORT (&stm_gpiod) +#define AO_MMC5983_SPI_MOSI_PIN 4 +#define AO_MMC5983_SPI_INDEX (AO_SPI_2_PD1_PD3_PD4 | AO_SPI_MODE_3) #define AO_MMC5983_SPI_CS_PORT (&stm_gpioa) #define AO_MMC5983_SPI_CS_PIN 15 -#define ao_data_mag_along(packet) ((packet)->mmc5983.x) -#define ao_data_mag_across(packet) ((packet)->mmc5983.y) -#define ao_data_mag_through(packet) ((packet)->mmc5983.z) +#define ao_mmc5983_along(m) (-(m)->y) +#define ao_mmc5983_across(m) ((m)->x) +#define ao_mmc5983_through(m) (-(m)->z) + +#define ao_data_mag_along(packet) ao_mmc5983_along(&(packet)->mmc5983) +#define ao_data_mag_across(packet) ao_mmc5983_across(&(packet)->mmc5983) +#define ao_data_mag_through(packet) ao_mmc5983_through(&(packet)->mmc5983) -/* ADXL375 */ +/* + * ADXL375 + * + * pin 1 NW corner of chip + * + * +along +X + * +across +Y + * +through +Z + */ #define HAS_ADXL375 1 #define AO_ADXL375_SPI_INDEX (AO_SPI_1_PB3_PB4_PB5 | AO_SPI_MODE_3)