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

Jak zaprogramować [AtMega162][C][ZigBit]?

pioadam 02 Lip 2012 23:57 1248 4
  • #1 11065648
    pioadam
    Poziom 10  
    Witam Szanownych Kolegów!
    Mam mały problem, w moim projekcie, o którym już wcześniej pisałem do komunikacji zastosowałem moduły Zigbit (zamiast CC1000).
    Wgrałem do nich SerialNet, i przez terminal mogę się bez problemu komunikować, kłopot jest, gdy chcę coś wysłać prosto z atmegi.
    O ile uart inicializowany jest prawidłowo (podpinałem się z terminalem i wszystko jest ok) to moduł nic nie wysyła. Wg mnie problem jest w znaku końca nadawania - w dokumentacji znalazłem informację, że należy wysłać "\r" jednak to nie działa.
    próbowałem również z "0x0D" oraz "<CR>"- efektów brak.
    tak próbuję coś wysłać:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Domyślam się, że jest to banalna sprawa, jednak od kilku godzin się z tym męczę.
    Pozdrawiam!
  • Pomocny post
    #2 11065789
    mickpr
    Poziom 39  
    Może wyślij bezpośrednio kod:
    13
    0x0D lub
    \r, ale nie jako STRING, a jako bajt (CHAR).

    A Ty chyba interpretujesz, że '\r' ma być ciągiem znaków.
    Nie wiem, czy twoja implementacja "SendString" zamienia kod '"\r" na bajt 13?

    Kod ten jest znakiem "not printable", nie da się go zapisać pojedynczym znakiem i jako taki nie ma jednoznakowej repezentacji "wizualnej" w ASCII.
    (Są takie kody ASCII o "wartości bitowej" poniżej 32 i powyżej 127).
    Dlatego też implementacja SendString (czy np. printf) powinna zmieniać takie kody jak \n \r \t (dwuznakowe) na pojedyncze bajty (znaki).
    Być może twój SendString po prostu przesyła kolejne znaki podanego ciągu do bufora wyjściowego i nie zajmuje się ich interpretacją.
    Podobnie jest ze znakiem %.
  • Pomocny post
    #3 11066081
    Konto nie istnieje
    Poziom 1  
  • #4 11066787
    pioadam
    Poziom 10  
    Poniżej inicjalizacja UARTu, funkcja wysyłająca i minimalny kod który chciałbym uruchomić w najprostszej wersji.

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

    ======================
    Problem udało się rozwiązać, poniżej działający kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dziękuję serdecznie za pomoc i nakierowanie na rozwiązanie problemu!
  • #5 12028035
    Zari44
    Poziom 11  
    Cześć. Mam problem z nowym ZigBit'em 900. Nie odpowiada mi na komendy AT wysyłane z terminala na komputerze.

    Nie mam wyprowadzonego JTAGA na płytce, jedynie UART. Jak w takim razie znaleźć odpowiedni SerialNet i jak wgrać go na ZigBita przez port szeregowy?

    Z góry dzięki za pomoc.
REKLAMA