ao_ms5607_get_sample(uint8_t cmd) {
uint8_t reply[3];
uint8_t read;
- uint32_t loops;
ao_ms5607_done = 0;
#if AO_MS5607_PRIVATE_PINS
ao_spi_put(AO_MS5607_SPI_INDEX);
#endif
-// loops = 0;
- cli();
- while (!ao_ms5607_done) {
-// loops++;
+ ao_arch_block_interrupts();
+ while (!ao_ms5607_done)
ao_sleep((void *) &ao_ms5607_done);
- }
- sei();
-// if (loops > 1)
-// printf ("ms5607 loops %d\n", loops);
+ ao_arch_release_interrupts();
#if AO_MS5607_PRIVATE_PINS
stm_gpio_set(AO_MS5607_CS_PORT, AO_MS5607_CS_PIN, 1);
#else
return ((uint32_t) reply[0] << 16) | ((uint32_t) reply[1] << 8) | (uint32_t) reply[2];
}
+#ifndef AO_MS5607_BARO_OVERSAMPLE
+#define AO_MS5607_BARO_OVERSAMPLE 2048
+#endif
+
+#ifndef AO_MS5607_TEMP_OVERSAMPLE
+#define AO_MS5607_TEMP_OVERSAMPLE AO_MS5607_BARO_OVERSAMPLE
+#endif
+
+#define token_paster(x,y) x ## y
+#define token_evaluator(x,y) token_paster(x,y)
+
+#define AO_CONVERT_D1 token_evaluator(AO_MS5607_CONVERT_D1_, AO_MS5607_BARO_OVERSAMPLE)
+#define AO_CONVERT_D2 token_evaluator(AO_MS5607_CONVERT_D2_, AO_MS5607_TEMP_OVERSAMPLE)
+
void
ao_ms5607_sample(struct ao_ms5607_sample *sample)
{
- sample->pres = ao_ms5607_get_sample(AO_MS5607_CONVERT_D1_2048);
- sample->temp = ao_ms5607_get_sample(AO_MS5607_CONVERT_D2_2048);
+ sample->pres = ao_ms5607_get_sample(AO_CONVERT_D1);
+ sample->temp = ao_ms5607_get_sample(AO_CONVERT_D2);
}
#include "ao_ms5607_convert.c"