Förklaring av problemet :
Hur fungerar en fixed point uträkning i C?
Jag kör just nu med floating point, men det tar ganska lång tid att utföra beräkningar och det hade varit roligt att veta hur man gör det på ett snabbare och effektivare sätt.
Just nu har jag ett uttryck på formen f(x) = k*x+m
som jag skrivit ner till
Kod: Markera allt
po2 = 0.0449*(float)tempres+8.7860;
0.0449 är mitt "k" värde som jag multiplicerar med resultatet från AD omvandlaren.
8.7860 är min konstant "m" eftersom det finns en viss "bias" i systemet.
Just nu så spottar systemet ur sig tal mellan ca 0- 190 vilket motsvarar %syrgas. 160% syrgas kan man andas om man använder 100% syrgas att dyka med ner till 6m djup.
AD omvandlaren jag använder har en upplösning på 12 bitar. (ger värden från 0-4095).
Mitt önskväda mål är att ha en pressition på 1%. Jag har märkt att om jag har ett litet fel på "k" värdet, som knappt märks när man mäter syrgasen i luften (20.9%) så kan det bli åt helvete fel åt nått håll när man får större värden från AD omvandlaren då man når 160-190% syrgas. och det är VÄLDIGT VIKTIGT att det inte diffar några 10% när man når höga koncerntrationer eftersom kan leda till olyckor.
Mina frågor:
Hur gör jag för att använda fixed point uträknigar på ett smidigt sätt i C?
Är det samma sak som att använda heltal istället för flyttal och sedan själv bestämma vart "." tecknet skall vara?
finns det färdiga funktioner där man kan lägga in sitt fixed point tal för att omvandla det till en sträng bokstäver?
/ Daniel Grafström