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



Teraz jest 18 mar 2026, o 17:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 39 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 9 kwi 2013, o 22:33 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Witam,

Po lekturze zielonej książki "Język C Pasja programowania mikrokontrolerów 8-bitowych" postanowiłem zbudować prototyp wykorzystujący przykłady z książki dot. nadawania i odbierania w kodzie manchester.

Mój zestaw jest jednak lekko zmodyfikowany:
Nadajnik
RTFQ1 433 połączony z ATTiny85 zasilany z 2 paluszkow AA czyli ok. 3 V

Odbiornik:
RRFQ1 433 + Atmega8 z kwarcem 8 MHz

Z poglądu osyloskopem wygląda, że tor radiowy nadajnik-odbiornik chodzi ok (jest preambuła, i ramki danych, szerokości impulsów w granicach tolerancji) na wyjściu odbiornika.
Wyzwalanie zboczem biorę z klucza zasilania, włączającego nadajnik tuż przed nadaniem ramki.

Problem polega na tym, że Atmega8 nie chce odebrać poprawnie ramki z danymi.

Patrzyłem na rejestry timerów oraz nazwy przerwań Atmega16 oraz Atmega8 użyte w kodzie w specyfikacjach obu procesorów, i wygląda że są takie same.

Oczywiście pozmieniałem przypisania pinów do wyświetlacza LCD, wyrzuciłem części dot. użycia portu A (podświetlanie wyświetlacza).
Nóżkę ICP która w Atmega16 jest PD6 przypisałem do PB0 (odpowiednika w atmega8).
po debugowaniu przez świecenie diody sytuacja wygląda następująco:
1. przerwanie od ICP się wywołuje
2. występują zarówno zbocza narastające jak i opadające
3. Nigdy nie przechodzi warunku "if( nbajt==bajt ) - ostatnia linijka w przytoczonym fragmencie kodu przerwania odbiornika":

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


Faktem jest, że gdy nie jest nadawana nośna to w "eterze" widać na wyjściu odbiornika niezłą sieczkę.
Zastanawiam się czy to czasem nie jest powodem złego działania wywołanego zbyt częstymi przerwaniami.
Gorąca prośba do autora o poradę.

Moje pytania:
1. Czy komuś udało się uruchomić ten kod na atmega8 ?
2. Czy coś przeoczyłem i trzeba zmieniać nazwy rejestrów lub nazwy bitów w kodzie przy portowaniu na Atmega8 ?
3. Jak skutecznie zdebugować i rozwiązać opisany problem ?
Przy szekokości HALF_BIT = 150 mikrosekund trochę mało czasu na wysłanie uartem lub na wyświetlacz czegokolwiek, szczególnie że sieczka w eterze spora.
4. Może ktoś podrzuci jakiś pomysł na SQUELCH odbiornika (jest tam odpowiednia nóżka) celem minimalizacji sieczki ?
Myślałem o przerzutniku Schmitta na wzmacniaczu operacyjnym, monitorując wyjście RRSI.
Z obserwacji wynika jednak dość wąska histereza ok. 1,6 V (OFF) - 1,8(ON) V.

Wszelkie sugestie mile widziane.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 17:30 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

