Spesso usiamo i microcontrollori per fare le cose nei nostri robot, ma dobbiamo fare dei calcoli in decimali. L'uso di variabili in virgola mobile è molto lento, poiché viene automaticamente inclusa una libreria software in virgola mobile (a meno che non si disponga di un microcontrollore di fascia alta). Pertanto, generalmente utilizziamo l'aritmetica a punto fisso.
Ogni volta che lo faccio, uso solo un numero intero e ricordo dove si trova il decimale. Tuttavia, è necessario assicurarsi che tutto sia coerente, soprattutto quando i calcoli coinvolgono variabili in cui il punto decimale si trova in una posizione diversa.
Ho implementato una funzione atan2 a punto fisso, ma poiché stavo cercando di comprimere ogni ultima goccia di precisione limitata (16 bit), spesso cambiavo la definizione di dove si trova il punto decimale e cambiava mentre lo modificavo. Inoltre, avrei alcune costanti, come una tabella di quasi ricerca, che a loro volta hanno un punto decimale implicito da qualche parte.
Voglio sapere se esiste un modo migliore. Esiste una libreria, o un insieme di macro, che può semplificare l'uso di variabili a virgola fissa, semplificando la moltiplicazione e la divisione tra variabili miste e consentendo la dichiarazione di numeri decimali o espressioni costanti, ma convertendo automaticamente la rappresentazione in virgola fissa desiderata durante la compilazione tempo?