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

Połączenie ATtiny 2313 i RFM12 - 0x00 w RFM zwraca zera

Robert Lopatecki 08 Maj 2012 11:51 3640 14
  • #1 10873901
    Robert Lopatecki
    Poziom 11  
    Witam,
    próbuję uruchomić RFM12 na ATtiny 2313 poprzez SPI i
    mam podłączone w następujący sposób:
    ATtiny | RFM12
    --------------
    PB5 | SDO
    PB6 | SDI
    PB7 | SCK
    PB3 | nSEL
    Dodatkowo w RFM12 pin FSK/DATA mam podłączony do +5V przez rezystor 10k.
    Pod SPI w ATtiny 2313 mam dodatkowo podłączony programator ISP.
    I przez zapis komendy 0x00 do RFM chcę odczytać status i zwraca mi on zera.
    Mój kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Gdyby ktoś mi mógł ktoś pomóc byłbym bardzo wdzięczny.
  • #2 10874870
    Drutłajer
    Poziom 10  
    Po mojemu źle obsługujesz USI, już pomijając fakt że do modułu RFM12 powinieneś zapisywać i odbierać dwa bajty (0x0000).
  • #3 10876434
    Robert Lopatecki
    Poziom 11  
    Drutłajer napisał:
    Po mojemu źle obsługujesz USI, już pomijając fakt że do modułu RFM12 powinieneś zapisywać i odbierać dwa bajty (0x0000).


    Faktycznie, poprawiłem. Teraz nadaję i odbieram dwa bajty. I chyba komunikacja jest z RFM12, bo po wysłaniu komendy statusu (0x0000) po podłączeniu zasilania do modułu, zwraca mi wartość 0x4000 (Power-on reset). To chyba dobrze jest?

    Ale teraz jakimi komendami zainicjować moduł RFM12 aby jeden odbierał a drugi nadawał?
  • #4 10876463
    Drutłajer
    Poziom 10  
    Musisz sobie poczytać które komendy za co są odpowiedzialne i które bity załączają odpowiednie układy wewnętrzne.

    Jeżeli masz moduły na 868Mhz to takie dwie inicjalizacje powinny zadziałać:
    Transmiter:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

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


    Polecam ściągnąć sobie kalkulator komend: http://kewlit.com/RFM12B/
  • #5 10876991
    Robert Lopatecki
    Poziom 11  
    Drutłajer napisał:

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




    Dzięki, ale mam kolejne pytania:
    - mam moduły na 433MHz, i skąd wiadomo jaka ma być ta pojemność (podałeś że 12pF)? Czy na ślepo mam wpisać 12pF?
    - jak mam wpisywać dane do transmisji (czy jest jakaś komenda?)?
    - jak mam odczytywać dane które zostały odebrane (czy jest jakaś komenda?)?
  • #6 10877146
    Drutłajer
    Poziom 10  
    Robert Lopatecki napisał:

    Dzięki, ale mam kolejne pytania:
    - mam moduły na 433MHz, i skąd wiadomo jaka ma być ta pojemność (podałeś że 12pF)? Czy na ślepo mam wpisać 12pF?


    Pojemność ta służy do dostrajania rezonatora wbudowanaego w moduł, jej wartość ma wpływ na częstotliwość na padzie CLK, oraz na PLL. Typowa wartość to 12-12.5pF. Jak masz możliwość możesz sobie na oscyloskopie zobaczyć wpływ tej pojemności na częstotliwość zegara.
    Cytat:

    - jak mam wpisywać dane do transmisji (czy jest jakaś komenda?)?
    - jak mam odczytywać dane które zostały odebrane (czy jest jakaś komenda?)?


    Temat był już wałkowany setki razy: https://www.elektroda.pl/rtvforum/topic890223-60.html
  • #7 10906350
    Robert Lopatecki
    Poziom 11  
    Witam ponownie,
    niestety nie udało mi się jeszcze uruchomić modułów RFM12 na częstotliwość 434MHz. Transmisję po SPI mam chyba dobrze, bo jak zmienię moc nadajnika to zmienia się prąd pobierany przez moduł. Natomiast nie wiem czy nadajnik coś nadaje, bo prąd się nie zmienia. Jest taki sam przy tylko załączonym nadajniku i taki sam jak coś transmituję.

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


    Natomiast odbiornik całkowicie milczy. Nie jak sprawdzić czy coś do niego przychodzi.

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



    Dodam jeszcze że dolutowałem już antenki, bo myślałem że dlatego nie działa.
    Gdyby ktoś mógł mi pomóc w tym temacie.
  • #8 10914768
    Jacek Rutkowski
    Poziom 28  
    W jakiej odległości masz nadajnik od odbiornika? Ja mając moduły na 868MHz walczyłem z nimi 2 tygodnie a po wyniesieniu nadajnika do pokoju obok przez 2 ściany z pustaka
    wszystko ruszyło z kopyta. Za silny sygnał zatyka odbiornik.
  • #9 10915139
    adammruk
    Poziom 16  
    Pokaż cały schemat. Kondensatory filtrujące przy zasilaniu są?
  • #10 10951811
    Robert Lopatecki
    Poziom 11  
    Jacek Rutkowski napisał:
    W jakiej odległości masz nadajnik od odbiornika? Ja mając moduły na 868MHz walczyłem z nimi 2 tygodnie a po wyniesieniu nadajnika do pokoju obok przez 2 ściany z pustaka
    wszystko ruszyło z kopyta. Za silny sygnał zatyka odbiornik.


    Zmniejszyłem sygnał nadajnika do minimum (wpisałem 0x9857) i dalej nic.

    Dodano po 7 [minuty]:

    adammruk napisał:
    Pokaż cały schemat. Kondensatory filtrujące przy zasilaniu są?


    Połączenie ATtiny 2313 i RFM12 - 0x00 w RFM zwraca zera

    Dodam tylko że moduły od ATTINY mam na kilku centrymetrowych przewodach.
  • #12 10952748
    adammruk
    Poziom 16  
    Na przewodach? Rozumiem więc że praktycznie cały układ masz w pająku.. A to źle;p
    Tak jak napisał kolega wyżej, podstawy podłączenie procka: przede wszystkim kondensatory przy zasilaniu, przy procku, i przy module radiowym, rezystor przy resecie procesora. Poza tym podłączony programator może też mieszać w transmisji.
  • #14 10953499
    adammruk
    Poziom 16  
    Robert Lopatecki napisał:
    Nie rysowałem wszystkiego na schemacie, bo są to rzeczy oczywiste.


    Niestety nie dla wszystkich;]
    Pewnie czytałeś ten temat: https://www.elektroda.pl/rtvforum/topic890223-510.html
    Wrzuciłem tam w jednej paczce listingi i schematy prostej płytki testowej, 100% sprawne i potwierdzone przez kilku użytkowników, tyle że na RFM12B, 868MHz, ale dużej różnicy być nie powinno. Możesz tam porównać i zobaczyć, może jakiś błąd się znajdzie. Jeśli masz też możliwość, to lepiej umieścić RFM12 jak najbliżej procka, i bez łączenia długimi przewodami (jak dla mnie kilka cm to już dość sporo).
  • #15 14030009
    Robert Lopatecki
    Poziom 11  
    Problem rozwiązałem kupując inne modułu.
REKLAMA