wczoraj odkryłem potencjalną przyczynę: spore zakłócenia napiecia zasilania (prototyp zasilany z gniazda Usb kompa.
Amplituda zakłóceń: 250-300 mV !

Prawdopodobnie jest to przyczyną sieczki na wyjsciu odbiornika,o której pisałem wcześniej.
Dziś zrobię uczciwe zasilanie na stabliliztorze lm350 z filtracją zakłóceń przez odpowiednie kondensatory i zobaczymy.

W interncie znlazłem,że tętnienia dla RRFQ1 nie powinny przekraczać 10 mV.

Napiszcie,czy mieliście podobne doświadczenia i czy pomogło ?

pablo



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 18:01 
Offline
Moderator
Avatar użytkownika

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

Ja akurat odpalałem wszystkie przykłady z książki jeśli chodzi o zasilanie 5V z USB ale jeśli chodzi o napięcie 3,3V to już z przetworniczki.

Jednak wcale bym się nie zdziwił że napięcie z USB może mieć u ciebie aż taki zły wpływ - bo sam widzisz jakie są zakłócenia. To już nawet nie tętnienia a po prostu burza na 5V z USB

_________________
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: 11 kwi 2013, o 20:15 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Witam Mirku,
Dziękuję za odpowiedź.

Okazało się, że wcześniej przez przypadek przełączyłem dzielnik sondy x10 na x1 (a na oscyloskopie było wybrane x10) i stąd ten niewiarygodny pomiar.

Amplituda tętnień to ok. 40 mV z USB.
Nie działa.

Więc próbuję zejść poniżej 10 mV, choć nie wiem czy pomoże ...

Czy komuś udało się to uruchomić na Atmega8 zmieniając jedynie przypisania lcd i ICP na PB0 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 kwi 2013, o 22:31 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Z tętnieniem zasilania zszedłem poniżej 20 mV(LM7805), więc wg mnie nie powinno mieć wpływu.

Co więcej przekompilowałem kod odbiornika na ATTiny2313 na "lepszą" płytkę ewaluacyjną.
Dokładnie to samo.

Gdy mój nadajnik nadaje, na wyjściu z odbiornika obserwuję preambułę i ramki danych.

Jak nie nadaje, na wyjściu RRFQ1 "sieczka", dioda sygnalizująca FRAME__OK miga jak szalona.

Nie przechodzi warunku:
// sprawdzamy czy bajt danych jest = drugiemu po zanegowaniu
if( nbajt==bajt ) {

Mam jeszcze pytanie: Czy możnaby tak dostosować kod, by móc debugowac na RS232 ?

Na tej płytce z Atmega8 odpaliłem kod z rozdziału o transmisji podczerwieni i hula wysyłając również po RS.

Do jakiej wartości można wydłużyć czas trwania półbitu, by odbiornik nie tracił synchronizacji ?
Wydłużyłem do 600 us i jeszcze działa.

Ludzie, odezwijcie się, czy komuś oprócz autora ten kod zadziałał na czymkolwiek ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 06:24 
Offline
Moderator
Avatar użytkownika

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

pablo napisał(a):
Ludzie, odezwijcie się, czy komuś oprócz autora ten kod zadziałał na czymkolwiek ?


tzn? sugerujesz, że co ?

_________________
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: 12 kwi 2013, o 06:53 

Pomógł: 0

Mnie na 2xATB 2xRFM12B działało od strzała, tj. zapomniałem sobie zmienić opcji bo moduły miałem 433Mhz a domyślnie było bodajże 866, ale po tej zmianie wszystko chodziło stabilnie.

PS. Odbiór Tu ludzie, Koniec Odbioru.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 08:35 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Witam,
Dziękuje za odpowiedź.
Nic nie sugeruję. Chce znaleźć punkt zaczepienia: czy to kwestia hardware'u (AVR lub odbiornik RRFQ1) czy nadajnika , czy może kombinacji odpalania kodu Atmega16 na innych AVR.
Po prostu po swojej stronie zaczynają mi sie kończyć pomysły.
Dziś jeszcze zrobię analizę bit po bicie co znajduje sie w pierwszych odebranych 3 bajtach.

Z góry dziękuję za wszelkie sugestie i pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 10:56 
Offline
Moderator
Avatar użytkownika

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

po pierwsze z tego co widzę to masz dostęp do oscyla i nawet sprawdziłeś sobie że masz już przesyłane dane na drugą stronę. Więc to już sporo ... ale niestety ja nie na darmo opisałem konkretne przykłady par nad/odb .... i nie na darmo bardzo wyraźnie pisałem że do każdej z nich musiałem podejść indywidualnie .... więc tu także tym bardziej że zmieniłeś nie tylko komplet nad/odb ale także procki - więc miejsc na błąd masz sporo więcej.

poza tym czy ciężko ci np sprawdzić co masz dokładnie czyli jakie wartości przybierają zmienne

nbajt i bajt w odbiorniku ? i porównać z tym co masz w nadajniku ? żeby zobaczyć gdzie leży różnica ? może to ułatwi już dalsze kombinacje

_________________
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: 12 kwi 2013, o 14:07 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Już to próbowałem robić, ale zbyt wiele ramek śmigało i układ prawdopodobnie nie nadążał z wyświetlaniem (wyświetlał z opóznieniem zera), nawet jak wyświetlałem poza przerwaniem ze zmiennej volatile.
Dlatego wczesniej zapytałem, jak to sprytnie przechwytywac i np. wysłać do RS-232 ?
Dlatego również pytałem na ile można zwolnic prędkośc transmisji (wydłużyć ramkę) ?
Myślę, że zrobie tak, żeby po każdej ramce się zatrzymał (zablokuje przerwania) i by mógł spokojnie wyświetlic lub przesłac wynik szeregowo.

Dzięki wielkie za dotychczasową pomoc.

Dam wkrótce znac o porażce lub sukcesie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 14:10 
Offline
Moderator
Avatar użytkownika

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

ale w czym problem zrobić pułapkę programową

tuż przed warunkiem if( nbajt == bajt) dać

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


w czym kłopot ? czy to jest trudne ?

_________________
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: 12 kwi 2013, o 15:11 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Ok, jasne.
Tylko operacje LCD zawierają dealy'e, jest ich 4 sztuki i trochę trwają.

W momencie, gdy szerokośc impulsu jest krótka (150 mikrosekund) może nadejść kolejne przerwanie i nici z wyświetlenia.
Dlatego trzebaby pewnie przed tym fragmentem zablokowac przerwania (cli() ).

Czy mam rację ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 17:03 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Przy wydłużonej ramce HALF_BIT = 600
nbajt = 0
bajt = 255
tbit = 127

Czas na rozpisanie oscylogramu "na nuty" i porównanie bit po bicie.



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

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

nbajt 0 ??? a bajt 255 ??? a co jest nadawane ?

porównaj sobie na oscylu ramkę nadawaną i odbieraną

_________________
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: 12 kwi 2013, o 19:26 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Sprawdze jak wroce do domu ale jak dla mnie to IrData binarnie 011111111111111111111111 czyli tak jakby czytał ramki man_sync
Nadaje 9, 1



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2013, o 22:57 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Witam,
Jest mały sukces, choć na razie nie potrafię go uzasadnić ;)

Zaczałem kombinowac z długością preambuły i długością bitu.
Ponadto spowrotem wróciłem do płytki z Atmega8, gdyż na tej Attiny2313 pamięć była na styk (czasem brakowało, i musiałem kombinowac np. zmiejszając pojemnośc buforów)

Aktualnie
#define HALF_BIT 500
..
#define TOLERANCE 75
...
#define DEFAULT_SYNC_LENGTH 32
...

Na początku było HALF_BIT 600 i DEFAULT_SYNC_LENGTH 64. Wtedy co ciekawe tbit było 0.

Po przestawieniu na 500 (chciałem zrzucić oscylogramy na forum i dać działkę 500 mV by łatwiej się interpretowało) odbiornik zaczął dekodowac ramki !!!
Co prawda jeszcze nie każdą (podejrzewam zakłócenia), ale wywołuje funkcję moja_obsluga_binarna i pokazuje prawidłowe wartości.

Tak więc "for the benefit of the other users" z tymi parametrami zadziałało na opisanej na początku konfiguracji.

Jeszcze będę próbował kręcić parametrami, ale wygląda, że sporo od nich zależy.
Pewnie też zależy od tego jaka sieczka jest aktualnie w eterze i jak dużo sąsiadów korzysta ze stacji pogody i innych pilotów na 433.
Potwierdza to tylko, co już Mirek napisał, że do każdej konfiguracji t takich zastosowaniach trzeba podchodzić indywidualnie.

Pozdrawiam serdecznie i dziękuję za wszystkie hinty i pomoc w tej sprawie.

Pablo



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 kwi 2013, o 06:56 
Offline
Moderator
Avatar użytkownika

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

pablo - a pamiętasz może czy nie? z GeenBooka, o tym co pisałem np od ostatniego akapitu na str. 88 ?

Więc jeszcze raz zwrócę uwagę że ta sieczka o której mówisz to właśnie coś w rodzaju białego szumu z układów ARW gdy brak nośnej w okolicy i wzmacniane są wręcz szumy tranzystorów wejściowych. To jedno.

A drugie to zwracałem uwagę na pewne parametry pracy przeróżnych par, które mogą mieć różny zakres przenoszonej częstotliwości, którą modulujemy nośną. I właśnie najlepsze efekty uzyskujemy gdy nasza częstotliwość sygnału (kodu manchester) jest mniej więcej w jej środku, dlatego trzeba dobierać ten czas półbitu i nie może on być ani za długi ani za krótki - o czym sam chyba się na końcu przekonałeś...

No i najważniejsze - czas reakcji układów ARW czyli kiedy w odbiorniku pojawi się stabilny sygnał zmodulowany czyli taka sama częstotliwość sygnału modulującego. Tu ważna jest preambuła i jej długość. Czasem przy gorszej że tak powiem jakości takich par nad/odb ta preambuła musi być znacznie dłuższa niż w tych lepszych. Tyle że lepsze czy gorsze w tym przypadku to pojęcie względne bo np opisywane dalej transcievery typu MID mogą mieć niby preambułę króciutką (kilka bitów) ... ale zasada ich działania jest taka, że po włączeniu zasilania od razu wciąż nadawana jest nośna, co powoduje, że nie musimy długo dostrajać odbiornika preambułą.

Jak widać temat jest już ciut bardziej skomplikowany niż miganie diodami LED i wymaga po prostu spokoju w podejściu i troszkę własnych testów.

Nie mniej jednak - gdy już kod ruszy - to można do końca poczuć o co w tym wszystkim chodzi i już świadomie regulować sobie różne parametry co przełoży się także na zasięg przy okazji ;)

_________________
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: 13 kwi 2013, o 10:50 
Offline
Nowy

Dołączył(a): 09 kwi 2013
Posty: 14
Lokalizacja: Warszawa
Pomógł: 0

Jeszcze raz dzięki Mirku za dodatkowe wyjaśnienia.
Oczywiście tez rozdział z greenbooka czytałem ze 3 razy i rozumiem źròdło sieczki.
Nie byłem tylko pwwien, czy jej "gęstość" miałeś w twoich testach podobną jak u mnie, gdzie to wygląda masakrycznie.

Jednak pomimo wszystkich problemów cieszę sie z tej solidnej lekcji, gdzie sporo się sam nauczyłem a i pewnie innym się przyda.

Po prostu trzeba z pełną świadomością i pokorą podchodzić do tych układów.

Chyba jednak również spròbuje dorobić squelcha.

Pablo



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 07:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Witam. W temacie 433MHz.
W kodzie odbiornika jest sprawdzenie bitów startowych:
Kod:
if( (tbit & 0b01111100) == 0b01100100 )

a w kodzie nadajnika
Kod:
uint8_t data=0b11100100;
.
Rozumuję, że w odbiorniku maskujemy 2 najmłodsze bity (dopełnienie do 8 bitów), ale też zamaskowany jest
najstarszy bit.
Jeżeli tego się nie zrobi odbiór nie działa. Sprawdziłem, że na najstarszym bicie jest 0, ale przecież w data nadajnika
na najstarszym bicie jest 1. Zachodzę w głowę, ale chyba mam za małą głowę.
Proszę o powiększenie. :)

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 08:11 
Offline
Moderator
Avatar użytkownika

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

