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