A melhor maneira de ler a partir de sensores que não possuem pino de interrupção e requerem algum tempo antes que a medida esteja pronta

Estou tentando conectar um sensor de pressão (MS5803-14BA) à minha placa (NUCLEO-STM32L073RZ).

De acordo comFicha de dados (página 3), o sensor de pressão requer alguns milissegundos antes que a medição esteja pronta para ser lida. Para o meu projeto, eu estaria interessado na resolução mais alta que requer cerca de 10 ms para a conversão dos dados brutos.

Infelizmente, esse sensor de pressão não possui nenhum pino de interrupção que possa ser explorado para ver quando a medição está pronta e, portanto, resolvi temporariamente o problema, atrasando após a solicitação de novos dados.

Não gosto da minha solução atual, já que nesses 10 ms eu poderia colocar o mcu trabalhando em outra coisa (tenho vários outros sensores conectados à minha placa), mas sem nenhum pino de interrupção, não tenho certeza sobre qual é o melhor maneira de resolver esse problema.

Outra solução veio à minha mente: usar um timer que dispara 20 digamos 20 ms e executa as seguintes operações:

1.a Read the current value stored in the registers (discarding the first value)
1.b Ask for a new value

Dessa forma, na próxima iteração, eu precisaria apenas ler o valor solicitado no final da iteração anterior.

O que eu não gosto é que minha medição tenha sempre 20 ms. Até que o atraso permaneça 20 ms, ele ainda deve estar bem, mas se eu precisar reduzir a taxa, a "idade" da leitura com a minha solução aumentará.

Você tem alguma outra idéia sobre como lidar com isso?

Obrigado.

Nota: Informe-me se você precisaria ver minha implementação atual.

questionAnswers(2)

yourAnswerToTheQuestion