panbosman napisał(a):
Rozumuję, że w odbiorniku maskujemy 2 najmłodsze bity


Maskujemy to te bity gdzie są JEDYNKI a nie najmłodsze :(

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


tzn inaczej - nie obchodzą nas te bity gdzie są zera - bo będą po tej operacji WYZEROWANE przecież, a to co pozostanie po zamaskowaniu sprawdzamy z wartością 0b01100100

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

_________________
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: 30 wrz 2013, o 09:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Cytuj:
a to co pozostanie po zamaskowaniu sprawdzamy z wartością 0b01100100

a ta wartość skąd się wzięła?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
ma na najstarszym bicie 1. Myślałem, że mamy porównać z data.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 09:13 
Offline
Moderator
Avatar użytkownika

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

No teraz tak z marszu to nie odpowiem skąd się wzięła ta wartość - nie mam książki pod ręką ale GWARANTUJĘ, że jest to w niej opisane - no inaczej chyba być nie może ... tak mi się wydaje.

_________________
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: 30 wrz 2013, o 09:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Książki są dla mnie prawdziwą BIBLIĄ AVR. Staram się je czytać ze zrozumieniem. Być może coś przegapiłem lub czegoś nie zrozumiałem. Z góry przepraszam jeśli tak jest.
Proszę o odpowiedź tak czy inaczej.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 09:48 
Offline
Moderator
Avatar użytkownika

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

panbosman napisał(a):
Być może coś przegapiłem lub czegoś nie zrozumiałem. Z góry przepraszam jeśli tak jest.


Ależ nie ma za co przepraszać, po prostu nie miałem książki ale już jestem w firmie i proszę wziąłem ją w łapki a tam w komentarzu nad tym IF'em widać :

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


no to masz odpowiedź wprost co to jest za wartość

A jak sobie zajrzysz do kodu nadajnika:

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


to tam na samym początku zobaczysz:

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


No więc to musiałeś przeoczyć jak widać

_________________
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: 30 wrz 2013, o 10:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Mirek OŚWIEĆ mnie.
Czytam i nie rozumiem.
Skąd wartość porównania:
Cytuj:
0b01100100


skoro :
Cytuj:
// pierwszy bajt ramki (istotnych 6 starszych bitów)
uint8_t data = 0b11100100;


0b01100100 -porównanie:
0b11100100 -data

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 10:48 
Offline
Moderator
Avatar użytkownika

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

0b01100100 -porównanie:
0b11100100 -data

oświecam ;) ale tak na szybko to analizuję tylko

chodzi o te bity które maskujemy w IF'ie

0b11100100 -data
0b01111100 - maska
0b01100100 -porównanie:
0bx11001xx - sprawdzamy czy są te bity

Cytuj:
if( (tbit & 0b01111100) == 0b01100100 )

_________________
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: 30 wrz 2013, o 11:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

OK.
Tylko od początku mi chodzi o taki myk:
Dlaczego wysyłamy 6 bitów do sprawdzenia a sprawdzamy tylko 5. Maska jest na 5 bitów.
Moim zdaniem tracimy 1 bit, który nie jest brany pod uwagę w sprawdzeniu.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 11:14 
Offline
Moderator
Avatar użytkownika

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

panbosman napisał(a):
OK.
Tylko od początku mi chodzi o taki myk:
Dlaczego wysyłamy 6 bitów do sprawdzenia a sprawdzamy tylko 5. Maska jest na 5 bitów.
Moim zdaniem tracimy 1 bit, który nie jest brany pod uwagę w sprawdzeniu.


No tak ale teraz to już naprawdę trzeba doczytać w książce ... ja nie mam na tą chwilę czasu żeby na dłużej do niej zajrzeć i doczytać ... o co tam chodziło

mogę tylko zgadywać z resztek mojej ulotnej pamięci RAM że jeden z tych 6 bitów to bit toggle i on może się zmieniać dlatego też go pomijamy

_________________
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: 30 wrz 2013, o 11:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 sty 2013
Posty: 80
Lokalizacja: Trzciniec
Pomógł: 0

Bit toggle i jego negacja są na 2-uch najmniej znaczących bitach.
Rozumiem, że nie masz czasu(pisz bo nie mogę się doczekać trzeciej książki).
Może ktoś z forumowiczów jest w stanie wyjaśnić , jak to mawiała pani od polskiego "co poeta miał na myśli".
Pozdrawiam i czekam z nadzieją.

_________________
Zło dobrem zwyciężaj.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2013, o 12:25 
Offline
Moderator
Avatar użytkownika

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

panbosman napisał(a):
Bit toggle i jego negacja są na 2-uch najmniej znaczących bitach


No to dobrze pamiętałem i sam sobie wręcz odpowiadasz ;) skoro są na tych bitach to je maskujemy nie widzisz ? ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 39 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO