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

[ATmega32] [ATmega32][C] Odbiór float przez RS - problem z niepoprawnym składaniem bajtów

Rakieta1 10 Wrz 2013 13:07 1113 5
REKLAMA
  • #1 12720263
    Rakieta1
    Poziom 9  
    Witam,

    Przejrzałem elektrodę i natrafiłem na temat o złożeniu w C przesyłanego bajt po bajcie floata. No i zastosowałem wskazany fragment kodu:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod ten, owszem powoduję odebranie przez ATmegę wszystkich bajtów (sprawdziłem), ale na liczbę float składa się czterokrotnie powtórzony ostatni bajt. Czyli np. jak wyślę tablicę bajtów [66 200 0 0] czyli 100, to ATmega otrzymuję wszystkie te bajty, ale liczba float składa się z bajtów następujących: [0 0 0 0] czyli 0. Skąd bierze się ten problem?
  • REKLAMA
  • Pomocny post
    #2 12720322
    michcior
    Poziom 30  
    A zrób tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Bedzie można sprawdzić, czy aby na pewno odbieramy to co odbieramy, bo często rejestry FIFO płatają figle.

    BTW: pokaż deklaracje funkcji "USART0_Receive". Nie jest może macro?
  • REKLAMA
  • #3 12720414
    Rakieta1
    Poziom 9  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dzięki za poradę. Sytuacja uległa poprawie, tylko że zamiast 13.67 otrzymuję 1.367E+16, a to ciut za dużo bo tylko 15 rzędów wielkości :)
  • REKLAMA
  • #4 12720476
    BlueDraco
    Specjalista - Mikrokontrolery
    Moim zdaniem masz błąd w części kodu, której nie pokazałeś. Sam odbiór jest poprawny. Jak potem dostajesz się do zmiennej float? Jak jest ona nadawana z PC?
  • REKLAMA
  • #5 12720479
    Wodzirej
    Poziom 12  
    Może skorzystaj z atof?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA