diff --git a/Include/system/stm32f0xx_hal_conf.h b/Include/system/stm32f0xx_hal_conf.h --- a/Include/system/stm32f0xx_hal_conf.h +++ b/Include/system/stm32f0xx_hal_conf.h @@ -18,7 +18,7 @@ //#define HAL_CRYP_MODULE_ENABLED //#define HAL_TSC_MODULE_ENABLED //#define HAL_DAC_MODULE_ENABLED -//#define HAL_I2C_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED //#define HAL_I2S_MODULE_ENABLED #define HAL_IWDG_MODULE_ENABLED //#define HAL_LCD_MODULE_ENABLED diff --git a/Libraries/aprs/aprs.c b/Libraries/aprs/aprs.c --- a/Libraries/aprs/aprs.c +++ b/Libraries/aprs/aprs.c @@ -24,6 +24,7 @@ #include #include "config.h" +#include "pressure.h" #include "aprs.h" #include "gps.h" //#include "gps.h" @@ -78,11 +79,11 @@ void aprs_send(void) ax25_send_string(tmpBuffer); // Pressure - snprintf(tmpBuffer, 128, "%d,", 23); + snprintf(tmpBuffer, 128, "%d,", pressure_getpressure()); ax25_send_string(tmpBuffer); // Temperature - snprintf(tmpBuffer, 128, "%d,", 77); + snprintf(tmpBuffer, 128, "%d,", pressure_gettemp()); ax25_send_string(tmpBuffer); // HDOP diff --git a/Source/main.c b/Source/main.c --- a/Source/main.c +++ b/Source/main.c @@ -13,6 +13,7 @@ #include "si446x/si446x.h" #include "aprs/aprs.h" #include "aprs/afsk.h" +#include "pressure.h" #include "gps.h" @@ -26,6 +27,7 @@ int main(void) afsk_init(); si446x_init(); gps_poweron(); + pressure_init(); // Software timers uint32_t last_transmission = HAL_GetTick(); @@ -37,6 +39,7 @@ int main(void) if(HAL_GetTick() - last_transmission > 700) { gps_update_data(); // Will always return at 1hz rate (default measurement rate) + pressure_read(); aprs_send(); //while(afsk_busy()); diff --git a/Source/system/interrupts.c b/Source/system/interrupts.c --- a/Source/system/interrupts.c +++ b/Source/system/interrupts.c @@ -8,6 +8,7 @@ #include "stm32f0xx.h" #include "system/gpio.h" #include "aprs/afsk.h" +#include "pressure.h" // Systick void SysTick_Handler(void) @@ -26,3 +27,14 @@ void TIM1_BRK_UP_TRG_COM_IRQHandler(void { HAL_TIM_IRQHandler(afsk_timer_gethandle()); } + + +// Handle I2C interrupts +void I2C1_IRQHandler(void) +{ + if (pressure_get_i2c_handle()->Instance->ISR & (I2C_FLAG_BERR | I2C_FLAG_ARLO | I2C_FLAG_OVR)) { + HAL_I2C_ER_IRQHandler(pressure_get_i2c_handle()); + } else { + HAL_I2C_EV_IRQHandler(pressure_get_i2c_handle()); + } +}