[baro] ms5611: actually write result to baro.absolute

This commit is contained in:
Felix Ruess
2013-08-23 17:20:53 +02:00
parent 112638e919
commit 308adb7502
4 changed files with 16 additions and 6 deletions
+7 -3
View File
@@ -49,6 +49,8 @@ void ms5611_i2c_init(struct Ms5611_I2c *ms, struct i2c_periph *i2c_p, uint8_t ad
void ms5611_i2c_start_configure(struct Ms5611_I2c *ms)
{
if (ms->status == MS5611_STATUS_UNINIT) {
ms->initialized = FALSE;
ms->prom_cnt = 0;
ms->i2c_trans.buf[0] = MS5611_SOFT_RESET;
i2c_transmit(ms->i2c_p, &(ms->i2c_trans), ms->i2c_trans.slave_addr, 1);
ms->status = MS5611_STATUS_RESET;
@@ -152,10 +154,13 @@ void ms5611_i2c_event(struct Ms5611_I2c *ms) {
}
else if (ms->status != MS5611_STATUS_UNINIT) { // Configuring but not yet initialized
switch (ms->i2c_trans.status) {
case I2CTransFailed:
/* try again */
ms->prom_cnt = 0;
ms->status = MS5611_STATUS_UNINIT;
ms->i2c_trans.status = I2CTransDone;
break;
case I2CTransSuccess:
if (ms->status == MS5611_STATUS_PROM) {
/* read prom data */
@@ -174,14 +179,13 @@ void ms5611_i2c_event(struct Ms5611_I2c *ms) {
}
else {
/* checksum error, try again */
ms->prom_cnt = 0;
ms->status = MS5611_STATUS_UNINIT;
}
}
}
case I2CTransDone:
ms->i2c_trans.status = I2CTransDone;
break;
default:
break;
}
+7 -3
View File
@@ -63,6 +63,8 @@ void ms5611_spi_init(struct Ms5611_Spi *ms, struct spi_periph *spi_p, uint8_t sl
void ms5611_spi_start_configure(struct Ms5611_Spi *ms)
{
if (ms->status == MS5611_STATUS_UNINIT) {
ms->initalized = FALSE;
ms->prom_cnt = 0;
ms->tx_buf[0] = MS5611_SOFT_RESET;
spi_submit(ms->spi_p, &(ms->spi_trans));
ms->status = MS5611_STATUS_RESET;
@@ -166,10 +168,13 @@ void ms5611_spi_event(struct Ms5611_Spi *ms) {
}
else if (ms->status != MS5611_STATUS_UNINIT) { // Configuring but not yet initialized
switch (ms->spi_trans.status) {
case SPITransFailed:
/* try again */
ms->prom_cnt = 0;
ms->status = MS5611_STATUS_UNINIT;
ms->spi_trans.status = SPITransDone;
break;
case SPITransSuccess:
if (ms->status == MS5611_STATUS_PROM) {
/* read prom data */
@@ -188,14 +193,13 @@ void ms5611_spi_event(struct Ms5611_Spi *ms) {
}
else {
/* checksum error, try again */
ms->prom_cnt = 0;
ms->status = MS5611_STATUS_UNINIT;
}
}
}
case SPITransDone:
ms->spi_trans.status = SPITransDone;
break;
default:
break;
}
@@ -100,6 +100,7 @@ void baro_event(void (*b_abs_handler)(void)){
ms5611_i2c_event(&baro_ms5611);
if (baro_ms5611.data_available) {
baro.absolute = baro_ms5611.data.pressure;
b_abs_handler();
baro_ms5611.data_available = FALSE;
@@ -98,6 +98,7 @@ void baro_event(void (*b_abs_handler)(void)){
ms5611_spi_event(&baro_ms5611);
if (baro_ms5611.data_available) {
baro.absolute = baro_ms5611.data.pressure;
b_abs_handler();
baro_ms5611.data_available = FALSE;