Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 sty 2025, o 00:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 20 lis 2012, o 15:02 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

Próbuję zrobić urządzenie, które musi odbierać i nadawać, na razie do kodu z lekcji o tym module, do nadajnika wkleiłem kod odbiornika też, żeby zobaczyć czy działa no i okazało się, że nie działa, wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wysyła jedną ramkę a potem się wiesza, trzeba jakoś "ręcznie" dopisać mu rozkaz przełączenia? Bo widziałem, że odpowiednio w funkcjach są rozkazy wysyłania odpowiednich kodów:
rf12_trans(0x8238); // TX on
rf12_trans(0x82C8); // RX on
a nie chce działać tak jak mi się wydawało, że powinno, więc czy ktoś ma pomysł jak to zrobić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 15:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Nic się nie wiesza, można w jednym procku nadawać i odbierać ;)

Zajrzyj może sobie do środka funkcji - przecież widać, jak się kończą i że następuje automatyczne przełączanie stanów na nadawania lub odbiór...

Podejrzewam, że u ciebie kłopot jest w tym, że wymyślasz zły sposób na testowanie tego i tu leży pies pogrzebany. Opisz więc swoje założenia - co potrzebujesz zrobić czy jak chcesz to testować. Bo jak uważasz że można takiego "maślaka" puścić - tzn, żeby wciąż coś nadawał i wciąż coś odbierał w kółko macieju - to jak mówię - przemyśl czasy i jakąś maszynę stanów zrób do tego. Może reakcje na jakieś klawisze chociaż jeśli trudno ci taką maszynę stanów zbudować ?

Poza tym zanim zrobisz nadawanie naraz w dwie strony to może przećwicz najpierw dobrze jednostronne i daj znać czy ci działa w każdą stronę ? To potem pójdzie ci łatwiej.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 16:34 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

Wiec projekt wygląda tak, na razie nadajnik ciągle nadaje, w odbiorniku jest włączony timer, co 250ms zgłasza przerwanie i wtedy sprawdza czy nadeszły nowe dane, to działa, ale właśnie przez jakiś czas, po minucie odbiornik przestaje odbierać, trzeba zresetować kontroler i wtedy znów działa, tego też nie rozumiem na razie. Docelowo ma to wyglądać tak, że odbiornik, stacja bazowa cały czas jest na odbiorze, a co jakiś czas, powiedzmy 8s wysyła rozkaz pomiaru do czujnika, czujnik, którym jest nadajnik, odbiera rozkaz, wykonuje pomiar i wysyła no i to niestety nie działa, też nie wiem dlaczego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 17:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Lukas napisał(a):
Wiec projekt wygląda tak, na razie nadajnik ciągle nadaje, w odbiorniku jest włączony timer, co 250ms zgłasza przerwanie i wtedy sprawdza czy nadeszły nowe dane, to działa, ale właśnie przez jakiś czas, po minucie odbiornik przestaje odbierać, trzeba zresetować kontroler i wtedy znów działa,


