logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega16: Przekształcenie i wyświetlenie wyniku pomiaru z przetwornika a/c

chiefp 07 Cze 2015 09:38 801 3
REKLAMA
  • #1 14750895
    chiefp
    Poziom 2  
    Witam, potrzebuje wyświetlić wynik pomiaru z zewnętrznego przetwornika analogowo/cyfrowegona. Urządzenie pracuje na ATmega16 do którego podłączony jest przetwornik a/c, wyświetlacz hd44780, urządzenie działa i wskazuje pomiary napięcia poprawnie, potrebuje jednak dalej przekształcić ten wynik, a to już nie wychodzi.

    Część programu do "wyni" działa, natomiast reszta obliczeń która potrzebna jest do wyświetlenia tego co chce nie działa poprawnie. Chce najpierw przekształcić to na wynik odpowiedniego napięcia(poniżej) a następnie wynik ciśnienia za pomocą wzoru (P=(2500-V(wynin))/203.



    Kod: C#
    Zaloguj się, aby zobaczyć kod


    mcpadc - wartość odczytana z przetwornika a/c

    Kod: C#
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • REKLAMA
  • #3 14772395
    chiefp
    Poziom 2  
    Wie ktoś może jak prawidłowo napisać w języku c dodawanie np (40000 +(mcpadc *625)). Dlaczego np mnożenie (mcpadc*625) daje wynik dodatni gdy mcpadc jest ujemne.
  • #4 14772603
    Andrzej__S
    Poziom 28  
    chiefp napisał:
    Dlaczego np mnożenie (mcpadc*625) daje wynik dodatni gdy mcpadc jest ujemne.

    Zmienne zadeklarowane jako:
    uint32_t = unsigned integer 32 bit = liczba całkowita 32 bitowa bez znaku
    nigdy nie przyjmują wartości ujemnej.
    Do operowania na liczbach ujemnych służy typ int32_t. Zmienne tego typu mogą przyjmować wartości od -(2^31) do (2^31)-1. Jeśli Twoje obliczenia mieszczą się w tym zakresie, to zmiana typu na int32_t powinna pomóc.

    PS. Oczywiście ta zmiana dotyczy wszystkich zmiennych, które mogą przyjmować wartości ujemne. No i zmienne typu uint16_t to też zmienne bez znaku...
REKLAMA