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



Teraz jest 30 mar 2026, o 20:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 5 paź 2014, o 18:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Witam

Korzystając m.in. z informacji zawartych w tym temacie
post84301.html?hilit=nRF24L01#p84301
udało mi się uruchomić komunikację bezprzewodową za pomocą modułów nRF24L01 z tym że działa to tylko w jedną stronę.

Mam dwa układy, ATmega32 i podpięty nRF24L01 i drugi układ składający się z ATmegi8 i nRF24L01.
I teraz tak , komunikacja działa ładnie kiedy jeden z tych układów pracuje cały czas jako nadajnik a drugi jako odbiornik. Bez względu na to czy to ATmega32 czy ATmega8 odbiera czy nadaje.

Problem natomiast pojawia się w takie sytuacji gdy np. ATmega32 wyśle jakiś bajt do ATmegi 8. ATmega8 to odbiera i odsyła inny bajt. Wtedy ten nie dociera. Reset ATmegi8 nie pomaga, dopiero odłączenie i podłączenie zasilania poduje że ATmega8 w końcu wyśle dane do ATmegi 32.

Gdy zamienie role i to ATmega8 najpierw wysyła dane a potem czeka na odpowiedź od ATmegi32 sytuacja wygląda tak samo. Doszedłem więc do wniosku że nRF24L01 po odebraniu danych ma problem z nadawaniem, bo kiedy po starcie zasilania pracuje tylko jako nadajnik wszystko gra. Szukam przyczyny w kodzie ale nie mogę jej znaleść. Funkcje do wysyłania i odbierania wyglądają tak:

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


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


Rekomendowane w dokumentacji kolejności przejść pomiędzy trybami pracy są zachowane więc nie powinno być problemu z przełączaniem się pomiędzy nadawaniem i odbieraniem
Obrazek

Liczę na to że ktoś z was spotkał się już wcześniej z tym problemem i coś podpowie bo wyczerpują mi się już pomysły.
Biblioteka której używam powstała w oparciu http://www.tinkerer.eu/AVRLib/nRF24L01 (Adam Peterwas)
i wygląda ona tak:

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


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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 paź 2014, o 20:06 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak to jest cały twój kod to brakuje załączania trybu odbioru po tym jak już dane zostaną wysłane. Zgodnie ze schematem po zakończeniu nadawania lub odbierania moduł wraca do trybu Standby-I.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 paź 2014, o 20:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Też tak myślałem dlatego próbowałem modyfikować funkcję do wysyłania w ten sposób:

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


Ale nic to nie dało. A nawet wręcz przeciwnie, jak za dużo kombinowałem to transmisja całkiem przestawała działać.
Bardziej mi się wydaje że problem jest przy przejściu z trybu RX MODE do TX MODE tylko że gdy na poczatku funkcji inicjalizuje moduł w trybie RX i potem coś wysyłam cały czas na żądanie to jest ok, natomiast gdy po inicjalizacji w trybie RX coś odbiorę a potem próbuję wysłać to jest problem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2014, o 01:58 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Bo musisz zaczekać, aż moduł wyśle dane, albo odczytując rejestr statusowy, albo załączyć przerwanie od końca wysyłania i w nim ustawiać moduł w tryb odbioru.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2014, o 09:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

Działa Panowie, zastosowałem się do waszych wskazówek i dodatkowo nie miałem włączonych automatycznych potwierdzeń w rejestrze EN_AA.

Teraz funkcje inicjalizująca moduł oraz wysyłająca dane po modyfikacji wyglądają następująco:

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


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2014, o 10:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Hej ,

Moze troche off topic ale patrzac na informacje to nrf24l01 sa na 3,3V ? Czy tam trzeba uzywac ko nwersji napiec ? Bo na schemacie zalaczonym na mikrokontroler.net z tego co wyczytalem uzyto tam napiecia 3,3V do procka i do modulu

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 paź 2014, o 10:16 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

Powiem tak u mnie wystarczyło zasilanie 3V3 ale reszta komunikacja szła normalnie na 5V bez żądnych buforów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 paź 2014, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2012
Posty: 97
Lokalizacja: Tarnów
Pomógł: 2

RafPe napisał(a):
Hej ,

Moze troche off topic ale patrzac na informacje to nrf24l01 sa na 3,3V ? Czy tam trzeba uzywac ko nwersji napiec ? Bo na schemacie zalaczonym na mikrokontroler.net z tego co wyczytalem uzyto tam napiecia 3,3V do procka i do modulu


Jeśli chodzi o zasilanie tego modułu to maksymalne napięcie wynosi 3,3V (nie radzę go przekraczać) natomiast pozostałe linie tolerują napięcie 5V więc nic się nie statnie jak podłączyć je do ATmegi zasilanej z 5V, więc tak jak kolega wyżej napisał, dodatkowe bufory są zbędne.



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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