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



Teraz jest 28 mar 2024, o 22:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 11 lis 2019, o 15:31 
Offline
Nowy

Dołączył(a): 11 lis 2019
Posty: 10
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 16:21 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 17:54 
Offline
Użytkownik

Dołączył(a): 05 gru 2017
Posty: 408
Lokalizacja: Puck
Pomógł: 7

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 22:28 
Offline
Nowy

Dołączył(a): 11 lis 2019
Posty: 10
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 22:53 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 23:35 
Offline
Nowy

Dołączył(a): 11 lis 2019
Posty: 10
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2019, o 23:45 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

A jak nazywamy poszczególne bity?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2019, o 00:01 
Offline
Nowy

Dołączył(a): 11 lis 2019
Posty: 10
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2019, o 09:28 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2019, o 12:19 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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: 12 lis 2019, o 12:57 
Offline
Nowy

Dołączył(a): 11 lis 2019
Posty: 10
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2019, o 17:12 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

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ć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2019, o 19:30 
Offline
Moderator
Avatar użytkownika

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

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.

_________________
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: 27 lis 2019, o 21:19 
Offline
Użytkownik

Dołączył(a): 12 paź 2014
Posty: 32
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2019, o 17:46 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

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).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lis 2019, o 22:01 
Offline
Użytkownik

Dołączył(a): 12 paź 2014
Posty: 32
Pomógł: 0

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 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2019, o 21:30 
Offline
Użytkownik

Dołączył(a): 05 sty 2015
Posty: 393
Lokalizacja: Mielec
Pomógł: 14

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,

.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO