Hallo, bisher habe ich noch keine Idee wie man schnell und komfortabel Werte eines 12bit ADCs, die im Zweierkomplement in signed ints vorliegen und Spannungen zwischen -10 und +10 V repräsentieren, nach float (single) konvertieren kann. Damit wird dann weiter gerechnet und zu einem späteren Zeitpunkt geht es über das 2er Komplement wieder zurück in einen DAC. Google hat mir nicht helfen können. Zur Not muss ich die 2er Komplemente manuell zerlegen und umrechnen aber ich hoffe dass es auch einfacher geht... Habt ihr einen Tipp für mich? Sonst muss ich Grüße
Das Beispiel hier ist zwar MATLAB und nicht C, aber vom Prinzip her ja das Gleiche: http://www.s3.kth.se/signal/grad/smart_impl/downloads/meaurements/int2float.m
1 | function y_float=Int2float(x_int) |
2 | |
3 | % Function to be used when debugging linear assembler. |
4 | |
5 | x_rem=x_int; |
6 | % Obtain 32bit-pattern |
7 | |
8 | Bits=zeros(1,32); |
9 | if (x_int<0) |
10 | Bits(1)=1; |
11 | x_rem=x_rem+2^31; |
12 | end; |
13 | |
14 | ip=2; |
15 | for i1=30:-1:0 |
16 | if ~(x_rem<(2^i1)) |
17 | Bits(ip)=1; |
18 | x_rem=x_rem-2^i1; |
19 | end; |
20 | ip=ip+1; |
21 | end; |
22 | |
23 | |
24 | e=sum(Bits(2:9).*(2.^(7:-1:0))); |
25 | f=sum(Bits(10:32).*(2.^(-(1:23)))); |
26 | |
27 | y_float=(1-2*Bits(1))*(2^(e-127))*(1+f); |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.