Cześć
Poniżej przedstawię obsługę moduły RFM69 na raspberrypi. Program pisałem w NetBeans na windowsie w języku C (stosowałem cross-compiler)
Z góry przepraszam z chaos.
Biblioteka wykorzystuje również bibliotekę
wiringPI, która niestety nie będzie już uaktualniana (
tu można o tym poczytać). Może uda mi się jeszcze przy wykorzystaniu spiDEV to oprogramować.
Całej biblioteki nie będę umieszczał tylko fragmenty, które zostały zmienione - bazuje ona na bibliotece od Mirka..
A więc tak, obsługa komend wygląda następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Do tej funkcji przekazywane są trzy argumenty, w pierwotnej były dwa, więc wszystkie odnośniki do tej funkcji należy zmienić. Przykład
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Biblioteka będzie obsługiwała sprzętowo SPI, więc należy usunąć wszystko co było związane z obsługą programową SPI:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W funkcji
rfm69_fifo_transfer został zmieniony pierwszy warunek na :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oraz zmieniony został sposób przesyłania danych FIFO, na:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W funkcji odpowiedzialnej za ustawianie ID naszej sieci należy zmienić część gdzie odczytujemy dane z przestrzeni programu. Zmieniamy to na:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Teraz przechodzimy do funkcji inicjalizującej nasz układ rfm. Na początku znajduje się kod odpowiedzialny za konfigurację przerwać z mikrokontrolera AVR - usuwamy to jak i konfigurację wejść wyjść.
W funkcji odbierającej dane zmieniłem sposób odczytu długości odbieranej ramki danych, oraz odbiór samej ramki danych:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zostały utworzone dodatkowe dwie funkcje do ustawienia pinów RST i IRQ, oraz funkcja resetująca układ:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ze względu na brak jeszcze umiejętności obsługi wątków i przerwań, sprawdzanie czy naleciały nowe dane wykonuję w pętli głównej, poprzez sprawdzanie stanu pinu IRQ:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Możliwe jest też wykorzystanie funkcji
rfm69_receiving i odczyt co jakiś czas czy ta funkcja zwróci 1, co będzie informacją o odebranych danych. Tylko w tym przypadku należy dodać jakąś zwłokę czasową w pętli.
Na początku biblioteki należy zmienić też dołączane biblioteki:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Obsługa tak zmodyfikowanej biblioteki wygląda następująco (dla odbioru) :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Jednak biblioteki od Mirka są uniwersalne - po małych przeróbkach nawet na malince można odpalić jego bibliotekę.
Jeżeli coś pominąłem to poprawię. Jeżeli zauważyłeś jakiś błąd to pisz;)
Pozdrawiam