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

NRF24L01 + ATmega8 - brak komunikacji między nadajnikiem a odbiornikiem

matti0010 09 Sie 2016 19:09 3432 9
  • #1 15858649
    matti0010
    Poziom 11  
    Witajcie,

    próbuję odpalić dwie ATmega8 tak, by obsługiwały moduł radiowy NRF24L01. SPI mi działa, wiec dodałem te moduły. Jedna atmega z modułem ma nadawać dane, druga z modułem je odbiera. Niestety tak się nie dzieje... pisałem to na podstawie tej strony: http://gizmosnack.blogspot.com/2013/04/tutorial-nrf24l01-and-avr.html

    Kod nadajnika:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod odbiornika:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W odbiorniku próbowałem to odebrać zarówno poprzez odczyt statusu jak i za pomocą przerwania... Nic nie działa...
    Ma ktoś jakiś pomysł? Nie jestem pewny czy dobrze ustawiłem rejestr od przerwań. Tak samo czy dobrze używam w przerwaniu i pętli głównej funkcji. Będę bardzo wdzięczny za pomoc
  • #3 15858682
    matti0010
    Poziom 11  
    Dzięki wielkie :) widziałem kiedyś tutaj na elektrodzie jakąś bibliotekę, lecz nie potrafię znowu jej znaleźć. Będę jednak wdzięczny jeżeli ktoś znajdzie problem w tym co stworzyłem, bo mi to spokoju nie da -_- 6 dni się z tym męczę w każdej wolnej chwili.
  • #4 15858685
    excray
    Poziom 41  
    Obejrzyj sobie bibliotekę która podrzuciłem, porównaj ze swoim kodem i będziesz miał odpowiedź co jest źle.
  • #6 15859002
    piotrva
    VIP Zasłużony dla elektroda
    I uważaj - NF24L01 nie resetuje się do ustawień fabrycznych w sposób inny niż podczas odłączenia zasilania.

    Innym słowem mówiąc - raz coś pokręcisz, lub podczas programowania z powodu wiszącego pinu CS moduł coś złapie i potem nie dojdziesz do tego co jest nie tak.

    Rozwiązania są 2 - albo za każdym razem ustawiasz WSZYSTKIE rejestry, albo odłączasz zasilanie modułu za pomocą tranzystora, w celu jego resetu.
  • #7 15859028
    matti0010
    Poziom 11  
    Cenna informacja, w docelowym układzie zastosuję tranzystor. Dziękuję za radę.

    Obecnie mam to zmontowane na stykówce i programuję za pomocą USBASP. Za każdym razem odłączam od ATmegi NRF24L01 i w jego miejsce podpinam programator, po zaprogramowaniu odłączam programator (z USB też wyciągam wiec zasilanie zanika) i podpinam NRF, potem programator wpinam do USB by mieć zasilanie (tymczasowo z UB biorę, docelowo z baterii będzie) więc siłą rzeczy NRF zostaje zresetowany zgodnie z tym co napisałeś.
  • #8 15859507
    JacekCz
    Poziom 42  
    same 'formalności' w kodzie to tak:
    a) delay w przerwaniu
    b) WriteToNrf jest niebezpieczna w wątkach (ma jeden statyczny bufor). W rękach autora mogło chodzić, po zmianie już nie itd...
    c) jeszcze coś moje oczy zobaczyły, ale mi umknęła myśl

    W konsekwencji mogło działać przy zbiegu okoliczności, po zmianie okoliczności już nie itd... nie ma wymogu na zostanie bloggerem, aby pisać bezbłędnie. Z kodem z sieci to ostrożnie (choć i tak ten nie należy do fatalnych), a najgorzej mieszać ideę jednego autora z drugim ...
  • #9 15859512
    matti0010
    Poziom 11  
    zdaję sobie sprawę, że kod znaleziony w internecie nie musi działać, lecz tutaj zdecydowałem się spróbować widząc, że komentarze najgorsze nie były. Na początek chcę tylko to odpalić, potem jak będę miał pewność że wszystko działa to zacznę samemu pisać do tego bibliotekę.

    Pokombinuje, porównam z biblioteką od @excray i się zobaczy.
  • #10 15866924
    matti0010
    Poziom 11  
    Temat zamykam. Przerobiłem mnóstwo kodów (z różnych miejsc, sam też próbowałem pisać) lecz zadziałał dopiero ten od @excray. Szczere ukłony uznania, zmieniłem tylko w odpowiednim miejscu ustawienia pinów (opalałem to na ATmega8) lecz kod ruszył od pierwszego uruchomienia. Piszę o tym gdyby ktoś w przyszłości szukał również biblioteki dość pewnej. Tę mogę szczerze polecić. Jeszcze raz dziękuję.
REKLAMA