ATNEL tech-forum
https://forum.atnel.pl/

Brak komunikacji z modułem NRF24L01
https://forum.atnel.pl/topic22662.html
Strona 1 z 1

Autor:  pimpekswiatelko [ 11 lis 2019, o 15:31 ]
Tytuł:  Brak komunikacji z modułem NRF24L01

Cześć,
mam problem z modułem radiowym NRF24L01, a dokładniej nie mogę nawiązać z nim połączenia po SPI. Próba odczytania rejestru np. STATUS kończy się niepowodzeniem.
Program "zatrzymuje się" na funkcji GetReg(). Mikrokontroler to Atmega 32A. Proszę o pomoc w rozwiązaniu mojego problemu.
Pozdrawiam.

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

Autor:  tonygryps [ 11 lis 2019, o 16:21 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Witam ja tu widzę kilka problemów
1)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tego nigdy nie robimy w kodzie tylko w ustawieniach projektu
2)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
co to ma definiować? w atmedze 32 nie ma takich rejestrów.
3) brak podstaw zacznij od Blue-booka pooglądaj poradniki https://www.youtube.com/watch?v=hi_hG4btdK0.

Autor:  miki53 [ 11 lis 2019, o 17:54 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Cześć

Masz strasznie namieszane z tymi rejestrami PORTD3 czegoś takiego niema
przyjrzyj się jak ustawiamy porty

Obrazek

jak sam widzisz takich portów nawet niema
jakie Ty próbujesz ustawić

DDRB - to jest rejestr kierunku dla całego portu B
a to DDB7 niczego nie oznacza

#define SCK DDB7
#define MOSI DDB5
#define CSN DDB4
#define CE DDB1



void SPI_Init(void)
{
DDRB|=(1<<SCK)|(1<<MOSI)|(1<<CSN)|(1<<CE);
SPCR|=(1<<SPE)|(1<<MSTR);
SETBIT(PORTB, 4);
CLEARBIT(PORTB, 1);

Przemyśl ten cały swój kod bo tak on nie ruszy

Autor:  pimpekswiatelko [ 11 lis 2019, o 22:28 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Poprawiłem rejestry i taktowanie ustawiłem w projekcie, niestety dalej nie działa prawidłowo. Zauważyłem, że odpięcie od Atmegi CSN powoduje zaświecenie się po chwili diody na PD3, co by oznaczało, że rejestr zostaje odczytany wtedy poprawnie. Bez tego dioda nie świeci się.

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

Autor:  tonygryps [ 11 lis 2019, o 22:53 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

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


Są przecież poradniki Mirka i nie tylko gdzie jest to pięknie wytłumaczone co i jak.
https://www.youtube.com/watch?v=tIS1LX6if3E

Autor:  pimpekswiatelko [ 11 lis 2019, o 23:35 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Nie rozumiem dlaczego powyższy zapis jest błędny.
Moje rozumowanie jest następujące:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przesuwam 00000001 o 3 w lewo i wykonuje sumę logiczną powstałej maski z rejestrem DDRD. Ustawiam więc PORTD 3 jako wyjście nie ingerując w resztę bitów rejestru.

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


Przesuwam 00000001 o 3 w lewo i wykonuje negację, następnie robię iloczyn logiczny maski z rejestrem PORTD, ustawiając tym samym stan wyjścia PORTD 3 na niski.

Autor:  micky [ 11 lis 2019, o 23:45 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

A jak nazywamy poszczególne bity?

Autor:  pimpekswiatelko [ 12 lis 2019, o 00:01 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

według noty w rejestrach DDRX : DDX0,DDX1 itd., a w rejestrach PORTX: PORTX0, PORTX1 itd.
Czyli powinienem zamienić
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

?
Tylko że w takim wypadku i tu, i tu mamy przesunięcie o 3, wiec nic to nie zmieni

Autor:  tonygryps [ 12 lis 2019, o 09:28 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Na samej górze projektu inkludujesz bibliotekę systemową
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jeśli korzystasz z eclipsa wciśnij na klawiaturze klawisz ctrl i kliknij w tą bibliotekę otworzy ci się wnętrze io.h tam znajdź nazwę swojego procka i analogicznie jak wyżej ctrl i klikasz na nazwę otworzy się plik z wszystkimi nazwami rejestrów i pinów twojego procka . Polecam tą lekturę
Cytuj:
Nie rozumiem dlaczego powyższy zapis jest błędny.
a taki zapis nic ci nie mówi?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ustawiasz w rejestrze kierunku pin procka PD3 jako wyjście (nie stan wysoki ani niski tylko ze to jest wyjście)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ustawiasz w rejestrze stanu pin procka PD3 stan wysoki na PD3. znajdź różnicę między twoim zapisem a tym.

Autor:  mirekk36 [ 12 lis 2019, o 12:19 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Panowie nie ma różnicy pomiędzy zapisem

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


a

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


a nawet pomiędzy

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


Po prostu jak ktoś lubi tracić czas na wpisywanie większej ilości znaków czyli PORTD3 zamiast PD3 - no to będzie tracił - bo kto komu zabroni ... ot kwestia nawyków i przyzwyczajeń albo oszczędności czasu

Autor:  pimpekswiatelko [ 12 lis 2019, o 12:57 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Dziękuję za odpowiedzi tak jak myśałem, są to tożsame zapisy (PD3 = POTRD3 = 3) i nie ma to wpływu na działanie programu i rozwiązanie problemu z modułem radiowym. Ale dziękuję za sugestię co do zapisu , będę już zapisywał krócej :)
Nadal jednak proszę o dalszą pomoc w nawiązaniu połączenia z modulem NFR24L01, gdyż jak dotąd prawie wszystkie wskazówki dotyczyły właśnie nazewnictwa.

Autor:  tonygryps [ 12 lis 2019, o 17:12 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Cytuj:
Panowie nie ma różnicy pomiędzy zapisem

Składnia: [ Pobierz ] [ Ukryj ]
język c

PORTD |= (1<<PD3);

GeSHi


a

Składnia: [ Pobierz ] [ Ukryj ]
język c

PORTD |= (1<<PORTD3);

GeSHi


a nawet pomiędzy

Składnia: [ Pobierz ] [ Ukryj ]
język c

PORTD |= (1<<DDRD3);

GeSHi


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

tylko jak tak napisany kod analizować.

Autor:  mirekk36 [ 12 lis 2019, o 19:30 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

tonygryps napisał(a):
tylko jak tak napisany kod analizować.

Nie no to oczywiste - że o wiele bardziej przejrzyście jest jak się posługujemy jakimiś nazwami bitów. Ja tylko podpowiedziałem, że tak samo jak w plikach systemowych są zdefiniowane nazwy typu PD2, PD3 itp... to dokładnie tak samo są zdefiniowane PORD2, PORTD3 ale także DDRD2, DDRD3 itd itd ... Tyle że z tych ostatnich rzadko kto korzysta.

Autor:  motomichu30 [ 27 lis 2019, o 21:19 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Witam. Ja również zgłaszam się z prośbą o pomoc w znalezieniu błędu. Mam bibliotekę Mirka do obsługi tych modułów i próbowałem uruchomić program testowy, taki jak w video poradnikach lecz ciągle mam problem, tak mi się wydaje że z odbiornikiem. Nadajnik wyświetla ATNEL później iNET0, iNET1.... a odbiornik nie reaguje. Dodam że po wyświetleniu iNET5 pojawia się ! po czym wnioskuje że problem leży po stronie odbiornika.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Kod nadajnika jest taki sam z tą różnicą że #define NADAJNIK 1

Autor:  tonygryps [ 28 lis 2019, o 17:46 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Jeśli nic nie zmieniałeś w kodzie od Mirka to on na 100% działa wiem bo sam go testowałem. Najprawdopodobniej masz jakiś problem sprzętowy wstaw zdjęcia jak to masz połączone (może moduł uwalony).

Autor:  motomichu30 [ 28 lis 2019, o 22:01 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Cześć. Zamieniałem miejscami moduły i do obu płytek wgrywałem raz kod nadajnika a raz kod odbiornika. Podłączenie na pewno mam dobre bo jeśli ustawię w jednym lub drugim układzie tryb nadawania to po kolei wyświetla iNET1 itd. na końcu wykrzyknik. pin irq mam podłączony do PB2 i ustawione int2, pin ce podłączony do BP3 i tak też ustawione w bibliotece. jest jakaś inna metoda na sprawdzenie modułów ?

Autor:  Szofer [ 29 lis 2019, o 21:30 ]
Tytuł:  Re: Brak komunikacji z modułem NRF24L01

Problem z zasilaniem na 99%, miałem to samo przy modułach ze wzmacniaczem, dodałem kondziolka do pinów zasilania modułu i problem znikł, komunikacja dwustronna ożyła,

.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/