Forum: Digitale Signalverarbeitung / DSP / Machine Learning TigerSHARC 12bit ADC -> float


von guest (Gast)


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

von Mark B. (markbrandis)


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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

x*(10.0/(2<<11))

von guest (Gast)


Lesenswert?

Danke für die Vorschläge. Aufgabe ist gelöst :)

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
Noch kein Account? Hier anmelden.