Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 08:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 5 cze 2019, o 19:25 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Hej Mam pewne oczywiste pytanie, chcę się tylko upewnić o poprawności mojego myślenia. Opiszę Wam co robię i na jakie trudności natrafiłem:
Chcę porozumieć dwa układy przy użyciu NRF'a i bibliotek od Mirka.


Pierwszy układ ma nadać pewną depeszę, drugi ją odebrać i wysłać potwierdzenie (takie zezwolenie na wysłanie drugiej depeszy po sparsowaniu pierwszej).
Wydawałoby się że nic prostszego:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W funkcji parsującej nadajnika oczekuję na komunikat AT+OK. Ten komunikat nadawany jest przez odbiornik po sparsowaniu przez niego danych

Takie było założenie jednak nie zadziałało.
Przez przypadek zakomentowałem 13 linijkę powyższego kodu tj
set_rx_mode(); // czekam na potwierdzenie
i wówczas program ruszył.
Zgodnie z planem, co sekundę wysyłana jest depesza i otrzymuję odpowiedź od nadajnika, pomimo nieustawionego trybu RX.
Po ustawieniu trybu RX program nic nie odbiera Trochę to dziwne i wydaje mi się jednak że nie jest to właściwe działanie programu.
Może ktoś dopatrzy się mojego błędu w rozumowaniu tego dość prostego mechanizmu?
Bezskutecznie próbowałem wprowadzić pewne opóźnienia nawet do 20 ms przy przełączaniu trybów aby komunikacja SPI dotycząca bufora i rejestrów NRFa nie zakłócały się.
Kod mam względnie rozbudowany jednak wszelkie moje próby zdebugowania go poprzez uproszczenie sprowadziły go do postaci jak powyżej i wyniku który opisuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2019, o 20:56 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

przecież biblioteka daje ci sprzętowe potwierdzenie i callbacka do tego można założyć - więc po jakiego grzybka robić to jeszcze raz samemu ręcznie ? Tak na szybko odpowiadam bo dawno już tych kodów źródłowych nie ruszałem

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2019, o 21:40 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

No tak, tylko potwierdzenie sprzętowe potwierdza mi dotarcie danych do odbiornika, a ja potrzebuję wiedzieć kiedy sparsuje mi dane jakie dotarły. W funkcji w odbiorniku po przypisaniu wszystkich zmiennych z otrzymanego łańcucha wysyła mi potwierdzenie że przypisanie się powiodło i jest to kilka do kilkudziesięciu ms opóźnienia od dotarcia danych do odbiornika w zależności od długości bufora.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2019, o 22:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Jarosław J napisał(a):
, a ja potrzebuję wiedzieć kiedy sparsuje mi dane jakie dotarły. W funkcji w odbiorniku po przypisaniu wszystkich zmiennych z otrzymanego łańcucha wysyła mi potwierdzenie że przypisanie się powiodło i jest to kilka do kilkudziesięciu ms opóźnienia od dotarcia danych do odbiornika w zależności od długości bufora.

No to teraz trzeba sobie obmyślić dobry algorytm

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2019, o 05:10 
Offline
Użytkownik

Dołączył(a): 01 sty 2013
Posty: 169
Pomógł: 0

Algorytm jest taki: Po wysłaniu danych - nadajnik przełącza się w tryb odbioru i czeka na potwierdzenie sparsowania tych danych przez odbiornik, aby mógł wysłać kolejny bufor
Problem w tym, że jak napisałem w pierwszym poście, kiedy ustawię nadajnik w tryb odbioru - nie otrzymuję potwierdzenia. Natomiast kiedy go nie ustawię w tryb odbioru - wówczas program działa jak należy, ale tylko dla pierwszej depeszy.
Nie byłoby problemem gdyby powyższy mechanizm działał zawsze, ale kiedy odbiorę to pierwsze potwierdzenie, to w ciągu tej samej sekundy muszę wysłać kolejny ciąg znaków i po wysłaniu drugiej serii potwierdzenia nie otrzymuję ani w przypadku ustawienia RX_mode ani bez ustawienia tego trybu. Program sprowadziłem do najprostszej postaci i nadal zachowuje się tak samo.
Spróbuję zatem przeorganizować mój program nadawczy od podstaw. Pisałem, bo myślałem, że ktoś już coś podobnego przerabiał.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO