mit 64bit Zahlen rechnen

OP #3170000
Lesenswert?

Hi, ich versuche grade den folgenden Code zum laufen zu bekommen. Für P 
sollte 100009 raus kommen, aber ich bekomme immer 0xFFFF98E8 raus. Was 
mache ich denn falsch?
1
    int64_t SENS=40127;
2
    int64_t OFF=36924;
3
    int64_t TCS=23317;
4
    int64_t TCO=23282;
5
    int64_t TREF=33464;
6
    int64_t TEMPSENS=28312;
7
    int64_t temperature;
8
    int64_t dT;
9
    int64_t TEMP;
10
    int64_t Offset;
11
    int64_t Sensitivity;
12
    int64_t pressure;
13
    int64_t P;
14
    uint8_t part1a=130;
15
    uint8_t part2a=193;
16
    uint8_t part3a=62;
17
    uint8_t part1b=138;
18
    uint8_t part2b=162;
19
    uint8_t part3b=26;
20

21
    temperature=(part1a<<16)+(part2a<<8)+part3a;
22
    dT=temperature-TREF*256LL;
23
    TEMP=2000LL+dT*TEMPSENS/8388608LL;
24
    Offset=OFF*65536LL+(TCO*dT)/128LL;
25
    Sensitivity=SENS*32768LL+(TCS*dT)/256LL;
26
    pressure=(part1b<<16)+(part2b<<8)+part3b;
27

28
    P=(pressure*Sensitivity/2097152LL-Offset)/32768LL;
29

30
    x1=(unsigned char)(P>>24);
31
    x2=(unsigned char)(P>>16);
32
    x3=(unsigned char)(P>>8);
33
    x4=(unsigned char)(P);
34
    UARTAusgang(x1,x2,x3,x4);

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