Witajcie,
mam taki problem, który zapewne jest jakąś głupotą, na którą nie potrafię wpaść.
Mam zestawiony układ (a właściwie dwa - jeden nadawczy i jeden odbiorczy) z ATtiny24 i RFM22-868S2. W trybie nadajnika udało mi się coś już z niego wydusić (pobiera spory prąd, bo ma ustawioną maksymalną moc wyjściową), o tyle z odbiornikiem "zawisłem".
W trybie FIFO, odczyt z rejestru 0x7F (służącego do odbioru z FIFO) daje stale te same wartości. Najczęściej 0x40 (sprawdzone oscyloskopem na linii SDO), ale czasem inne, na przykład 0x42 po ponownym włączeniu zasilania. I tak można sobie z niego odczytywać ile się chce, w nieskończność wypluwa to samo. Nawet dodanie komendy Clear FIFO (0x03 i potem 0x00 wpisane do rejestru 0x08) niczego nie zmienia. Próbowałem odczytu w trybie normalnym (po jednym bajcie), próbowałem w trybie burst - to samo. Nawet wtedy, kiedy nadajnik jest wyłączony.
W ogóle, coś jest nie tak z jego trybem odczytu, bo nie wykrywa preambuły ani napełnienia bufora (rejestry 0x03 i 0x04), za to obecność sygnału radiowego wykrywa (zawartość rejestru 0x26 silnie rośnie po włączeniu nadajnika).
Komunikacja z nim raczej jest poprawna, bo wszystkie inne rejestry mogę zapisywać - odczytane wartości pokrywają się z wpisanymi.
Wejścia TX_ANT i RX_ANT modułu RFM22 mam na sztywno spolaryzowane - inaczej w nadajniku, inaczej w odbiorniku.
Inicjalizację i odczyt wzorowałem na dokumentacji HopeRF:
http://www.hoperf.com/data/upload/back/20181204/RFDK_RFM22B_V2.1.zip
która jest prostsza (przez co wydaje mi się pewniejsza) niż wynalazki z internetu, np.
https://github.com/sparkfun/RF_Transceiver_Breakout-RFM22B/tree/master/Firmware
chociaż tego próbowałem najpierw.
Generalnie, zależy mi na tym, aby udało się przesłać jakiekolwiek bajty z nadajnika do odbiornika. Szybkość, CRC itd. nie mają znaczenia - z tym sobie później poradzę. Na razie chcę jakkolwiek się porozumieć, bo bez tego nie ruszę dalej.
Obstawiam, że to jest jakaś głupotka, w stylu niewłaściwa kolejność komend, bo same zawartości rejestrów mam już przepatrzone na wylot. Pamiętam, jak uruchamiałem RFM12B i męczyłem się z nim długimi godzinami. Powodem była właśnie nieodpowiednia kolejność komend w inicjalizacji.
Link do używanej przeze mnie noty katalogowej:
https://www.sparkfun.com/datasheets/Wireless/General/RFM22B.pdf
Program odbiornika:
Program nadajnika: (chwilowo nieistotny, ale może tam też siedzi jakiś babol)
mam taki problem, który zapewne jest jakąś głupotą, na którą nie potrafię wpaść.
Mam zestawiony układ (a właściwie dwa - jeden nadawczy i jeden odbiorczy) z ATtiny24 i RFM22-868S2. W trybie nadajnika udało mi się coś już z niego wydusić (pobiera spory prąd, bo ma ustawioną maksymalną moc wyjściową), o tyle z odbiornikiem "zawisłem".
W trybie FIFO, odczyt z rejestru 0x7F (służącego do odbioru z FIFO) daje stale te same wartości. Najczęściej 0x40 (sprawdzone oscyloskopem na linii SDO), ale czasem inne, na przykład 0x42 po ponownym włączeniu zasilania. I tak można sobie z niego odczytywać ile się chce, w nieskończność wypluwa to samo. Nawet dodanie komendy Clear FIFO (0x03 i potem 0x00 wpisane do rejestru 0x08) niczego nie zmienia. Próbowałem odczytu w trybie normalnym (po jednym bajcie), próbowałem w trybie burst - to samo. Nawet wtedy, kiedy nadajnik jest wyłączony.
W ogóle, coś jest nie tak z jego trybem odczytu, bo nie wykrywa preambuły ani napełnienia bufora (rejestry 0x03 i 0x04), za to obecność sygnału radiowego wykrywa (zawartość rejestru 0x26 silnie rośnie po włączeniu nadajnika).
Komunikacja z nim raczej jest poprawna, bo wszystkie inne rejestry mogę zapisywać - odczytane wartości pokrywają się z wpisanymi.
Wejścia TX_ANT i RX_ANT modułu RFM22 mam na sztywno spolaryzowane - inaczej w nadajniku, inaczej w odbiorniku.
Inicjalizację i odczyt wzorowałem na dokumentacji HopeRF:
http://www.hoperf.com/data/upload/back/20181204/RFDK_RFM22B_V2.1.zip
która jest prostsza (przez co wydaje mi się pewniejsza) niż wynalazki z internetu, np.
https://github.com/sparkfun/RF_Transceiver_Breakout-RFM22B/tree/master/Firmware
chociaż tego próbowałem najpierw.
Generalnie, zależy mi na tym, aby udało się przesłać jakiekolwiek bajty z nadajnika do odbiornika. Szybkość, CRC itd. nie mają znaczenia - z tym sobie później poradzę. Na razie chcę jakkolwiek się porozumieć, bo bez tego nie ruszę dalej.
Obstawiam, że to jest jakaś głupotka, w stylu niewłaściwa kolejność komend, bo same zawartości rejestrów mam już przepatrzone na wylot. Pamiętam, jak uruchamiałem RFM12B i męczyłem się z nim długimi godzinami. Powodem była właśnie nieodpowiednia kolejność komend w inicjalizacji.
Link do używanej przeze mnie noty katalogowej:
https://www.sparkfun.com/datasheets/Wireless/General/RFM22B.pdf
Program odbiornika:
Kod: C / C++
Program nadajnika: (chwilowo nieistotny, ale może tam też siedzi jakiś babol)
Kod: C / C++
