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



Teraz jest 19 cze 2026, o 13:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 21 lut 2016, o 20:52 
Offline
Nowy

Dołączył(a): 15 lis 2014
Posty: 7
Pomógł: 0

Hej,

Próbuję uruchomić transmisję danych za pomocą modułów RFM12B (wersja SMD).
Jest to moje pierwsze spotkanie z tymi modułami i staram się wykonywać wszystkie polecenia zgodnie z opisem Pana Mirka z zielonej książki. Na razie jestem na etapie trybu wykorzystującego funkcje blokujące.
Przedstawię najważniejsze fragmenty programu:

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


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


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


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


Niestety nie odbieram żadnych danych. Za pomocą oscyloskopu, załączając diodę w wybranych momentach programu doszedłem do tego, że procedura odbioru danych zatrzymuje się przy pierwszym wywołaniu funkcji rf12_ready(); wewnątrz funkcji rf12_rxdata.
Całość mam złożoną na płytce stykowej. Połączenia sprawdzałem pięć razy i myślę, że wszystko jest w porządku.
Przykładając sondę oscyloskopu do anteny (kawałka kabelka) nadajnika wykrywam nośną, a więc po stronie nadajnika raczej jest wszystko w porządku.

Czy ktoś mógłby wskazać miejsce, w którym popełniłem błąd?

edit:
Spróbowałem nadać coś z ATmegi32, która jak wyżej opisałem ma działać jako odbiornik. Dzieje się to samo - program zatrzymuje się na funkcji rf12_ready(). Nadawanie wykonałem tak samo jak na ATmega8. Jedyną różnicą jest zegar - m8 ma 1MHz, a m32 pracuje na 16 MHz. Spróbuję, czy coś się zmieni jak zmniejszę trochę częstotliwość.

edit2:
Jestem krok dalej. Funkcja rf12_rxdata wykonuje się do końca, ale za każdym razem zwraca 0, czyli nie zgadza się CRC.

edit3:
Niestety nadal nie udało mi się zdiagnozować przyczyny mojego problemu. Próbowałem nadawać dane w jedną i w drugą stronę - bez sukcesu. Czy nikt nie jest w stanie chociaż zasugerować, gdzie mogę robić błąd?



Ostatnio edytowano 22 lut 2016, o 18:37 przez mkot123, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2016, o 18:36 
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

mkot123 napisał(a):
Czy ktoś mógłby wskazać miejsce, w którym popełniłem błąd?

Jak mi coś nie działa to odpalam najprostszy przykład. W tym nadawaniu mogłeś zostawić _delay_ms(250), a jak to zadziała to bawić się dalej.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2016, o 18:43 
Offline
Nowy

Dołączył(a): 15 lis 2014
Posty: 7
Pomógł: 0

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


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


Dioda w odbiorniku nie zapala się ani razu.
Co ciekawe jak w odbiorniku zrobię tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dioda mruga z częstotliwością około 170Hz przez niecałe 5 sekund, po czym przestaje mrugać.

edit:
Zmieniłem częstotliwość obu procesorów na 8 MHz (wew. RC). Bez zmian.

edit2:
Jeszcze jedna rzecz. Posiadam moduły o symbolu RFM12BSP, na których zaznaczona jest częstotliwość 434 MHz (nie ma 433 MHz). Zdjęcia poniżej. Czy jest to na pewno właściwy moduł do bibliotek z zielonej książki?
ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2016, o 23:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
A patrzyłeś na to?
Obrazek

Pozdr.

...a sorry to dla nie blokujących.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2016, o 06:37 
Offline
Nowy

Dołączył(a): 15 lis 2014
Posty: 7
Pomógł: 0

Masz racje, to dla funkcji nieblokujących, ale poprawiłem ten błąd.
W następnym kroku chciałbym właśnie zabrać się za tą opcje, ale na razie jestem w martwym punkcie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2016, o 20:25 
Offline
Nowy

Dołączył(a): 15 lis 2014
Posty: 7
Pomógł: 0

W końcu udało mi się uruchomić komunikację. Przyczyna jednak nie była wcale taka oczywista, przynajmniej dla mnie.

Przed inicjalizacją RFM12B uruchamiałem tez funkcję inicjującą porty procesora, ADC, timery itd.
W tej funkcji m.in. miałem taki fragment kodu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Błędem okazało się włączanie podciągania do Vcc wszystkich pinów portu B, na którym mamy porty SPI.
Po zahaszowaniu drugiej linijki (powyżej) od razu komunikacja ruszyła bez najmniejszego problemu.
Od razu przeszedłem do wersji pracującej na przerwaniach. Ruszyła z kopyta. Pięknie :D

Jako nadajnik wykorzystałem ATmega8, która ma wejścia INT0 i INT1 na innym porcie niż SPI, dlatego tę część:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


oczywiście wraz z odpowiednią modyfikacją pliku nagłówkowego.
Po tej zmianie port, na którym mamy SPI oraz wejście przerwania nie muszą być takie same.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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