Witam
Męczę od kilku miesięcy (z przerwami) łączność między modułami RF. Transmisja przebiega prawie poprawnie, tzn. pomiędzy poprawnie odebrane bity wstawiane są ciągi zer. Nie znalazłem nic na ten temat na forum.
Nadajnik:
ATmega88, zegar: wewn. RC 8 MHz
RFM12B, wersja 868 MHz, antena: drut lambda/2
zasilanie:3,3 V (trafo daje 500 mA)
interface: programowe SPI 16 bit
program: asembler Atmela,
wysyła w kółko pakiet danych, zwolnienie bufora sprawdza testując MSbit rejestru statusu, nie używa przerwań, dane do bufora ładuje komendą 0xB8XX (bez użycia pinu 6 - nFFS)
Odbiornik:
ATmega32, zegar: wewn. RC 8 MHz
RFM12B, wersja 868 MHz, antena: drut lambda/2
LCD graficzny z Nokii 7210/6100
zasilanie: 5 V uC; 3,3 V moduł RF, LCD
dopasowanie poziomów napięć na liniach danych za pomocą diod i rezystorów
interface: programowe SPI 16 bit
program: asembler Atmela,
zapis FIFO po wykryciu synchronizacji, uC czeka na pakiet danych testując MSbit rejestru statusu, nie używa przerwań, dane z bufora czyta komendą 0x00XX (bez użycia pinu 6 - nFFS), wyświetla dane na LCD w postaci binarnej, czeka 2 s, czyści wyświetlacz i czeka na ponowną synchronizację
Pakiet danych:
- preambuła: 0xAA, 0xAA
- synchro pattern: 0x2D, 0xD4
- 16 B danych
Do prędkości 19,2 kb/s działa bezbłędnie (testowałem na odl. do 11 m, przez dwie ściany, w ruchu, różne orientacje anten).
Przy 38,4 kb/s już świruje. Po ok. 11 bitach danych wstawia paczkę 6 zer, trochę bitów danych, 6 zer, itd. Czasem pokaże dłuższy ciąg bez tych zbędnych zer. Nie ma tu znaczenia odległość (5 cm do 4m) przesyłane dane (1111..., 1010...). Przy wyższych prędkościach to trochę lepiej wygląda (przy max prędkości dla tych modułów czyli 115,2 kb/s wstawia tylko 3 zera w jednym miejscu, przy odl. do 11 m).
Już nie mam pomysłu co to może być. To nie są jakieś duże prędkości, anteny leżą obok siebie. Moje SPI programowe powinno nadążyć z przesyłem z/do bufora do prędkości 130/160 kb/s, więc to raczej nie to. Próbowałem różnych konfiguracji modułów (częstotliwość f0, dewiacja, szerokość pasma odb. tryby pracy AFC, clock recovery, moc nadajnika, czułość odbiornika, poj. dołączanego kondensatora). Udało mi się tym tylko nieznacznie pogorszyć jakość transmisji - pojawiały się błędy. Chodziło mi już głowie nawet uszkodzenie RAMu więc przeniosłem tablicę bufora odbiorczego.
Jeśli ktoś ma jakiś pomysł to proszę radę.
Męczę od kilku miesięcy (z przerwami) łączność między modułami RF. Transmisja przebiega prawie poprawnie, tzn. pomiędzy poprawnie odebrane bity wstawiane są ciągi zer. Nie znalazłem nic na ten temat na forum.
Nadajnik:
ATmega88, zegar: wewn. RC 8 MHz
RFM12B, wersja 868 MHz, antena: drut lambda/2
zasilanie:3,3 V (trafo daje 500 mA)
interface: programowe SPI 16 bit
program: asembler Atmela,
wysyła w kółko pakiet danych, zwolnienie bufora sprawdza testując MSbit rejestru statusu, nie używa przerwań, dane do bufora ładuje komendą 0xB8XX (bez użycia pinu 6 - nFFS)
Odbiornik:
ATmega32, zegar: wewn. RC 8 MHz
RFM12B, wersja 868 MHz, antena: drut lambda/2
LCD graficzny z Nokii 7210/6100
zasilanie: 5 V uC; 3,3 V moduł RF, LCD
dopasowanie poziomów napięć na liniach danych za pomocą diod i rezystorów
interface: programowe SPI 16 bit
program: asembler Atmela,
zapis FIFO po wykryciu synchronizacji, uC czeka na pakiet danych testując MSbit rejestru statusu, nie używa przerwań, dane z bufora czyta komendą 0x00XX (bez użycia pinu 6 - nFFS), wyświetla dane na LCD w postaci binarnej, czeka 2 s, czyści wyświetlacz i czeka na ponowną synchronizację
Pakiet danych:
- preambuła: 0xAA, 0xAA
- synchro pattern: 0x2D, 0xD4
- 16 B danych
Do prędkości 19,2 kb/s działa bezbłędnie (testowałem na odl. do 11 m, przez dwie ściany, w ruchu, różne orientacje anten).
Przy 38,4 kb/s już świruje. Po ok. 11 bitach danych wstawia paczkę 6 zer, trochę bitów danych, 6 zer, itd. Czasem pokaże dłuższy ciąg bez tych zbędnych zer. Nie ma tu znaczenia odległość (5 cm do 4m) przesyłane dane (1111..., 1010...). Przy wyższych prędkościach to trochę lepiej wygląda (przy max prędkości dla tych modułów czyli 115,2 kb/s wstawia tylko 3 zera w jednym miejscu, przy odl. do 11 m).
Już nie mam pomysłu co to może być. To nie są jakieś duże prędkości, anteny leżą obok siebie. Moje SPI programowe powinno nadążyć z przesyłem z/do bufora do prędkości 130/160 kb/s, więc to raczej nie to. Próbowałem różnych konfiguracji modułów (częstotliwość f0, dewiacja, szerokość pasma odb. tryby pracy AFC, clock recovery, moc nadajnika, czułość odbiornika, poj. dołączanego kondensatora). Udało mi się tym tylko nieznacznie pogorszyć jakość transmisji - pojawiały się błędy. Chodziło mi już głowie nawet uszkodzenie RAMu więc przeniosłem tablicę bufora odbiorczego.
Jeśli ktoś ma jakiś pomysł to proszę radę.