No ale na to, to ja nie jestem w stanie nic poradzić :( .... nie wiem musiałbyś przedstawić całe swoje kody nadajnika i odbiornika - ale nie wiem kto będzie miał tyle czasu aby to analizować. No chyba że rzucą się w oczy jakieś oczywiste błędy. Tego typu aplikacje nie jest tak łatwo ot hop siup diagnozować. Powiedz co ty do tej pory zrobiłeś ? co zbadałeś ? jak badałeś ? dzieliłeś kod na mniejsze kawałki ? używałeś debugera jedno-diodowego ? doszedłeś mniej więcej miejsca gdzie się zawiesza ? czy w przerwaniu ? czy w pętli głównej ?

Przecież bez takich czynności to nikt nie będzie w stanie pomóc ... cokolwiek musisz najpierw zrobić sam - a nie napisać - że napisałeś kod i że "nie działa" co może być powodem :( ?


Lukas napisał(a):
Docelowo ma to wyglądać tak, że odbiornik, stacja bazowa cały czas jest na odbiorze, a co jakiś czas, powiedzmy 8s wysyła rozkaz pomiaru do czujnika, czujnik, którym jest nadajnik, odbiera rozkaz, wykonuje pomiar i wysyła no i to niestety nie działa, też nie wiem dlaczego.


No widzisz i taką koncepcję rozumiem, to jest działanie podobne jak w RS485, gdzie jest jeden Master i kilka układów Slave z komunikacją asynchroniczną. Tylko właśnie - czy np działałeś już coś na zwykłym kablu w RS485 ? masz jakiekolwiek doświadczenie w tego typu komunikacji ? Bo piszesz, że też nie działa ? ale panie kolego - no co można poradzić nie widząc szczegółów , kodów, schematu itp ????

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 18:20 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

Chodziło mi o to, że odbiornik przestaje odbierać dane, ale układ wciąż działa. Jakby cały układ się wieszał to wiedziałbym, że mój kod go zawiesza. A działa wszystko inne, z innymi układami się komunikuje, zapewne z RFM12 też, tylko nie odbiera danych, to się dzieje czasami po minucie, czasami po paru sekundach. RFM12 jest na przerwaniu, mam włączone przerwanie z timera, który co 250ms sprawdza czy są dane do odbioru, mam włączone przerwanie od PCF8583, potem kolejny timer do jeszcze czegoś innego. Wszystko działa tylko RFM12 się wiesza, a przynajmniej nie odbiera. Głowna pętla programu to oczekiwanie na naciśnięcie klawisza, żeby wejść do menu. Na razie obsługiwałem tylko RS232 i zasadę komunikacji znam, problem mam tylko w tym, że co 250ms sprawdzam czy otrzymałem dane, a co 8s wysyłam rozkaz pomiaru to RFM12 mi przestaje odpowiadać i to tylko ten jeden układ mi się buntuje, nic innego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 19:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Lukas napisał(a):
... problem mam tylko w tym, że co 250ms sprawdzam czy otrzymałem dane, a co 8s wysyłam rozkaz pomiaru to RFM12 mi przestaje odpowiadać i to tylko ten jeden układ mi się buntuje, nic innego.


No ok rozumiem.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lis 2012, o 20:57 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

Problem z zawieszaniem rozwiązany, może nie tak jak być powinno, ale nie mam innego pomysłu. Otóż po określonym czasie, jeżeli nie odbierze RFM12 nie odbierze danych wysyłam mu komendę 0xFE00, czyli software reset i na nowo inicjalizuję. Jeżeli dalej nie będę potrafił zmieniać mu trybów pomiędzy RX a TX to zrobię to w ten sam sposób, najpierw zresetuję, zainicjalizuję, a potem wykonam rozkaz wysłania bądź odebrania. To nie jest żadna krytyczna aplikacja, więc mogę sobie na to pozwolić, no chyba, że ktoś zna rozwiązanie tego problemu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2013, o 18:31 
Offline
Użytkownik

Dołączył(a): 23 sty 2012
Posty: 27
Pomógł: 0

czy udało się komuś uruchomić komunikację w 2 strony na RMF12 na podstawie bibliotek z "zielonej" książki.
teraz to testuję i komunikacja w 1 stronę działa bezproblemowo - natomiast jak odbiornik nada zwrotną daną to nadajnik(po prawidłowym odbiorze) już przestaje nadawać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2013, o 19:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Mnie się udało i to niejednokrotnie ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2013, o 21:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Hejka, mam sobie taki kod:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To co chcę osiągnąć to:
-włączam zasilanie, przechodzę przez inicjalizację,
- wpadam w pętle for, przez pewien nasłuchuje czy coś lata w eterze
- wychodzę z for'a, wyłączam co się da (RFM,uC), czekam chwilę, reset od WDT i cykl na nowo

No i niestety po wykonaniu resetu od WDT, już nie odbieram żadnych danych(sam program nadal pracuje - okresowe resety i info o tym na terminal). Jeśli zamiast pętli while(1) i resetu wykonam coś takiego:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


to instrukcja rf12_allstop(), lub po prostu:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

powoduje, że układ już nie wstaje do prawidłowej pracy po ponownej inicjalizacji

Kluczowa dla mnie jest ta instrukcja - rf12_allstop(); Powoduje znaczną redukcję poboru prądu.
Ostro zamieszałem wyżej :D , ale liczę że coś mi podpowiecie, bo ugrzązłem w miejscu i nie jestem w stanie tego rozgryźć

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 mar 2013, o 21:31 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

jeśli chodzi o mnie to pomogę dopiero jak będę w stanie się za to zabrać , podłączyć i posprawdzać ponownie a nie mam tego teraz na warsztacie - z głowy zaś nie pamiętam.... może w międzyczasie ktoś inny męczy te moduliki i coś podpowie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2013, o 12:38 
Offline
Nowy

Dołączył(a): 29 sie 2013
Posty: 2
Pomógł: 0

Mam dosyć irytujący problem z układem MRF49XA. Z racji tego że jest on niemal identyczny do RFM12B(inna nazwa wyprowadzen i rejestrów ale zasada działania identyczna) wiec postanowiłem post umieścić w tym temacie. Otóż gdy jest on włączony na odbiornik to nie wiem czemu gdy oglądam na oscyloskopie układ generuje przerwanie w sposób losowy. Przypadkowe przerwanie jest generowane trochę rzadziej gdy ustawie mniejszy bit rate do ok kilku kbit/s i mniejsza szerokość pasma. Gdy mam ustawione na 115.2 kbit to przerwanie jest praktycznie nonstopem generowane przez układ. W programie do obsługi przerwania odczytuje rejestr RXFIFOREG powodując ustawienie linii IRQ na stan wysoki po czym po kilku ms następuje znów przypadkowe przerwanie. Problem praktycznie nie występuje gdy mam włączony nadajnik tzn gdy odbiornik wykrywa falę nośną.

Miał ktoś podobny problem z tym układem i wie jak go rozwiązać aby układ generował przerwanie tylko i wyłącznie gdy odbierze dane od nadajnika??

Tzn udało mi się to w pewny sposób ominąć tzn. dodatkowo w uC włączałem TIMER który odmierzał określony czas po przekroczeniu którego następowało zerowanie ramki z przypadkowymi zawartościami. Gdy wysyłałem dane to TIMER praktycznie nigdy się nie przepełniał i tym samym mogłem zgromadzić ramkę w całości. Transreceivery działały tylko w jedną stronę tzn. jeden był nadajnikiem a drugi odbiornikiem.

Teraz chciałbym zrealizować transmisję w obie strony i właśnie chciałbym wyeliminować ten problem.


zamieszczam konfigurację nadajnika i odbiornika z której korzystałem:

nadajnik:


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.







odbiornik:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


[ ok a słyszał kolega o umieszczaniu kodu źródłowego w znacznikach [ syntax = c ] ? - proszę na przyszłość o tym pamiętać ok? - mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2013, o 22:16 
Offline
Nowy

Dołączył(a): 29 sie 2013
Posty: 2
Pomógł: 0

Nit nie ma pomysłu na rozwiązanie powyższego problemu???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 14:03 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Czy być może już ktoś doszedł jak zrobić dwustronną komunikację na modułach RFM12 ponieważ mam ten sam problem, i nie wiem jak go rozwiązać w moim przypadku robię zdalne sterowanie do pewnego urządzenia i komunikacja jednostronna nad-odb i odwrotnie działą bez problemu ale jak chcę mieć dwu stroną to tak samo mogę wysłać tylko jedną ramkę i póżniej już nie odbieram żadnych danych.
Być może ktoś podpowie jak zrobić jakiś mechanizm przełączania pomiędzy trybami np przez 20ms działa komunikacja w jedną stronę a przez następne 20 ms odwrotnie. Teraz pytanie do Mirka któremu działa taka komunikacja czy mój tok myślenia jest dobry czy trzeba jakoś inaczej rozwiązać przełączanie trybów żeby to przyzwoicie działało np. po stracie zasięgu i po powrocie do niego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 22:48 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Pomoże ktoś,ponieważ dotychczasowe próby obslugi przełączania trybów za pomocą timerów dają wymierne efekty



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 22:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

luki napisał(a):
Teraz pytanie do Mirka któremu działa taka komunikacja czy mój tok myślenia jest dobry czy trzeba jakoś inaczej rozwiązać przełączanie trybów żeby to przyzwoicie działało np. po stracie zasięgu i po powrocie do niego


działało działało ale no szczegółów po dwóch latach od testowania kodu to ja nie pamiętam i czy miałem akurat takie czasy a nie inne

wiesz - to już nie są przykłady z czystym miganiem diodą LED i nie da się tak wprost podpowiedzieć - zrób TO i SIAMTO i nagle BACH masz to o co ci chodzi .... no trzeba troszkę pokombinować - tak na sucho ciężko coś wymyśleć

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 23:15 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

A powiedz czy masz jakieś przerwania włączone?? Ja już nie pamiętam tego, ale coś mi się wydaje, że gdy ja to sprawdzałem to komunikacja dwustronna działa - jak żadne przerwanie nie wtrąci się w czasie transmisji pomiędzy RFM a uC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 23:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Lukas napisał(a):
A powiedz czy masz jakieś przerwania włączone??


No ja swoje a ty swoje ;) pytasz mnie jakbym razem z tobą miał rozłożony układ z RFM'ami na stole i testował

poza tym nie wiem co mają inne przerwania przeszkadzać - sorki ale takie rozważania super teoretyczne że tobie coś tam kiedyś nie działało - co mogą dać ? do czego dojdziemy ... Nawet jeśli ja bym napisał że mi działało ? Kod a szczególnie w przerwaniach to można tak "napisać" że wszystko rozwali w całym programie a nie tylko komunikację RFM12 ... ale można też napisać go dobrze ...

przerwania to nie jakaś ciemna energia która źle oddziałuje jakimś promieniowaniem - sorki za taki skrót myślowy ale no tak pytasz ... jakby tak właśnie było

Myślisz że tak bez kodu i analizy tego co się robi to można tak sobie pogdybać ? tzn tak no można tylko pogdybać ale nie dojść do sedna sprawy

kod panie kochany - jakiś testowy kod sobie napisz - ale prosty - i wtedy go pokaż - to będzie można coś myśleć

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lis 2013, o 23:35 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

mirekk36 napisał(a):
Lukas napisał(a):
A powiedz czy masz jakieś przerwania włączone??


No ja swoje a ty swoje ;) pytasz mnie jakbym razem z tobą miał rozłożony układ z RFM'ami na stole i testował

poza tym nie wiem co mają inne przerwania przeszkadzać - sorki ale takie rozważania super teoretyczne że tobie coś tam kiedyś nie działało - co mogą dać ? do czego dojdziemy ... Nawet jeśli ja bym napisał że mi działało ? Kod a szczególnie w przerwaniach to można tak "napisać" że wszystko rozwali w całym programie a nie tylko komunikację RFM12 ... ale można też napisać go dobrze ...

przerwania to nie jakaś ciemna energia która źle oddziałuje jakimś promieniowaniem - sorki za taki skrót myślowy ale no tak pytasz ... jakby tak właśnie było

Myślisz że tak bez kodu i analizy tego co się robi to można tak sobie pogdybać ? tzn tak no można tylko pogdybać ale nie dojść do sedna sprawy

kod panie kochany - jakiś testowy kod sobie napisz - ale prosty - i wtedy go pokaż - to będzie można coś myśleć


To nie było do Ciebie ;) z tego co widzę to Ty nie masz problemu tylko ktoś inny ;) poza tym skąd wiesz, jak wygląda kod od osoby która ma ten problem. Ja też nie widzę tego kodu to też zapytałem, żeby w razie czego sprawdził jak przerwania u niego działają ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 00:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

