Mycket här...
(Notera att Kaggen sannolikt *inte* talar om en dsPIC...)
Sedan, dsPIC'en är så pass annorlunda än de "vanliga" PIC16/PIC18 modellerna, och jag skulle gissa att det inte är många här (inkl mig) som har skrivit något kod för dom. Jag har i alla fall *läst* på lite om dom...
OK, så med det sagt kör vi vidare...
> "Klockade mina flyttals beräkningar till ca 500 klockcykler"
Det är nog rimligt för floating point. Fixed point kommer att gå på allt från ett par cyckler (för 16 bit prec) till ett tiotal (för 32 bit prec).
> "Anledningen till att jag använder flyttal är att jag inte lyckades räkna fram något vettigt värde med hjälp av heltal."
Ja, *heltal* är något annat en "fixed point". Det hela handlar om att skala sina värden och att tänka sig decimalpunkten på ett lämpligt ställe, allt eftersom vad applikationen kräver.
> "po2 = (449*t1[0]+87860 );"
Svårt att säga något om när man inte vet vad t.ex "449" och "87860" står för.
> "Jag hade helst viljat få mitt beräknade tal med 2 decimaler ex: po2 = 1.42; "
*DU* ja !!
PICen har inte en aning om vad decimaler är !! Den kan lika gärna räkna med 142 eller i princip vad som helst, bara *du* vet hur det skall konverteras vid presentationen (t.ex på LCD eller liknande).
Och dessutom, vad är po2 ? Motsvarar "1.42" någonting i verkligheten ? T.ex "1.42 dm", "1.42 Kg" eller något liknande liknande ?
Det är inte alls säkert att det är optimalt att hela tiden försöka representera de verkliga värderna med exakt samma siffror i applikationen. Det är ju bara vid t.ex en presentation på en LCD (bara som exempel!) som det behöver stå "1.42 Kg". Sedan spelar det ju ingen roll om 1.42 är lagrat som 142, 1420, 387 eller i princip vad som helst i applikationen. Det beror på vad som är effektivast att hantera/bearbeta.
Genom att tala om "decimaler" försöker du föra in begrepp som en PIC/dsPIC i alla fall inte har en aning om vad det är ! Spara alla "decimaler" till det är dags för presentation (eller överföring till andra system).
Så, för att sammanfatta, så handlar det till stor del om att göra en analys av de verkliga egenskaper som man vill representera i applikationen. Vilken spännvidd (t.ex 0-50 deg C) har de ? Vilken upplösning (t.ex 0.5 deg C) behöver jag ? Då kanske det är enklast att låta 0 deg C = 0 och 50 deg C = 100.
Sedan får man även ta hänsyn till ackumulerade fel (det du kallar "driva iväg", men float är inte bättre en fixed point på den punkten. Skillnaden är bara att man själv i förväg måste bestämma var (den tänkta) decimalpunkten skall vara, floating point har en viss automatik för detta. Däremot ger floating point en del svårberäknerliga avrundnings fenomen. Kom ihåg att ett floating point värde nästan *alltid* är ett avrundat närmevärde, det ligger liksom i definitionen av dom...
Nu får det vara bra...