Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

freeRTOS - moduł BT odbiera krzaki

masterix07 18 Maj 2017 16:38 804 4
  • #1 18 Maj 2017 16:38
    masterix07
    Poziom 3  

    Witam wszystkich. Szukam speca od freeRTOSa aby powiedział mi co robie nie tak.. Otóż używam freeRTOSa wygenerowanego z CubeMXa. Chce obsłużyć moduł BT, a to równa się ogarnąć UARTa. No i zaczynają się schody bo mimo że program bez freeRTOSa działa to z nim odbiera mi jakieś śmieci. A dokładnie dwa znaki. I nie wiem co może być nie tak.

    Mam skonfigurowany UART z DMA ( może na wyrost no ale niech będzie ). Zczytuje z UARTa po znaku i kompletuje komende w tablicy. Jak mam znak nowej lini to wysyłam komendę do analizy. Używam callbacka jak niżej:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    a tutaj rozpoznanie komendy i wysłanie do kolejki informacji
    Kod: c
    Zaloguj się, aby zobaczyć kod


    w tasku odpowiedzialnym za wysyłanie wysyłam odpowiednią komendę zwrotną :
    Kod: c
    Zaloguj się, aby zobaczyć kod



    A tutaj konfiguracja UARTA i DMA:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    a tutaj ss z debugera co mi odbiera BT
    freeRTOS - moduł BT odbiera krzaki

    Ktoś może pomoże mi w czym tkwi problem ? Jestem nowy w RTOSach więc zlitujcie się bo mnie już sił brakuje..

    Na prośbę autora z postu usunąłem wulgaryzm i temat przywróciłem.
    Dondu

  • #2 19 Maj 2017 21:46
    QuadMan
    Poziom 13  

    Witam.

    Kolego, chciałbym Ci pomóc (pewnie nie tylko ja), ale problemem są te makra od ST ,np: osMessageGet(MessageQueue, osWaitForever), które mi nic nie mówią - nijak się to ma do FreeRTOS-a. Tak myślę, że to pewnie jest: xQueueReceive(MessageQueue, portMAX_DELAY), ale głowy nie dam.....
    Musiałbyś chyba umieścić tu spakowany projekt, w nadziei, że komuś się zechce przez to przebrnąć. Tymi swoimi makrami ST przeszło samo siebie...
    Swoją drogą, musiałeś być chyba nieźle zdesperowany, żeby wygenerować FreeRTOS-a z CUBE'a ;-).

    Pozdrawiam, QuadMan.

  • #3 19 Maj 2017 23:23
    BlueDraco
    Specjalista - Mikrokontrolery

    Pomysł, by używać DMA w celu odebrania jednego znaku, jest, delikatnie rzecz ujmując, dosyć egzotyczny.

  • #4 20 Maj 2017 20:18
    michcior
    Poziom 28  

    Uwaga co do wysyłania wiadomości z przerwania. A coś mi mówi że HAL_UART_RxCpltCallback jest wykonywane w kontekście przerwania. FreeRTOS ma specjalną konstrukcję. Chodzi o to, że wysłanie wiadomości może zmienić kontekst do którego system powróci po skończeniu przerwania. Dlatego robi się coś takiego:
    http://www.freertos.org/a00119.html

  • #5 21 Maj 2017 23:13
    masterix07
    Poziom 3  

    Dziekuje za odpowiedzi :) zdaje sobie sprawę że używanie DMA tutaj jest na wyrost ale bawiłem się wszystkimi opcjami i na DMA skończyłem :) Co do makr ST to się nazywa CMSIS freeRTOS dokładnie i chyba jest nawet na stronie freeRTOSa ale i tak wrzucam spakowany projekt.

    Może pomożecie mi się z tym uporać :) Projekt w Atollic TrueStudio :) A co do tego to wydawało mi sie ze z calbackiem można tak działać

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME