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

Odczyt liczby 24-bitowej w C

bubu2606 03 Mar 2012 19:31 1546 8
REKLAMA
  • #1 10629202
    bubu2606
    Poziom 15  
    Witam
    mam pytanie dotyczące odczyty liczby 24bitowej
    czy podana niżej funkcja jest poprawna??
    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]

    powinna realizować odczyt jednego bajtu po czym drugiego i trzeciego i zapis to liczby realizacja odczytu na wyświetlaczu hd44780 realizowana za pomocą:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10629237
    tmf
    VIP Zasłużony dla elektroda
    No nie jest poprawna, bo kolejne zapisy kasują poprzednie. Musiałbyś użyć operacji sumy bitowej (|). Kolejna sprawa, że coś przesunięte o więcej niż 8 bitów po operacji & 0xFF da zero, więc maskę też trzeba odpowiednio zmienić. IMHO o wiele przejrzyściej jest wykorzystać unie.
  • REKLAMA
  • #3 10629270
    bubu2606
    Poziom 15  
    a czy mógłbyś napisać jak to mniej więcej ma wyglądać??

    Dodano po 3 [minuty]:

    a taka funkcja jest poprawna??
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #4 10629932
    omicronNs
    Poziom 21  
    Ten bufor w postaci tablicy(niepotrzebnie za dużej) jest zbędny. Deklarujesz zmienną int32_t, zerujesz ją, wpisujesz pierwszy bajt, przesuwasz 8 pozycji w lewo, wpisujesz drugi bajt operatorem |=, przesuwasz 8 pozycji w lewo, wpisujesz ostatni bajt operatorem |=. Można to zrobić w pętli - zaoszczędzisz miejsce.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #5 10629990
    bubu2606
    Poziom 15  
    czyli
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #6 10629995
    omicronNs
    Poziom 21  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Błąd. Poza tym ok.
  • REKLAMA
  • #7 10630012
    bubu2606
    Poziom 15  
    wstawiłem Twoją funkcje i na wyświetlaczu mam liczby od 7158 do 16698768 strasznie skacze

    Dodano po 11 [minuty]:

    czym się rózni spi_TranByte(0x00); od spi_TranByte(0xff); ??
  • #8 10630155
    omicronNs
    Poziom 21  
    Biorąc pod uwagę zasadę transmisji SPI i zakładając, że układ z którym się porozumiewasz nie interpretuje tego co do niego wysłałeś, to niczym
  • #9 10632030
    bubu2606
    Poziom 15  
    a mam pytanie co do zamiany odczytanej liczby na string za pomocą ultoa, czy zawsze będę miał poprawną wartość na podstawie poniższej zamiany:
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA