TigerSHARC 12bit ADC -> float

Gast #1559868
Lesenswert?

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
#1559926
Lesenswert?

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);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren