Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATmega8][C][Delphi][BTM-222] - Czy konieczne są opóźnienia w transmisji?

Defozo 18 Mar 2013 18:42 1047 2
  • #1 18 Mar 2013 18:42
    Defozo
    Poziom 17  

    Witam!
    Staram się wysłać komendy przez Bluetooth (za pośrednictwem BTM-222 przy prędkości 38400bps) do mikrokontrolera ATmega8 odnośnie zmiany PWM silników.

    Z początku chciałem robić to tak:

    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    Jednak okazało się, że bardzo często komendy nie docierały w pełni (np. zamiast "255y" dochodziło "25y").

    Dlatego dodałem 28ms opóźnienia:
    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    Przy takich opóźnieniach nie ma błędów w komunikacji, ale przy wysłaniu tej komendy tracę aż 118ms!
    Jest to zdecydowanie za długo!


    Program po stronie mikrokontrolera:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Czy jest jakiś sposób, by nie trzeba było stosować takich opóźnień?

    Proszę o pomoc,
    Defozo

    0 2
  • #2 18 Mar 2013 19:49
    BlueDraco
    Specjalista - Mikrokontrolery

    Skąd wiesz, że polecenia nie docierały?

    No i dlaczego zmienną do przechowywania cyfry nazwałeś "liczba" ?

    0
  • #3 18 Mar 2013 20:17
    Defozo
    Poziom 17  

    BlueDraco napisał:
    Skąd wiesz, że polecenia nie docierały?

    Wywnioskowałem po ustawionej szybkości silników przez mikrokontroler.
    Później zrobiłem również echo i faktycznie okazało się, że mikrokontroler nie zawsze odsyła pełną komendę.

    BlueDraco napisał:
    No i dlaczego zmienną do przechowywania cyfry nazwałeś "liczba" ?

    Z początku trochę eksperymentowałem z tą zmienną i tak już zostało.
    Zmieniłem właśnie kod - od teraz zmienna "liczba" nazywa się "cyfra".

    0