Witam, od jakiegoś czasu walczę z obsługą czujnika ciśnienia HP03s. Odczyt ciśnienia z niego polega na odczytaniu kilku parametrów z pamięci, dwóch wartości z przetwornika a następnie obliczeniu skomplikowanym wzorem.
Poniżej przedstawiam kod fukncji obliczającej. W matlabie wychodzą prawidłowe wyniki, po symulacji samego kodu funckji w Visual Studio też wszystko ładnie a w ATmedze śmieci.
Przy czym wartości Cal[0..6] to odpowiednio C1..C7 ze wzoru. Wynoszą one u mnie:
C1 = 15547;
C2 = 3173;
C3 = 260;
C4 = 705;
C5 = 33125;
C6 = 5974;
C7 = 2500;
A = 7;
B = 33;
C = 6;
D = 8;
przykładowo dla wartości:
D1 = 46542;
D2 = 32871;
powinienem wg matlaba oraz Visual Studio otrzymać takie wyniki:
dUT =
-256.0304
OFF =
1.2712e+004
SENS =
1.5482e+004
X =
2.4494e+004
P =
1.0154e+004
niestety program wywala się przy obliczeniu SENS, X oraz P.
Wzór z dokumentacji:
To na pewno jest jakaś drobnostka, niedoaptrzenie moje albo coś. Bardzo proszę o pomoc.
p.s wiem, że mógłbym wrzucić kod do AVRStudio i mieć bardziej wiarygodny symulator niż VS ale skompilowanie w nim czego kolwiek przerasta moje kompetencje
Poniżej przedstawiam kod fukncji obliczającej. W matlabie wychodzą prawidłowe wyniki, po symulacji samego kodu funckji w Visual Studio też wszystko ładnie a w ATmedze śmieci.
Kod: C / C++
Przy czym wartości Cal[0..6] to odpowiednio C1..C7 ze wzoru. Wynoszą one u mnie:
C1 = 15547;
C2 = 3173;
C3 = 260;
C4 = 705;
C5 = 33125;
C6 = 5974;
C7 = 2500;
A = 7;
B = 33;
C = 6;
D = 8;
przykładowo dla wartości:
D1 = 46542;
D2 = 32871;
powinienem wg matlaba oraz Visual Studio otrzymać takie wyniki:
dUT =
-256.0304
OFF =
1.2712e+004
SENS =
1.5482e+004
X =
2.4494e+004
P =
1.0154e+004
niestety program wywala się przy obliczeniu SENS, X oraz P.
Wzór z dokumentacji:
To na pewno jest jakaś drobnostka, niedoaptrzenie moje albo coś. Bardzo proszę o pomoc.
p.s wiem, że mógłbym wrzucić kod do AVRStudio i mieć bardziej wiarygodny symulator niż VS ale skompilowanie w nim czego kolwiek przerasta moje kompetencje
