logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega8][nRF2401l][c] - Brak komunikacji między układami nRF24l01

zmorex 10 Wrz 2014 15:12 2154 3
REKLAMA
  • #1 13949223
    zmorex
    Poziom 12  
    Dzień dobry.
    Zwracam się z uprzejmą prośbą o pomoc w uruchomieniu komunikacji bezprzewodowej na układach nRF24l01. Sytuacja wygląda tak:
    -Dwie płytki z Atmega8 i układem nRF
    -Zasilanie z zasilacza ATX (12v przez stabilizatory dla Atmeg i 3,3V dla nRF)
    -nRF'y do Atmeg podpięte bezpośrednio.

    Biblioteki dość popularne w internecie:
    http://www.tinkerer.eu/AVRLib/nRF24L01/

    Mój "main" :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wynik jest taki:
    Na Rx:
    Start as rx
    STATUS = 0E
    CONFIG: 0B
    RF_CH: 02
    RF_SETUP: 07
    EN_AA: 01
    EN_RXADDR: 01
    OBSERVE_TX: 00

    Na TX:
    Start as tx
    STATUS = 2E
    CONFIG: 0B
    RF_CH: 02
    RF_SETUP: 07
    EN_AA: 01
    EN_RXADDR: 01
    OBSERVE_TX: 06
    i wchodzi w pętlę.

    Wszystko wygląda świetnie, tylko że nie działa. Atmegi pracują na wewnętrznych oscylatorach 8 MHz. Do zasilania układów nRF przylutowałem kondensatory elektrolityczne (100u i 47u) bo gdzieś wyczytałem, że czasem tego wymagają.

    Analizator logiczny pokazał, że zmieniając tryb prac z RX na TX odpowiednio zmienia się stan lini CE. Przez SPI odczytuje rejestry, więc chyba też jest ok. Program testuje na czterech układach nRF, więc to raczej nie ich wina.
    Kompletnie nie mam pomysłu co może być źle.

    Proszę o pomoc osoby, które pracowały z tym układem.

    [Atmega8][nRF2401l][c] - Brak komunikacji między układami nRF24l01

    Tak wyglądają przebiegi podczas wysyłania.
  • REKLAMA
  • #2 13969972
    olelek
    Poziom 24  
    Dlaczego adresy RX i TX są takie same? Każde urządzenie powinno mieć je niepowtarzalne, i jedno wskazywać na drugie. Poza tym dodam z praktyki, że trzeba dobrze odsprzęgnąć zasilanie. Dodaj jeszcze kondensator stały 100nF do pinów zasilających układ.
  • REKLAMA
  • #3 14008448
    zmorex
    Poziom 12  
    Układ działa. Wprowadziłem dwie zmiany. Po pierwsze układy NRF24L01 zasiliłem przez trzy diody prostownicze podłączone do 5V oraz dodałem dłuższe opóźnienie w funkcji inicjalizacji. Myślę, że ta druga zmiana pomogła.
  • #4 14008880
    piotrva
    VIP Zasłużony dla elektroda
    Dodam, że NRF są idiotyczne w tym względzie, że nie mają programowego resetu - jeśli w jakiś sposób NRF aktywuje SPI podczas programowania (np. wisząca linia CS) to może nałapać śmieci i wtedy albo musisz zapisać WSZYSTKIE rejestry jakie układ ma wartościami oczekiwanymi albo dodać tranzystor na zasilaniu i machnąć nim po starcie programu w procku.
REKLAMA