no tak :lol: ... luki, lukas - i już mi się w oczach pomieszało

przepraszam więc za zamieszanie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 06:55 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Wieczorkiem postaram sie wrzucic kod jaki mam teraz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 17:30 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

A więc tak jak już pisałem komunikacja jednostronna od nadajnika do obiornika działa, wtedy mój w pętli głównej wygląda tak:
Nadajnik wysyła dane przez 200 ms a przez następne 200 ms nic nie robi (w reszcie pętli sprawdzam tylko stan przycisków funkcją super debounce i migam diodą za pomocą drugiego timera)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W odbiorniku natomiast jest bliżniaczo wyglądająca obsługa timera:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I Przedstawiony wyżej sposób działa bez problemu ponieważ jest to tak naprawdę kopia kodu z książki teraz jak w nadajniku zakomentuję funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
a odkomentuję fragment odpowiedzialny za odbiór i w odbiorniku zrobi tak samo to wszystko też ładnie działa jak poprzednim przypadku tylko w drugą stronę.
Mam nadzieje że zrozumiale opisałem mój tok testowania.

Ale teraz jak w nad i odb odkomentuję obydwie funkcję to już nie jest tak wesoło teoretycznie przez pierwsze 200ms powinna być komunikacja w jedną stronę a przez następne 200ms w drugą. Na tyle teoria w praktyce prawidłowo wykonywany jest tylko jeden przesył od nadajnika (nadaje czyli zostaje wywołana ta funkcja):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Potem w odbiorniku zostaje poprawnie odebrana ale już wywołanie funkcji send w drugą stronę blokuje całą komunikację.

Może trochę to zagmatwałem ale chciałem wszystko dobrze opisać.
Czekam na jakieś sugestie co do zmian w kodzie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 19:50 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Ten fragment kodu działa przez 200ms:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W tym czasie układ będzie ciągle nadawał ramka za ramką. Nie lepiej raz na jakiś czas (np. sekundę) wysłać jedną ramkę przez moduł master i od razu przejść na odbiór i jak przyjdzie odpowiedź (lub nie) myśleć co dalej. Układ slave powinien być ciągle w fazie odbioru i jak przyjdzie ramka to odsyłać odpowiedź.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 20:38 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

W moim przypadku zależy mi na jak najczęstszym wysyłaniem ramek ponieważ robię zdalne sterowanie do robota i chcę mieć jak najmniejsze opóźnienie pomiędzy wciśnięciem przycisku za załączeniem np silnika. Natomiast w drugą stronę ramki mogą już być wysyłane np co kilka sekund ponieważ chce mieć w nadajniku potwierdzenie o niskim stania bateri w robocie(gdzie zamontowany jest odbiornik).
Niestety ale gdy chciałem wdrożyć twój sposób zrobiłem tak odbiornik jest cały czas na odbiorze. Z nadajnika wysyłam jedną ramkę to dochodzi ona(mam potwierdzenie na lcd) do odbiornika potem przełączam nadajnik na odbiór czekam 1s potem kolejny raz chcę wysłać tą ramkę i w tym momencie transmisja przestaje już działać.

Sposób Krausera jest identyczny jak w przypadku przykładów z książki nt RFM70 tam jest zrealizowana komunikacja dwustronna i działa bez problemu ale jak to teraz przełożyć na RFM12

Nie wiem już jak to można zrobić chyba będę musiał zrezygnować z transmisji zwrotnej ,albo poczekać jak mirek przypomni sobie jak on testował transmisję dwustronną.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 22:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

ale Krauser bardzo dobrze ci podpowiada - tylko posłuchaj, poczytaj i przemyśl ... bo chyba nie do końca zrozumiałeś to co słusznie zauważył i podpowiada ci kolega.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 22:58 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Czyli podsumowując w moim przypadku masterem jest nadajnik w którym w głównej petli while wstawiam obsługę odbioru a podczas przepełnienia timera wysyłam ramkę następnie w odbiorniku czyli moim slavie tak samo w głównej petli mam odbiór i po poprawnym odbiorze odsyłam odp.
Dobrze to teraz zrozumiałem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2013, o 23:08 
Offline
Nowy

Dołączył(a): 14 wrz 2012
Posty: 23
Pomógł: 1

moze zrob tak, zeby reakcja byla natychmiastowa ale zarazem nie wyslal twoj nadajnik ciagle tego samego, to niech wysyla tylko zmiany joya czy tam przyciskow, jak sie zmieni z 0 na 1 to cos bedzie dzialalo dopoki nie otrzyma wiadomosci ze stan sie zmienil z 1 na 1 np.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2013, o 15:45 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Wszystko ładnie ale jak zrobiłem tak jak podpowiada krausers czyli w głównej pętli mam cały czas odbiór i co jakiś czas nadaje ramkę i czekam na odpowiedz zwrotną to cała komunikacja przestaje działać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2013, o 19:10 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Nie mam takiego radyjka, ale wypróbuj taki kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2013, o 19:14 
Offline
Użytkownik

Dołączył(a): 20 mar 2012
Posty: 159
Pomógł: 6

Jutro przetestuje twój kod i dam znać efektów ponieważ dzisiaj zostawiłem robota w szkole.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Majestic-12 [Bot] i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO